百度地图离线sdk java_百度地图SDK java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...

在Android应用中集成百度地图SDK时遇到了`java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK...`错误。问题在于armeabi和armeabi-v7a目录下的.so文件不完整。即使lib目录下存在libBaiduMapSDK_v3_2_0_15.so,也需要将armeabi目录下的所有.so文件复制到armeabi-v7a目录。这是因为armeabi-v7a支持硬件浮点运算,能提供更好的性能。在调试和发布模式下,Android会根据设备CPU类型选择不同目录的.so文件。建议将SO库放在armeabi-v7a目录以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息java.lang.UnsatisfiedLinkError: Couldn‘t load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.baidudemo-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.baidudemo-1, /vendor/lib,

/system/lib]]]: findLibrary returned null

在lib 发现明明有libBaiduMapSDK_v3_2_0_15.so这个文件,但是为何还是报错呢....写了一个Demo 发现,没有报错,最后一个一个推测,发现

区别在于 armeabi和armeabi-v7a

如果armeabi文件夹下还有其他的

.so文件,也需要一并copy至armeabi-v7a

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

有什么深意么?

为什么调试模式和发行模式adobe会选择不同的文件夹?

查了以下

armeabi与armeabi-v7a表示支持不同的CPU类型

armeabi是指的该so库用于ARM的通用CPU,而v7a的CPU支持硬件浮点运算。因此armeabi通用性强,但速度慢,而v7a能充分发挥v7a CPU的能力,在AIR打包APK调试模式adobe选择的是通用性强的armeabi模式。

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。

原文:http://blog.youkuaiyun.com/tanranran/article/details/43234985

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值