Android开发过程中遇到的关于so文件的问题
2015-12-31 11:30
896 查看
问题背景:
最近开发的项目中涉及到使用JNI调用libs中so文件来进行图片识别。遇到的问题是测试发现应用在某些设备不能调用识别功能。项目中libs结构
libs ├─ x86_64 ├─ x86 ├─ mips64 ├─ mips ├─ armeabi-v7a ├─ armeabi └─ arm64-v8a
定位问题:
1. 识别功能不能使用说明问题出现在JNI调用部分 2. 检测到应用中的so文件没有被加载到设备中 3. 发现设备优先加载armeabi-v7a包中的so文件 4. libs中只有armeabi文件夹中包含了识别功能的so文件
解决问题:
方法一:将so文件放到所有libs子文件夹下方法二:libs文件夹只包含armeabi文件夹
总结:
设备加载so文件的方式与应用加载Drawable图片的方式不一样,如果有与设备CPU架构符合的文件夹(如armeabi-v7a),就只会加载当前文件夹下的so。即使armeabi-v7a包中没有,而armeabi包中有,设备也不会去加载。libs中包含多个文件夹的功能是为不同CPU架构的设备提供不同的so文件,这样可以提高硬件的性能。如果我们的so文件适配不了项目libs中所支持的所有架构,那建议就都不支持,只留armeabi。
调试中使用到的工具
Native Libs Monitor
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题