赞
踩
armeabi-v7a: 针对有浮点运算或高级扩展功能的arm v7 cpu,32位ARM设备。第7代及以上的 ARM 处理器。2011年以后生产的大部分Android设备都使用它.
arm64-v8a: 第8代、64位ARM处理器。目前主流版本(Google Play上架要求app必须适配arm64-v8a)
armeabi: 针对普通的或旧的第五代、第六代ARM处理器。NDK 以前支持 ARMv5 (armeabi) 以及 32 位和 64 位 MIPS,但 NDK r17 已不再支持,极少用于手机可以忽略
x86: 平板、模拟器用得比较多,打包出的x86的so,总会比armeabi平台的体积更小
x86_64: 64位的平板。
如果项目只包含了 armeabi,那么在所有Android设备都可以运行
如果项目只包含了 armeabi-v7a,除armeabi架构的设备外都可以运行
如果项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是无法运行的
如果同时包含了 armeabi, armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,同时也会导致包变大
注意: 当v8的手机运行只适配v7的app时,首先会去v8的文件夹下找相应的so文件,存在就直接使用,不存在就会去v7文件夹下找,再者去armeabi文件夹;如果v8的文件夹存在,但是这个文件夹下没有对应的so文件就会报错,所以如果添加一些第三方sdk,注意so文件的类型,不要产生不全的文件夹
建议:
为了减小 apk 体积,只保留 armeabi 和 armeabi-v7a 两个文件夹,并保证这两个文件夹中 .so 数量一致
对只提供 armeabi 版本的第三方 .so,原样复制一份到 armeabi-v7a 文件夹
最后,如果我们只想支持armeabi-v7a,那么需要在gradle中配置,因为默认情况下,打包后会自动生成armeabi 到 x86的所有文件夹。这就有可能导致一些x86的设备因为在x86文件夹下找不到so文件而崩溃
- defaultConfig {
- ndk {
- abiFilters "armeabi-v7a"
- }
- }
adb shell cat /proc/cpuinfo
D:\>adb shell cat /proc/cpuinfo
Processor : AArch64 Processor rev 3 (aarch64)
processor : 0
model name : AArch64 Processor rev 3 (aarch64)
BogoMIPS : 26.00
BogoMIPS : 26.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 3Hardware : MT6737T
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。