android报找不到so的错误
2016-06-14 11:41
387 查看
最近升级了androidstudio到2.1.1之后,发现生成的apk在某些手机上运行不了,报的都是找不到对应so文件,可我仔细查看了下的确是生成了so文件,怎么会找不到呢。
在网上搜索,有人说是把targetSdkVersion降低到22或以下,试了没成功,有人说再增加个armeabi-v7a的目录,放入相同的so,这个试了之后发现的确某些手机能运行成功了,但有的手机还是不行,而且这样大大增加了apk包的大小。
一开始以为是不同android版本的问题,后来解压apk后发现lib下多了许多目录,像arm64-v8a,mips,x86等等,几乎包含了所有的架构,但实际只有armeabi里有对应的so包,其他的都没有,心想是不是跟手机的处理器有关,不同的处理器会查找不同的目录找到so,当找不到自然就报错了。
然后我就查了手机的cpu,发现64位的由于arm64-v8a下没有so,所以报错,而32位的由于armeabi下有对应的so,所以运行成功。
再参考了这篇文章,http://www.cnblogs.com/poe-blog/p/4728970.html。终于找到解决方案了:
可以将不需要的去掉,比如我就删掉红色的了。
在网上搜索,有人说是把targetSdkVersion降低到22或以下,试了没成功,有人说再增加个armeabi-v7a的目录,放入相同的so,这个试了之后发现的确某些手机能运行成功了,但有的手机还是不行,而且这样大大增加了apk包的大小。
一开始以为是不同android版本的问题,后来解压apk后发现lib下多了许多目录,像arm64-v8a,mips,x86等等,几乎包含了所有的架构,但实际只有armeabi里有对应的so包,其他的都没有,心想是不是跟手机的处理器有关,不同的处理器会查找不同的目录找到so,当找不到自然就报错了。
然后我就查了手机的cpu,发现64位的由于arm64-v8a下没有so,所以报错,而32位的由于armeabi下有对应的so,所以运行成功。
再参考了这篇文章,http://www.cnblogs.com/poe-blog/p/4728970.html。终于找到解决方案了:
android { // rest of your app's logic splits { abi { enable true reset() include 'x86', 'x86_64', 'armeabi-v7a', 'armeabi' universalApk false } } }
可以将不需要的去掉,比如我就删掉红色的了。
相关文章推荐
- Data Binding Android - Type parameter T has incompatible upper bounds : ViewDataBinding and MainActi
- Android项目开发之UI设计器
- Android UDP连接发送请求和接受请求的例子
- Android与JS互相调用
- android快速索引的实现
- Android各种访问权限Permission详解
- Android_menu_SubMenu
- Android EditText默认数字键盘,能输入字母和数字
- Android_menu_optionMenu
- Android项目基本结构详解
- Android实现点击AlertDialog上按钮时不关闭对话框的方法
- 关于谷歌发布的750的开源图标
- Android_Menu_contextMenu
- Fragment 与 Activity 生命周期对比
- 【Android】Lambda表达式
- android 主线程是线程不安全的
- Android 内存泄露检查之StrictMode模式
- Android 基于Bmob的聊天——用户登陆+将用户信息保存至本地
- Android 6.0 双向通话自动录音
- PinnedHeaderListView源码详解