关于Android手机CPU不同架构的问题

1、共有7种架构  

  1. armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.
  2. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
  3. armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。万金油
  4. x86: 平板、模拟器用得比较多。
  5. x86_64: 64位的平板。
  6. mips64:很少,可忽略
  7. 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

猜你喜欢

转载自www.cnblogs.com/zhaoyihao/p/10037938.html