常见手机端cpu架构 armeabi armeabi-v7a arm64-v8a (x86、x86_64 手机端可以忽略,大都是平板设备)
场景一、只有armeabi-v7a架构的so或包含so的aar
ndk {
abiFilters 'armeabi-v7a'
}
优点:
1、兼容市场99.9%以上的设备
armeabi --- 大概10年前手机会用,可以忽略。2011年以后的手机基本是armeabi-v7a、arm64-v8a。
arm64-v8a --- 自动兼容转换使用armeabi-v7a下的so文件。
x86 --- 也有自己的兼容机制,可以兼容armeabi-v7a,不过x86手机几乎不存在
2、体积小
缺点:在arm64-v8a架构的手机上 性能差一些,不能充分利用arm64-v8a架构的性能
想加上arm64-v8a的配置如何操作呢?比如在app --- build.gradle --- android --- defaultconfig 里面加了
这个
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a'
}
那你应该去编译一份真正的arm64-v8a架构的so,然后放到app --- libs --- arm64-v8a文件夹下,千万不可从armeabi-v7a中拷贝过来放进去,否则会报错。这里特别注意 要不就别加,加就加真的。
场景二、只有armeabi架构的so或包含so的aar
ndk {
abiFilters 'armeabi', 'armeabi-v7a'
}
这种场景同场景一、但是有点区别,你可以将so拷贝到app --- libs --- armeabi-v7a下面来使用,因为这个是可以兼容的,不过意义并不大。(aar中的so可以修改后缀名为.zip然后解压拿到)
场景三、armeabi armeabi-v7a arm64-v8a x86都有
ndk {
abiFilters 'armeabi', 'armeabi-v7a','arm64-v8a','x86'
}
优点:充分利用性能,兼容性极好
缺点:体积大
总结:
在实际的手机项目中,推荐配置如下:
1、最佳配置方式:armeabi-v7a + arm64-v8a两种架构,兼容和性能都有 推荐指数4.5星
2、通用配置armeabi-v7a 兼容好、体积小 推荐指数 4星
我还没发现5星的方案,架构也是这样没有完美的,挑选适合你的吧!