转载请注明出处:http://blog.csdn.net/kester_/article/details/71055901

NDK 开发时会涉及到 CPU 架构的适配,不同的机器上可能会有不同的 CPU 架构,也就是说,翻译到机器上使用的规则不一样,Android 上有7种 CPU 架构。
1.armeabi
2.armeabi-v7a
3.arm64-v8a
4.x86
5.x86_64
6.MIPS
7.MIPS64

从厂家上来分是有三种,arm,x86,MIPS,arm 系列是绝大多数手机上使用的,x86 主要是运用在平板上,而 MIPS 基本上就没见过。

从类型来分,有32位和64位,名字中没有64的就是32位的了。

正常来说只使用 armeabi-v7a 就可以适配基本所有手机了,因为现在手机基本上都支持这种CPU架构,但是对于同时也能支持 arm64-v8a 的手机来说,性能上就不如使用对应 CPU 架构的快了,毕竟是32位和64位的区别,值得一提的是,arm 系列本身是没有64位,而是 intel 的x86_64先出现的,之后 arm 收购了 MIPS64,基于 MIPS64 改良出 arm64-v8a,所以也能理解为什么 MIPS 几乎没有,而另外,arm64-v8a 的 CPU 架构上也能运行 armeabi-v7a,为什么呢?不是64位上运行32位,而是 arm64-v8a 上本身搭载了 armeabi-v7a,所以在 arm64-v8a 上运行 armeabi-v7a 是使用32位处理的,没毛病。

如果应用中有不止一个 so,那就要注意了,如果这时你一个 so 同时支持了 armeabi-v7a 和arm64-v8a,而另一个 so 只支持了一种,那可能会运行有问题,这时要么另一个 so 也支持两种,要么把第一个 so 删掉对应目录,只支持相同的一种。

在提供支持多个 CPU 架构的 SDK 时,可以同时提供多个目录的 so,虽然此时 SDK 相对较大,但是被编译的 so 还是以你在 gradle 里设置的支持的 ndk 为准:
ndk {
abiFilters ‘armeabi-v7a’ // , ‘arm64-v8a’, ‘x86’, ‘x86_64’
}

查看设备支持的 CPU 架构或者 APP 提供的 CPU 架构可以使用 Native Libs Monitor。

更多相关文章

  1. 【Android(安卓)Developers Training】 6. 配置Action Bar
  2. ProxyDroid使用Eclipse(none maven)重新编译运行
  3. google Android编译本地C++程序方法
  4. 一个简单的手电筒APP源码分享(支持Android(安卓)O(8.0)及以下版本
  5. android 测试 monkeyrunner
  6. Android(安卓)NFC支持详解
  7. 配置qt5.1 for android的环境
  8. Qt for android 开机自启动、开机黑屏处理
  9. 检测 android ethernet 支持 IPV6 否

随机推荐

  1. 在线客服系统源码/PHP客服系统下载附php
  2. 变量与函数的声明,使用与参数实例演示
  3. php中变量与函数的声明及使用
  4. Android(安卓)- How to mount NFS in emu
  5. Android总结
  6. android studio基本使用零碎整理
  7. Android(安卓)input keyevent
  8. 转:[Android]倒影效果的ImagView
  9. android捕获ListView中每个item点击事件
  10. Android(安卓)读取本地(SD卡)图片