美文网首页
Android cpu架构与so兼容分析

Android cpu架构与so兼容分析

作者: morning_dew | 来源:发表于2020-08-05 13:43 被阅读0次

1 adb查看不同机型的CPU信息

 adb shell cat  /proc/cpuinfo
以下是OPPO reno对应的cpu信息: cpu信息.png

其中
processor: 表示第几个核。
Features:表示当前CPU所支持的特性,比如neon,vfp等。
CPU architecture:7表示arm-v7,8表示arm-v8

2 cpu架构与so兼容

对于一个cpu是arm64-v8a架构的手机,它运行app时,进入jnilibs去读取库文件时,先看有没有arm64-v8a文件夹,如果没有该文件夹,去找armeabi-v7a文件夹,如果没有,再去找armeabi文件夹,如果连这个文件夹也没有,就抛出异常。
注意:这里说的是文件夹,即如果有arm64-v8a文件夹,那么就去找特定名称的.so文件,如果没有找到想要的.so文件,不会再往下(armeabi-v7a文件夹)找了,而是直接抛出异常。

现在大部分Android机型CPU都是armeabi-v7a和arm64-v8架构,而他们又是向下兼容,因此,仅适配一种CPU架构就能满足绝大部分要求,这样就能最大限度减少APK的大小。

方案一:只适配armeabi

    ndk {
            abiFilters 'armeabi'
        }

优点:基本上适配了全部CPU架构(除了淘汰的mips和mips_64)。
缺点:性能低,相当于在绝大多数手机上都是需要辅助ABI或动态转码来兼容。

方案二:只适配 armeabi-v7a

    ndk {
            abiFilters 'armeabi-v7a'
        }

同方案一,只是又筛掉了一部分老旧设备,在性能和兼容二者中比较平衡。

方案三:只适配 arm64-v8a

ndk {
        abiFilters 'arm64-v8a'
    }

优点:性能最佳
缺点:只能运行在arm64-v8上,要放弃部分老旧设备用户。

3 参考文章

https://blog.csdn.net/whbk101/article/details/101775032

相关文章

网友评论

      本文标题:Android cpu架构与so兼容分析

      本文链接:https://www.haomeiwen.com/subject/nbrrrktx.html