Android API and processor architectures
I am creating my own components from the command line (not from Android.mk
). I am trying to determine the intersection of processor architectures with API levels. I know:
-
armeabi
- ARMv5TE -
armeabi-v7a
- ARMv7-A
I am trying to determine the minimum API level required for armeabi
(ARMv5TE) and armeabi-v7a
(ARMv7-A). I need a minimum API level to pick the right one sysroot
. For example, I can choose:
-
/opt/android-ndk-r9/platforms/android-19/arch-arm
or
-
/opt/android-ndk-r9/platforms/android-9/arch-arm
What are the intersections of API levels with armeabi
and armeabi-v7a
?
According to NDK docs/CPU-MIPS.html
and CPU-X86.html
MIPS and X86 minimum API level is 9. But I can't find a similar document for ARM.
According to the NDK docs/NEON.html
, ARMv7-a debuted in NDK R3, dated March 2010. This puts ARMv7-a around API 8 as of May 2010.
source to share
ARM has been supported since early releases (release 3 is the first to support NDK development at all). Since references armeabi
and armeabi-v7a
links to the same libraries (in a subdirectory arch-arm
), both are supported since release 3.
To find out for yourself, just look <NDK>/platforms/android-X
for the smallest X value where arch-arm
(or similarly, arch-x86
and arch-mips
) exists.
In general, there is no risk or harm in the new architecture code in an APK running on an older device - an older device simply won't look at unknown architectures. The only risk is that the NDK build will fail because the directory is missing arch-X
if you build the platform too old, in which case you can fix it yourself by configuring the new platform version.
source to share