Android abiFilter 相关
文章目录
为了优化apk的大小,一般会只选择支持一种ABI,可以在AS中双击apk,在lib路径下查看so文件占用大小
Android ABI概念
Application Binary Interface 官方文档
cpu架构选择
- arm64-v8a 作为最新一代架构,应该是目前的主流
- 兼容性越好,则性能越差。兼容性:armeabi>armeabi-v7a>arm64-v8a
- armeabi armeabi-v7a arm64-v8a 按顺序向下兼容
举个栗子:
armeabi 兼容 armeabi-v7a arm64-v8a
arm64-v8a 不兼容 armeabi armeabi-v7a
|
|
流程
对于一个 cpu 是 arm64-v8a 架构的手机,它运行 app 时,进入 jnilibs 去读取库文件时,先看有没有 arm64-v8a 文件夹,如果没有该文件夹,去找 armeabi-v7a 文件夹,如果没有,再去找 armeabi 文件夹,如果连这个文件夹也没有,就抛出异常;
如果有 arm64-v8a 文件夹,那么就去找特定名称的 .so 文件,注意:如果没有找到想要的 .so 文件,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常。
小孩才做选择,我全都要
ABI 配置多个 APK,官方文档
部分应用市场支持上传多个 apk,比如谷歌
|
|
其他
- 如果仅保留 armeabi-v7a,而有些第三方包未提供v7a的包,可以尝试将对应 armeabi 的包拷贝到 armeabi-v7a