android开发 加载so库的解析和出现的各种错误分析

本文详细介绍了Android系统中.so库的加载策略,包括不同CPU架构下的.so文件位置,以及如何查看手机架构。对于项目中只放置armeabi文件夹的常见做法,文章指出这可能导致性能损耗和兼容性问题。Android设备在加载.so文件时,会优先查找对应CPU架构的目录,若未找到,则会尝试armeabi。文章还列举了.so库开发过程中的各种错误案例和解决办法,如缺少特定架构的.so文件或不同工具兼容性问题导致的错误。
摘要由CSDN通过智能技术生成
  • 通过PackageManager安装后,在小于Android 5.0的系统中,.so文件位于app的nativeLibraryPath目录中;在大于等于Android 5.0的系统中,.so文件位于app的nativeLibraryRootDir/CPU_ARCH目录中。

七.为什么一般的项目中只看到armeabi文件夹?

=========================

因为所有的x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的.so文件。

八.那我们是不是只放一种armeabi就够了?

=======================

事实上并不是:这不只影响到函数库的性能和兼容性。x86设备能够很好的运行ARM类型函数库,但并不保证100%不发生crash,特别是对旧设备。64位设备(arm64-v8a, x86_64, mips64)能够运行32位的函数库,但是以32位模式运行,在64位平台上运行32位版本的ART和Android组件,将丢失专为64位优化过的性能(ART,webview,media等等)。

九.如何查看我的android手机属于什么架构的?

=========================

进入命令行:

第一步:输入 adb shell 回车

第二步:cat /proc/cpuinfo 回车

下面打印出的信息里面有 Processor 如下图:

十.到底如何适配,每种适配方案区别?

==================

CPU之间的架构兼容

ARMv5 设备:只支持armeabi

ARMv7 设备:支持 armeabi 和 armeabi-v7a

ARMv8 设备:支持 armeabi-v7a、armeabi 和 arm64-v8a

X86 设备:支持 armeabi(性能有所损耗) 和 x86

x86_64 设备:支持 x86 和 x86_64

mips 设备: 支持 mips

mips_64 设备:支持 mips 和 mips_64

Android中设备加载so策略

不同CPU架构的android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值