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?
3 Answers
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.
-
2This essentially means that there are not a lot of devices out there that are not ARM based. Hence, I think my app will support a larger part of the multitude of Android devices. Thanks!– sriNov 14, 2017 at 9:36
-
@iBug Same here (I actually owned 2, sold one of em). The driver issues make Windows on them sometimes a pain to use, let alone Android, I'd say.– Andy YanNov 14, 2017 at 9:51
-
@AndyYan Driver issue? No problem if you disable driver auto-update in WU– iBugNov 14, 2017 at 10:28
-
@iBug Nah - some drivers like touch panel and display occasionally malfunction and would require a reinstall. Not caused by auto driver updates.– Andy YanNov 14, 2017 at 10:42
-
2
I ended up with this conclusion after searching a lot.
Useful info in Unity Stats.
ARMv7: 98.1%
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.
and
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
and x86_64
architecture. (Only add these architure when you support ChromeBook)
Conclusion
If you app supports armeabi-v7a
and arm64-v8a
architectures because they have around 99% of Android devices.
Important Suggestion
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.
Important links
From Google Play Console (supporting a minimum of Android 4.1 and landscape screen):
- x86: 287 devices
- arm64-v8a: 3136 devices
- armeabi-v7a: 11716 devices
-
2how did you find this information on google developer console? I can't find report with device architecture.– SaqibJul 9, 2020 at 22:42
-