关于不同cpu架构APP的兼容问题
来源:互联网 发布:mysql dns反向解析 编辑:程序博客网 时间:2024/06/07 19:31
问题
发现app无法运行在某些设备上。提示“此应用与您手机不兼容”
原因
应用与手机不兼容是因为手机cpu架构问题。Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。(ABI 决定了二进制文件如何与系统进行交互。)这些不同的架构与我们在开发app的过程中又有什么关联呢?
不难发现架构不同的关键点就是ABI的不同,而ABI又决定了系统与二进制文件交互方式,所以我们可以联想到jni或者ndk开发。其中在使用jni开发的过程中,我们会使用到.so动态库。.so文件就是与系统交互的二进制文件。所以当我们的项目中包含.so文件时我们就应该考虑到cpu的兼容问题了。
如何做兼容
在我们的jniLibs目录下新建以下目录
每一个目录都对应一种ABI。我们需要将对应的.so库放在对应的目录下。
- 并且在Android Gradle 插件中,可以使用如下方式对 abi 进行过滤:
android { ... defaultConfig { ... ndk { // 设置支持的 SO 库构架,注意这里要根据你的实际情况来设置 abiFilters 'armeabi'// 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64' } }}
- 在gradle.properties 文件中添加:
android.useDeprecatedNdk=true
这样就可以解决兼容问题了。
但是在实际开发中我们发现.so文件都会很大。以百度地图sdk为列,如果所有平台都要兼容,我们的app会变的很大。借鉴一下QQ的做法,解压qqAPK后发现qq只有一个目录armeabi。所以我们在实际开发中也只需要兼容armeabi就可以了。(具体为啥,有待考察,可能是市面上大部分设备都是arm架构吧!)
参考连接
http://www.cnblogs.com/Bugtags2015/p/5578541.html
记录学习,仅供参考!
阅读全文
0 0
- 关于不同cpu架构APP的兼容问题
- 关于不同系统的路径兼容问题
- Ios debug版本CPU架构兼容问题
- 关于web app 背景图片兼容问题
- 关于Android的.so文件 CPU架构
- 关于iOS开发CPU架构的问题
- Android编译CPU架构体系不同引起的错误解决方法
- 不同浏览器之间的兼容问题/
- 关于不同操作系统下浏览器兼容问题
- 关于一个App的架构思考
- 关于Hybrid app架构的思考
- 关于Android App整体架构的设计
- Android系统的不同分辨率的兼容问题
- 浅谈关于CPU的架构和工艺(1)
- 关于CPU、指令集、架构、芯片的一些科普
- 关于CPU、指令集、架构、芯片的一些科普
- CSS在不同浏览器上的兼容问题
- 解决SQLserver不同版本的兼容问题
- tensorflow-算术运算和函数间的关系
- request 获取各种路径
- 特殊属性之:ref
- NSOperationQueue(多线程请求队列)
- 集成 SVN 插件到 EclipseNEON 全过程
- 关于不同cpu架构APP的兼容问题
- 课堂在线Java程序设计 铺砖问题
- @Scope原型注解创建的Bean不同
- 在 onCreate 和 onCreateView 中获取控件宽高的方法
- NOIP2017模拟赛(9) 总结
- win10环境下用dism+7-zip+ultraiso 制作winpe
- nodejs后台接收不到前台提交的用户信息
- 第5章 构建Spring Web 应用程序 --笔记1
- 《深入探索C++对象模型》第二章:构造函数语意学(下)