C++有关Android中so解析那些从

1、Android系统当下支撑之CPU架构:ARMv5、ARMv7、x86、MIPS、ARMv8、MIPS64、x86_64,每一样种植都涉及着一个ABI(Application
Binary Interface)

 

2、ABI:定义了次进制文件(尤其是.so文件)如何运作在对应系统平台达成,包括采取的指令集、内存对伙同、可用之网函数库。Android系统及,每一个CPU架构对应一个ABI。

 

3、Native Lib
Monitor(https://play.google.com/store/apps/details?id=com.xh.nativelibsmonitor.app)——
查看手机上安装的APK使用什么.so文件,以及.so文件来源于哪些函数库或者框架。

 

4、设置支持多于一栽之ABI

(1)通过模拟层实现 ——
最好对特定平台供对应平台的次前行制包,运行时可以少一个模拟层,从而获得重新好的性质。

(2)通过 Build.SUPPORTED_ABIS得到根据偏好排序的设备支持的ABI列表。

(3)Android包管理器安装APK时,如果以对应之lib/ABI目录存在.so文件,会自动选择APK包中也对诺系ABI预编译好的.so文件。

 

5、重要规律

(1)应该尽量的提供转为每个ABI优化过之.so文件,但要么全部支撑,要么都无支持,不该混合着用。当一个施用设置在设施上,只发生该装置支撑之CPU架构对应的.so文件会给设置。

(2)当你引入一个.so文件,不止影响到CPU架构。

(3)NDK平台是前进兼容,而未是朝后相当的。推荐下app的minSdkVersion对应的编译平台。引入一个预编译好的.so文件,需要检讨她编译使用的平台版本。

(4)不能混合使用不同C++运行时编译的.so文件。

  1. C++运行时:静态编译 & 动态编译
  2. 当只发一个.so文件,静态编译C++运行时是从未问题的;存在多独.so文件,应该为具有的.so文件都动态链接相同的C++运行时。

(5)需要注意.so文件位置;

(6)不应当一味供armeabi架构的.so文件而忽视任何ABIs的

  1. 潜移默化函数库底性能、兼容性;
  2. 掉转为64各类优化了的性质(ART、webview、media)
  3. 好选取于行使市场及传指定的API版本的APK。