我是从命令行构建我的本机组件(而不是来自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级别与armeabi
和armeabi-v7a
的交叉点是什么?
根据NDK的docs/CPU-MIPS.html
和CPU-X86.html
,MIPS和X86的最低API级别为9.但我无法为ARM找到类似的文档。
根据NDK的docs/NEON.html
,ARMv7-a在NDK R3中首次亮相,该日期是2010年3月。这使得ARMv7-a从2010年5月开始围绕API 8。
答案 0 :(得分:3)
自第一版发布以来,ARM一直受到支持(第3版是第一个支持本机NDK开发的版本)。由于armeabi
和armeabi-v7a
都链接到相同的库(在arch-arm
子目录中),因此从版本3开始都支持它们。
要自己查找,请查看<NDK>/platforms/android-X
,了解arch-arm
(或类似地,arch-x86
和arch-mips
)存在的X的最低值。
一般而言,在旧设备上运行的APK中使用较新的架构代码没有任何风险或伤害 - 旧设备只是不会看到未知的架构。唯一的风险是NDK构建失败,因为如果构建太旧的平台版本,则arch-X
目录丢失,在这种情况下,您可以通过定位较新的平台版本立即自行修复它。