百度定位SDK错误:Couldn’t load locSDK3: findLibrary returned null

来源:互联网 发布:怎么重开淘宝网店 编辑:程序博客网 时间:2024/04/29 12:18

在使用百度定位SDK的时候,明明已经加入了liblocSDK3.so,Manifest中也添加了相应权限,注册了com.baidu.location.f服务。但总是无法定位。提示错误java.lang.UnsatisfiedLinkError: Couldn’t load locSDK3: findLibrary returned null.


根据错误提示是无法找到locSDK3这个库,但是又明明在armeabi中加入了liblocSDK3.so。被这个问题困扰了很久。在做NDK开发的时候,NDK编译的so有时会在armeabi和armeabi-v7a中分别放置一份。突然想到上面的错误是不是也是因为这个原因。

然后在项目的libs目录下新建一个文件夹,命名为armeabi-v7a,然后将liblocSDK3.so复制一份到该文件夹。


然后重新clean一下在运行就可以了。

那么问题来了????

这个armeabi和armeabi-v7a究竟是什么意思?


android支持不同CPU的深层含义
首先从硬件支持方便来看,我们的adnroid设备目前为止大部分都是支持ARM芯片,(当然市面上此刻最新的android机器还支持intel等另外的几个芯片,例如intel最新的凌动项目芯片,就获得了android4.1的青睐)。从android版本与支持ARM硬件编码的程度来看:




起初android1.6:只支持armv4与armv5te指令集。




到了android2.0:增加了支持arm-vfp,armv6,armv6t2指令集。




到了android2.2:增加支持armv7-a指令集。




所以armeabi-v7a 应该是与AIR限定支持android2.2以上的条件有关。android2.2以上能让硬件发挥更大的作用。




我项目中使用armeabi还是armeabi-v7a
对于AIR项目来说性能问题是最大的瓶颈,能优化一点就一点,所以如果接平台方SDK或者写ANE的时候使用到SO库,个人推荐全部放到armeabi-v7a下,而不要为了兼容放到armeabi。

0 0