我正在从命令行(不是 Android.mk
)构建我的原生组件。我正在尝试确定 CPU 架构与 API 级别的交集。我知道:
armeabi
是 ARMv5TEarmeabi-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 级别与 armeabi
和 armeabi-v7a
的交集是什么?
根据 NDK 的 docs/CPU-MIPS.html
和 CPU-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 开发的版本)。由于两者 armeabi
和 armeabi-v7a
链接到相同的库(在 arch-arm
子目录中),它们自版本 3 以来都受支持。
要自己找出答案,只需查看 <NDK>/platforms/android-X
对于 X 的最低值,其中 arch-arm
(或类似地,arch-x86
和 arch-mips
)存在。
一般来说,在旧设备上运行的 APK 中包含更新的架构代码没有风险或危害 - 旧设备不会查看未知架构。唯一的风险是自 arch-X
以来 NDK 构建失败。如果为太旧的平台版本构建目录会丢失,在这种情况下,您可以通过定位较新的平台版本来立即自行修复它。
关于Android API 和 CPU 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699252/