No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Creat

AndroidStudio使用百度地图出现初始化错误:SDK”No implementation found for int com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create() “

这个问题一般是在使用AndroidStudio时才遇到的.
今天在工作中遇到了一个奇怪的问题,项目中需要使用百度地图SDK和定位SDK,我先集成了百度地图SDK,开发文档中说明了不同平台的SO文件可以放在project/module/src/main/jniLibs文件平下,也可以放在项目根目录下的/libs文件夹下(也就是projects/libs).
而AndroidStudio默认是会在project/module/src/main/jniLibs目录下加载so库的,所以需要注意的是后者(放在project/libs目录下)需要在gradle文件中声明so库的寻找位置,配置如下:声明要在Libs目录下加载so库.

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

接着集成了定位SDK,需要注意,这里就开始出现问题了!!!
开发文档中并没有说明如果需要使用多个SDK,需要把不同平台的so库放在一个文件夹下!,也就是说如果你把百度地图SDK放在了libs文件夹下,把定位SDK放在了jniLibs文件夹下,这样会出现问题的.也就会出现错误如下
java.lang.NoSuchMethodError: No direct method (Lcom/baidu/lbsapi/auth/LBSAuthManager;
或者出现如题所描述的错误!
所以我们需要做的是把要集成的多个 SDK的so库放在一个文件夹下,如果不是要project/module/src/main/jniLibs下就需要在gradle中声明,上面已经说了.这样就会全部加载了.
附参考链接(需要翻强):https://www.shaneenishry.com/blog/2014/08/17/ndk-with-android-studio/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值