This question might be redundant or a possible duplicate but I am using an NDK library that runs only on ARM devices. Is there a way I could know what percentage of Android devices can my app support based on CPU architecture just like these statistics on Android Platform Versions?
Since ultimately you're deciding whether x86 is still worthy of spending effort to support, I'm listing several facts about x86 for Android devices here:
- Intel had decided to discontinue the Atom line for phones/tablets.
- The last generation of handheld Atom - x3, x5 and x7 series - were at best equipped on lower-end Chinese Android tablets. Some come with phone/data capabilities (based on x3-C3230RK). Regardless, none made it onto mainstream devices, specifically phones.
- The last x86 Android device that's widely popular was ASUS' Zenfone 2, released in March 2015 - and even its subsequent variants shifted to Qualcomm's Snapdragon 410/615, partly due to the compatibility issues Android on x86 had back then.
- Spreadtrum has a partnership with Intel and just announced SC9861G-IA in March 2017 / SC9853I in August 2017. However, this has yet to come to fruition on consumer devices, and given Spreadtrum's focus on low-end devices for emerging markets, this SoC likely won't give much x86 on Android much significance.
EDIT: The first device utilizing the above Spreadtrum SoCs, the Leagoo T5c, is now on pre-sale. Leagoo is a small China-based firm, and the device mainly targets India, not to mention another variant of the same device (the T5) with a conventional SoC is sold at the same time, so it doesn't change the assumptions above that it will remain unpopular.
I ended up with this conclusion after searching a lot.
Useful info in Unity Stats.
Intel x86: 1.7%
However I was not satisfied so I verified it from many resources.
According to Android Documentation.
armeabi was deprecated in r16. Removed in r17. No hard float.
Historically the NDK supported 32-bit and 64-bit MIPS, but support was removed in NDK r17.
Summery after searching a lot
- mips (deprecated)
- mips64 (deprecated)
- armeabi (deprecated)
- armeabi-v7a (required — most popular architecture nowadays)
- arm64-v8a (required — newer version of armeabi-v7a)
- x86 (optional, very limited number of devices, like Asus Zenfone 2, Genymotion/ Android emulator)
- x86_64 (optional, very limited number of devices, like Asus Zenfone 2, Genymotion/ Android emulator)
I should also mention that ChromeBook are using Intel processors based
x86_64 architecture. (Only add these architure when you support ChromeBook)
If you app supports
arm64-v8a architectures because they have around 99% of Android devices.
Do you worry about app size (you should), you should split your apk for multiple abi. Android studio and play store support uploading multiple apk, so that app has only 1 architecture ndk files.
So this will be much efficient to build multiple apk.