I have developed an app which is mostly in C++ and is compiled by NDK to
.so libraries as usual. We know that native apps have to be build for each CPU architecture separately; So I have different
so files for
armeabi-v7a. (I deliberately left out
mips, since not many Android devices with these architectures are released.)
However, the size is very big and each
so file takes about
90 MB of space and I want to reduce it.
I know I can leave out
armeabi-v7a, because of backward compatibility, but in that case the app will run very slowly.
Considering the fact that my app supports only android ICS and above (
minSdkVersion"14"), Can I safely remove
armeabi and suppose that all of these new devices use
armeabi-v7a? Or some of the devices may still use the old
armeabi and not
The unmodified, original Android source for Android 4.0 and newer doesn’t support ARMv5/ARMv6 by default (but can be modified to build for ARMv5/ARMv6 – there are custom builds of it that run on ARMv6). I’m not sure if one can get an ARMv6 device certified compatible with such Android releases, or if it only is applicable for unofficial firmwares. Since Android 4.4, the CDD (compatibility definition) strictly requires ARMv7. See https://android.stackexchange.com/questions/34958/what-are-the-minimum-hardware-specifications-for-android for details on this.
So yes, maybe, in principle, you could drop
armeabi if your app requires Android 4.0, but I’m not sure if there is any such official guarantee. If you require Android 4.4, it should absolutely be fine though.
Answered By – mstorsjo