百度地图libgnustl_shared.so" not found 问题

最近在做一个项目用到了百度地图的定位、地理编码检索以及导航。由于官方使用的是Eclipse,我用的是AS(Android Studio),然后遇到了蛮多的坑。感觉As就是后娘养的,百度地图对AS的支持真的是不给力。言归正传,说回来问题:

在app上出现了“百度导航引擎初始化失败”,log里报错:

library "libgnustl_shared.so" not found</span>
dlopen("/data/app-lib/~~~~~/libgnustl_shared.so") failed</span>

1、从log可知,是缺少了libgnustl_shared.so文件,所以首先检查你是否把百度导航的*.so 文件和*.jar文件导进相应的位置。百度地图一般是把*.jar文件导进Libs文件夹中,然后*.so文件放进main/JniLibs文件当中。但是AS不能够自动加载库,还需要手动添加。从DDMS中查看App下的data/data/app名/..../lib/下有没有那个.so文件,如果没有就说明没有加载进来(但是由于我的机子没有root,所以无法进去看一下,我用的是魅蓝2机子,官方的模拟器太卡,是在受不了,Genymotion无法运行百度地图,Genymotion模拟器的CPU是x86框架的,so文件不能在x86上运行,但是也有一个ARM插件,让Genymotion也能运行arm类的app,但是我安装失败了,索性就在真机上测试)。
首先把*.jar文件粘贴进去Libs文件夹中,然后选择中这几个文件,右击add as library 添加到自己的项目工程中就可以了。这时你会发现在build.gradle(module:app)文件中发现在依赖这里多了几个complie

然后,还需要在上面那个build.gradle中,添加这个一句话,官方是这么说的:


可是,在这我又遇到了坑,我只要一添加这个ourceSet就会报警,程序崩溃掉。屏蔽掉就能不报警不崩溃。是在是无语。就算我直接从官方demo中拷过来,依旧会遇到这个问题。纠结了蛮久的。索性把它屏蔽了,然后能运行,没有问题····················


2、有没有把assets下的那几个文件放到工程里。不要天真的以为那两个png文件真的是图片,那也是资源,不过被强行打包成png格式而已。

3、框架问题,百度地图好像不支持X86平台的。

4、库冲突。我就是掉进了这个坑里的。卡在了这个问题大半天,都无法找到问题,晚上睡觉的时候垫高了枕头想到了一两个方法,一是把现在的工程转移到能正常运行的官方demo中,二是转用Eclipse。在转移工程的时,我把百度地图基本地图和定位的库移到官方demo。然后运行,发现,没有加进其他库的之前,导航能够正常运行,但是添加之后,就提醒“百度导航引擎初始化失败”。Binggo!妥妥的是库冲突了。


首先,官方demo中只有一个armeabi文件夹,说明了,在官方demo中,这个库是正常的,那么我逐个移除其他的库,这个时候体现了我人品,第一个移除arm64-v8a后,官方demo又能正常运行了!回到我的工程里,把这个库文件删了,我的天呐~!


导航就正常了,心花怒放啊~~~~

在这里,我巧借了官方的小demo,排除了其他模块的干扰,锁定了问题所在。那几个文件本来就是为了兼容不同的机子的,但是问题却出现在这里面了。真是醉了。机子不同,可能要删除的文件也不一样,所以遇到了这问题的朋友,多试几下。




  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值