安卓开发.SO文件
来源:互联网 发布:ubuntu磁盘一直不足 编辑:程序博客网 时间:2024/05/01 11:23
Android系统目前支持七种不同的CPU架构
ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的二进制接口。应用程序二进制接口(Application Binary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。
很多设备都支持多种ABI,有规则选取
比如ARM64和x86设备也可以同时运行armeabi-v7a和armeabi的二进制包同Android包管理器在安装时会自动选择在APK里面为对应系统ABI预编译好的.SO文件。
当对应的lib文件夹目录下面不存在文件时就会按一定的法则来选择。在x86设备上,libs/x86目录中如果存在.so文件的话,会被安装,如果不存在,则会选择armeabi-v7a中的.so文件,如果也不存在,则选择armeabi目录中的.so文件(因为x86设备也支持armeabi-v7a和armeabi)。
所以这里需要注意的一点是:你应该尽可能的提供专为每个ABI优化过的.so文件,但要么全部支持,要么都不支持:你不应该混合着使用。你应该为每个ABI目录提供对应的.so文件。使用高版本编译的.SO文件在低版本设备使用
NDK平台是向后兼容不是向前兼容的所以我们在编译.SO文件的时候尽量在低版本编译然后再高版本使用。
这同样也需要你注意当引入一个预编译好的.so文件时,你需要检查它被编译所用的平台版本。.SO的存放目录
Android Studio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的设置jniLibs.srcDir属性自己指定)
Eclipse工程放在libs/ABI目录中(这也是ndk-build命令默认生成.so文件的目录)
AAR压缩包中位于jni/ABI目录中(.so文件会自动包含到引用AAR压缩包的APK中)
最终APK文件中的lib/ABI目录中
通过PackageManager安装后,在小于Android 5.0的系统中,.so文件位于app的nativeLibraryPath目录中;在大于等于Android 5.0的系统中,.so文件位于app的nativeLibraryRootDir/CPU_ARCH目录中。最后再说几条注意的东西:尽量在相同的运行时编译.SO文件;在条件允许的情况下(APK大小适度)提供每个支持的CPU架构对应的.SO文件。
- 安卓开发.SO文件
- JNI开发第三步:20130801_NDK_JNI的.so文件开发-安卓访问LINUX驱动
- 安卓NDK开发步骤以及开发过程如何引用第三方.so文件
- 安卓利用NDK打包so文件
- 安卓ndk开发——找不到so文件的解决方法
- 安卓百度地图开发so文件引用失败问题研究
- 安卓开发使用SVN管理注意事项SO文件不提交问题
- 安卓NDK开发环境配置与生成so文件方法二
- cocos2dx 安卓加载so文件马上崩溃
- 安卓HAL层 so库文件加载原理
- cocos2dx安卓项目如何引用外部.so文件
- 【安卓逆向】如何用ida动态调试so文件
- 安卓7.0 加载libsqlite.so文件失败
- 安卓7.0 加载libsqlite.so文件失败
- IDA 6.5调试安卓SO文件(ida6.5 debug Android so)
- IDA 6.5调试安卓SO文件(ida6.5 debug Android so)
- 安卓开发文件下载
- 安卓开发文件保存
- 函数的参数
- 13. Roman to Integer
- ubuntu创建虚拟硬盘
- tableview的两个取得重用cell方法的区别
- 1.0.1 JavaScript Array对象
- 安卓开发.SO文件
- 常用代码备份--OLE操作Excel之sheet复制
- Swift 基本控件UISlider学习
- Linux du命令
- 利用rand5()产生rand7().rand5()产生1到5的整数,rand7()产生1到7的整数.
- 第一行代码-8.2 接收和发送短信
- python文档生成工具pydoc在网页上查看的方法
- 与数据库的连接池说明、应用
- 【小镇的技术天梯】小镇的实战!mysql性能优化。