1、共有7種架構
- armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以后的生產的大部分Android設備都使用它.
- arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。
- armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。萬金油
- x86: 平板、模擬器用得比較多。
- x86_64: 64位的平板。
- mips64:很少,可忽略
- mips:很少,可忽略
- armeabi設備只兼容armeabi;
- armeabi-v7a設備兼容armeabi-v7a、armeabi;
- arm64-v8a設備兼容arm64-v8a、armeabi-v7a、armeabi;
- X86設備兼容X86、armeabi;
- X86_64設備兼容X86_64、X86、armeabi;
- mips64設備兼容mips64、mips;
- mips只兼容mips;
2、兼容性注意
如果設備室arm64-v8a的,那么設備先找這個文件夾,如果沒有這個文件夾,再去找armeabi-v7a,然后是armeabi。如果有這個文件夾,但沒有對應的so文件,那么將直接拋異常。
如果引用了不同第三方平台的so文件,並且他們所支持的平台又有沖突那么可以abiFilters指定用哪個架構的so文件,其他平台的就會被忽略。
第三方aar文件,如果這個sdk對abi的支持比較全,可能會包含armeabi、armeabi-v7a、x86、arm64-v8a、x86_64五種abi,而你應用的其它so只支持armeabi、armeabi-v7a、x86三種,直接引用sdk的aar,會自動編譯出支持5種abi的包。但是應用的其它so缺少對其它兩種abi的支持,那么如果應用運行於arm64-v8a、x86_64為首選abi的設備上時,就會==crash==了哦。
3、Genymotion中arm的使用
需要安裝對應的arm-translation文件。可參考文章安裝,win10可能會安裝失敗。
4、參考地址
https://zhuanlan.zhihu.com/p/23102158
http://blog.coderclock.com/2017/05/07/android/Android-so-files-compatibility-and-adaptation/
https://www.diycode.cc/topics/691
https://www.cnblogs.com/ring1992/p/7248585.html