Android Studio中使用百度地图和百度定位出现java.lang.UnsatisfiedLinkError

来源:互联网 发布:分班软件 课程 编辑:程序博客网 时间:2024/05/08 18:12

最近要使用到百度地图,发现官网仍然没有完整的对android studio环境的一套指南。

我先是只使用了地图SDK,没有出现问题,后来同时使用了地图和定位,便出现了问题,报的错就是:

    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__)
            at com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create(Native Method)
            at com.baidu.platform.comjni.map.commonmemcache.a.a(Unknown Source)
            at com.baidu.platform.comapi.e.c.b(Unknown Source)
            at com.baidu.mapapi.a.c(Unknown Source)
            at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
            at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)

原因是我按照百度地图的开发指南把包含so文件放在了src/main/jniLibs/armeabi下,同时,按照百度定位的开发指南在build.gradle中加入了下面这段代码,

sourceSets {    main {        jniLibs.srcDirs = ['libs']    }}

解决办法很简单:

1.不设置jniLibs.srcDirs=['libs'],将so文件放在src/main/jniLibs/armeabi下;

2. 设置jniLibs.srcDirs=['libs'],并且将so文件放在libs/armeabi下;

把so文件同时放在src/main/jniLibs/armeabi和libs/armeabi下,设置jniLibs.srcDirs=['libs']与否都可以。

另外,一定要注意使用一起下载的so文件和jar文件。

1 0