最近,我们公司的APP,要做包体积的优化,其中一个方面就是so包的优化。
对于so包的知识点,不是很清楚,特地来整理下。
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
1. Android支持的CPU处理器架构
- mips
- mips64
- x86
- x86_64
- armeabi
- armeabi-v7a
- arm64-v8a
2. 什么是ABI?
- ABI: Application Binary Interface 应用二进制接口
3. 什么是abiFilters?
- 一种指定生成特定模式ABI包的过滤器
4. 大厂是如何适配不同CPU架构的?
- 微信
(arm64-v8a)
- 淘宝
(armeabi-v7a)
- 支付宝,手机QQ
(armeabi)
5. 主ABI和辅ABI适配流程
6. 我们该如何适配呢?
-
方案一: 只适配armeabi
- 优点: 基本上适配了所有的CPU架构
- 缺点: 性能低,相当于在绝大多数手机上都是需要辅助API或者动态转码来完成
-
方案二: 只适配armeabi-v7a
- 同理方案一,只是过滤了一些老旧的设备,在性能和兼容二者中比较平衡。
-
方案三: 只适配arm64-v8a
- 优点: 性能最佳
- 缺点: 只能运行在arm64-v8a设备上,要放弃部分老旧设备用户。
这三种方案都是可以的,现在的大厂APP适配中,这三种都有,大部分是前两种。
具体选择哪一种,就看我们的考量了,要性能就是arm64-v8a,要兼容就是armeabi,要性能和兼容的平衡就是armeabi-v7a。
网友评论