百度地图---获取当前位置出现的问题--Caused by: java.lang.IllegalStateException: no found the liblocSDK4d.so file

10-05 22:40:50.092: W/System.err(12427): java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.nongmin-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.nongmin-1/lib/x86, /vendor/lib, /system/lib]]] couldn't find "liblocSDK5.so"
10-05 22:40:50.092: W/System.err(12427): at java.lang.Runtime.loadLibrary(Runtime.java:435)
10-05 22:40:50.092: W/System.err(12427): at java.lang.System.loadLibrary(System.java:989)
10-05 22:40:50.102: W/System.err(12427): at com.baidu.location.Jni.<clinit>(Unknown Source)
10-05 22:40:50.102: W/System.err(12427): at com.baidu.location.an$d.X(Unknown Source)
10-05 22:40:50.102: W/System.err(12427): at com.baidu.location.s$2.run(Unknown Source)
10-05 22:40:50.102: E/AndroidRuntime(12427): FATAL EXCEPTION: Thread-13882
10-05 22:40:50.102: E/AndroidRuntime(12427): Process: com.example.nongmin, PID: 12427
10-05 22:40:50.102: E/AndroidRuntime(12427): java.lang.ExceptionInInitializerError
10-05 22:40:50.102: E/AndroidRuntime(12427): at com.baidu.location.an$d.X(Unknown Source)
10-05 22:40:50.102: E/AndroidRuntime(12427): at com.baidu.location.s$2.run(Unknown Source)
10-05 22:40:50.102: E/AndroidRuntime(12427): Caused by: java.lang.IllegalStateException: no found the liblocSDK4d.so file, please correct settings
10-05 22:40:50.102: E/AndroidRuntime(12427): at com.baidu.location.Jni.<clinit>(Unknown Source)

10-05 22:40:50.102: E/AndroidRuntime(12427): ... 2 more


这个问题真的很坑,到目前我也没有解决掉,虽然说我的程序跑起来了,但是那个是因为换了其他的手机,

这个问题应该是与手机的型号有关的,我用了三部手机,一部是国产杂牌android4.0.3  一部是华为荣耀android5.0的  一部是华硕asus 7寸平板(它搭载的是intel 内核)


发现只有国产杂牌是可以使用的,其他的两步手机都不行,


最开始我以为是  定位器LocationClient()的初始化有问题,因为我的定位代码是在  自定义的View 里面执行的,他继承的是LinearLayout  ,而这个构造函数传递过去的是activity的context,我特地把context的获取变成了getApplicationContext()方法,发现还是不行,最后我把定位器客户端的初始化放在application里面执行,在自定义的view代码里面通过传递过来的context来获取application里面的变量,发现还是不行,


再反过头看他报的错是因为loadLibrary出错题,但是我也没有发现在代码中,到底加载哪个包是必须  用代码来确定的,好像是只需要把jar包和so文件放到工程的libs下面就可以了,他自己会自动加载的,我试过用LocationClient 的变量 .load...   再按alt+?快捷键,发现没有提示说有这个loadLibrary函数,而这个SDKInitializer类更不可能,只有初始化那个函数,我再回来看,他的loadLibrary  是被谁调用的at java.lang.System.loadLibrary(System.java:989)  at java.lang.Runtime.loadLibrary(Runtime.java:435)这个代码是Java自己调用的,这个没辙了,它报的错是  x86   只可能是与手机有关了,但是这里面我傻了 做错了一件事,caused by  把我坑死了


我发现caused by需要liblocSDK4d.so  我就尝试了下  把4搞进去,可惜了,加进去错误更多了

10-06 12:51:26.432: E/AndroidRuntime(23766): FATAL EXCEPTION: main
10-06 12:51:26.432: E/AndroidRuntime(23766): Process: com.example.nongmin, PID: 23766
10-06 12:51:26.432: E/AndroidRuntime(23766): java.lang.UnsatisfiedLinkError: No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create() (tried Java_com_baidu_platform_comjni_map_commonmemcache_JNICommonMemCache_Create and Java_com_baidu_platform_comjni_map_commonmemcache_JNICommonMemCache_Create__)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.platform.comapi.e.c.b(Unknown Source)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.mapapi.a.c(Unknown Source)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.javis.mytools.MyApplication.onCreate(MyApplication.java:38)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1011)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4557)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.app.ActivityThread.access$1500(ActivityThread.java:147)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.os.Handler.dispatchMessage(Handler.java:102)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.os.Looper.loop(Looper.java:135)
10-06 12:51:26.432: E/AndroidRuntime(23766): at android.app.ActivityThread.main(ActivityThread.java:5260)
10-06 12:51:26.432: E/AndroidRuntime(23766): at java.lang.reflect.Method.invoke(Native Method)
10-06 12:51:26.432: E/AndroidRuntime(23766): at java.lang.reflect.Method.invoke(Method.java:372)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
10-06 12:51:26.432: E/AndroidRuntime(23766): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)


搞进去之后一直出现这种问题,我无奈了,这个时候我想把  jar换回原来的,不行了,不行了,接下来永远报这样的错,不过你怎么调,

我之后把so文件和jar文件都换成当前的最高版本,6  还是不行,用国产手机也不能运行,之后去官网重新申请key还是不行,在之后算了,

把libs全部删除,重新把官网的libs再一起导入,这些就可以了,中间我还关机了几次重启都不行,


这里我得到一个教训就是   不要随便更换 百度地图的sdk   版本一定要对应

你可能感兴趣的:(Android开发,百度地图)