Android 4及更高版本仅支持armeabi-v7a安全吗?

我开发了一个主要使用C ++的应用程序,并且像往常一样由NDK编译到.so库。 我们知道必须分别为每个CPU架构构建本机应用程序; 所以我为armeabiarmeabi-v7a提供了不同的文件。 (我特意遗漏了x86mips ,因为没有很多具有这些架构的Android设备被发布。)

但是,大小非常大,每个文件占用大约90 MB的空间,我想减少它。

我知道我可以省略armeabi-v7a ,因为向后兼容,但在这种情况下,应用程序将运行得非常慢。

考虑到我的应用程序仅支持android ICS及更高版本( minSdkVersion="14" ),我可以安全地删除armeabi并假设所有这些新设备都使用armeabi-v7a吗? 或者有些设备仍然可以使用旧的armeabi而不是armeabi-v7a架构?

Android 4.0及更新版本的未经修改的原始Android源默认情况下不支持ARMv5 / ARMv6(但可以修改为ARMv5 / ARMv6的构建 – 在ARMv6上运行它的自定义构建)。 我不确定是否可以获得与此类Android版本兼容的ARMv6设备,或者它是否仅适用于非官方固件。 从Android 4.4开始,CDD(兼容性定义)严格要求ARMv7。 有关详细信息,请参阅https://android.stackexchange.com/questions/34958/what-are-the-minimum-hardware-specifications-for-android 。

所以是的,也许,原则上,如果您的应用需要Android 4.0,您可以删除armeabi ,但我不确定是否有任何此类官方保证。 如果你需要Android 4.4,它应该绝对没问题。

没有Android 4+设备支持armeabi而不支持armeabi armeabi-v7a ,所以你可以安全地删除armeabi

您可以在Google Play中armeabi查看:创建2个APK(1个支持armeabi ,1个支持armeabi-v7a )并尝试将它们上传到Google Play。 您会注意到它们具有相同数量的受支持设备。

如果您在尝试支持两种架构时按体系结构拆分APK,则在上传到Google Play时甚至会出现错误:

任何设备都无法下载此应用的版本xxx,因为它们都会收到包含更高版本代码的APK。

作为zenfone 2的拥有者,我会说不 – 这些设备运行ICS +,但使用x86微体系结构。 如果你在谷歌搜索android x86%,你应该能够遇到统一页面,告诉你不同微体系结构的市场份额。 此外,还有一些小众产品使用基于MIPS的CPU并运行ICS +。

虽然确实有一种机制让x86安卓设备运行apk编译而没有这样的x86,这有其他的缺点。