android.os.Build.SUPPORTED_ABIS
android.os.Build.CPU_ABI
android.os.Build. CPU_ABI2
这些变量用于查询设备支持的架构,其中 SUPPORTED_ABIS 是API Level 21引入来代替CPU_ABI, CPU_ABI2的。
-
如果目标平台的 API Level 小于 21,只能使用 CPU_ABI 要 CPU_ABI2 来选择了,而 CPU_ABI 要优于 CPU_ABI2。
-
API Level >=21的推荐使用android.os.Build.SUPPORTED_ABIS,但是21以下只能使用CPU_ABI 和CPU_ABI2
测试下这几个变量的值
针对某一个固定的设备,如Nexus 9设备(arm64-v8a CPU架构)
根据前面说描述 设备的兼容情况
SUPPORTED_ABIS 比较容易理解,返回arm64-v8a,armeabi-v7a,armeabi
而CPU_ABI 和CPU-ABI2的值不是固定不变的,它会根据 APK 打包的jniLibs ,并根据设备支持的abi选择性安装,返回不同的值
所以5.0(21)以上,推荐使用android.os.Build.SUPPORTED_ABIS判断获取设备支持的架构类型,而5.0以下则使用android.os.Build.CPU_ABI 即可,android.os.Build.CPU_ABI2的价值也不是很大。
activity.getApplicationInfo().nativeLibraryDir 暂时未用到
4.4-> /data/app-lib/com.less.tplayer.baidu-15.0-> /mnt/asec/com.less.tplayer.baidu-2/lib/arm64
动态加载网络或文件夹下的so库
加载某文件夹 -> 相应架构的so文件
Apk文件本身就是一个压缩文件,解压后目录结构大致如下: