Android API 和 CPU 架构

标签 android android-ndk

我正在从命令行(不是 Android.mk)构建我的原生组件。我正在尝试确定 CPU 架构与 API 级别的交集。我知道:

  • armeabi 是 ARMv5TE
  • armeabi-v7a 是 ARMv7-A

我正在尝试确定 armeabi (ARMv5TE) 和 armeabi-v7a (ARMv7-A) 所需的最低 API 级别。我需要最低 API 级别才能选择正确的 sysroot。例如,我可以选择:

  • /opt/android-ndk-r9/platforms/android-19/arch-arm

  • /opt/android-ndk-r9/platforms/android-9/arch-arm

API 级别与 armeabiarmeabi-v7a 的交集是什么?


根据 NDK 的 docs/CPU-MIPS.htmlCPU-X86.html,MIPS 和 X86 的最低 API 级别是 9。但我找不到ARM 的类似文档。


根据 NDK 的 docs/NEON.html,ARMv7-a 在 2010 年 3 月的 NDK R3 中首次亮相。这使得 ARMv7-a 从 2010 年 5 月开始围绕 API 8。

最佳答案

ARM 从第一个版本开始就得到了支持(第 3 版是第一个完全支持原生 NDK 开发的版本)。由于两者 armeabiarmeabi-v7a链接到相同的库(在 arch-arm 子目录中),它们自版本 3 以来都受支持。

要自己找出答案,只需查看 <NDK>/platforms/android-X对于 X 的最低值,其中 arch-arm (或类似地,arch-x86arch-mips)存在。

一般来说,在旧设备上运行的 APK 中包含更新的架构代码没有风险或危害 - 旧设备不会查看未知架构。唯一的风险是自 arch-X 以来 NDK 构建失败。如果为太旧的平台版本构建目录会丢失,在这种情况下,您可以通过定位较新的平台版本来立即自行修复它。

关于Android API 和 CPU 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699252/

相关文章:

java - 使用其他包名称导入 eclipse 项目? - eclipse /安卓

android - 一项 Activity 的两种不同布局

安卓 NDK- 错误 :Execution failed for task ':app:buildNative'

android - 从 native 代码访问 apk 中的压缩文件(从 zip 中读取 zip)

c++ - Android JNI——线程同步

android - 在 Android NDK 中链接版本共享库

android - 我可以增加 iOS/Android 应用程序的版本号,即使用户没有安装应用程序来更新吗

java - 在 Android 中以 Intent 发送 map 数据?

android - 谷歌应用邀请 : Google Play Services meta data tag?

android - 可以在 gradle 中为每个 ABI 设置 cmake 参数吗?