Issue
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
and armeabi-v7a
. (I deliberately left out x86
and 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 armeabi-v7a
architectures?
Solution
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
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.