Android architecture usage? Android architecture usage? android android

Android architecture usage?


First off, if you're worring about binary size, you don't really need arm64-v8a, all those devices can run the armeabi-v7a binaries just fine. Only if you really need to cram the last extra performance out of it, it might be worthwhile.

As for armeabi and ARMv6; Android itself doesn't officially support it any longer, since Android 4.4 (October 2013) - and since Android 4.0 it should be much less common (from that version, AOSP source requires modifications to still build for ARMv6). So in practice, if you aren't supporting versions below 4.4, you can drop that one without any significant loss.

Also, for x86; many of those devices ship with surprisingly decent emulation of arm binaries, so those can manage with the armeabi-v7a version just fine as well.

EDIT: The above was written in 2015; these days Play Store requires that apps include support for arm64-v8a. But these days the next question is more about whether you need to include armeabi-v7a at all, or if the market share of 32 bit devices is small enough to drop support for.


Including additional architectures will no longer have any impact on the binary size when using app bundles, as in that case Google Play will serve each device only the binaries that apply to that particular device. Not only that, but also application updates will be way smaller and faster.

Leaving the previous information for projects still not using app bundles:

  • Unfortunately, the Android Dashboard, as useful as it is, does not provide architecture information, nor does Google Analytics.

  • The Unity statistics used to provide statistics per architecture and CPU features. Note, however, that these are not general statistics, but only cover users of Unity applications/games. The information doesn't seem to be available in a public link anymore, so I have replaced the direct links with the latest snapshots in archive.org.


I was stuck with this problem when using Mapbox, then later found this article which was very useful.

Based on the below picture you just need armeabi-v7a and x86. Then based on Jose Gómez answer, I only added armeabi-v7a and didn't have any problem at all.

So add this line to your app.gradle

android { defaultConfig {        //other configs        ndk {            abiFilters "armeabi-v7a"        }    }}

If you're still worried about 2% - 3% of those who use x86 architecture, like ASUS ZenFone and lenovo phones then use this config instead in app.gradle

ndk {    abiFilters "armeabi-v7a", "x86"}

Also for genymotion emulators you should use x86 architecture

enter image description here

UPDATE

If you get this error while publishing the apk in play store

enter image description here

Then use this

ndk {    abiFilters "armeabi-v7a", "arm64-v8a"}

And finally, I suggest you use app bundle for releasing the APK