Android Studio中用百度地图SDK做地图时遇到的一个问题

在Android Studio中用百度地图SDK做地图时,可能会遇到这种情况:
做基本地图和标注物时,运行正常,可就是做定位的时候,初始化语句报错:
SDKInitializer.initialize(getApplicationContext());
报的错误如下:
java.lang.UnsatisfiedLinkError: Native method not found: com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create:()J
            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.util.f.b(Unknown Source)
            at com.baidu.platform.comapi.a.c(Unknown Source)
            at com.baidu.platform.comapi.c.a(Unknown Source)
            at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)
            at com.baidu.mapapi.SDKInitializer.initialize(Unknown Source)

            at com.jyq.baidumymaplocation.MainActivity.onCreate(MainActivity.java:29)
            at android.app.Activity.performCreate(Activity.java:5146)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2191)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2282)

解决思路:

在开发指南中是这样写的:

在相关下载里下载最新的库文件。将so文件的压缩文件解压出来,把对应架构下的so文件放入开发者自己APP的对应架构下的文件夹中(建议全部放入以提高程序兼容性),将locSDK_6.X.jar文件拷贝到工程的libs目录下,这样您就可以在程序中使用百度定位SDK了。
使用eclipse开发的开发者,只需要将SO的文件夹放到libs下即可;使用AndroidStutio的开发者除了上述操作,还需要在build.gradle中配置SO的使用,如下所示:
sourceSets {
        main {
    jniLibs.srcDirs = ['libs']
        }
}

我认为,可能是它直接把.so文件放在了libs下,所以要在build.gradle中配置,而如果我们是在src/main下新建了jniLibs文件,将包含.so文件的文件夹都放入了jniLibs中,所以加上开发指南中的那句话是会报错,因此去掉那句话,结果可以运行了!

基本知识:

在百度地图SDK中,baidumapapi_vX_X_X.jar和BaiduLBS_Android,有何不同??
baidumapapi_vX_X_X.jar 只是地图sdk的jar包,BaiduLBS_Android 是地图sdk与定位或导航sdk一起打包的,两个jar是有冲突的,
放不到一个工程里,如果只需要地图sdk下载baidumapapi_vX_X_X.jar即可,如果需要其他sdk,勾选多个sdk组合下载BaiduLBS_Android

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值