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

时间:2015-03-08 11:54:01

标签: android android-ndk arm

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

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

我知道我可以省略armeabi-v7a,因为它具有向后兼容性,但在这种情况下,应用程序的运行速度会很慢。

考虑到我的应用仅支持Android ICS及以上版本(minSdkVersion="14"),我是否可以安全删除armeabi并假设所有这些新设备都使用armeabi-v7a?或者某些设备仍可能使用旧的armeabi而不是armeabi-v7a架构?

3 个答案:

答案 0 :(得分:20)

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,它应该绝对没问题。

答案 1 :(得分:3)

没有支持armeabi但不支持armeabi-v7a的Android 4+设备,因此您可以安全地删除armeabi

您可以在Google Play中自行查看:创建2个APK(1个支持armeabi,1个支持armeabi-v7a),然后尝试将两者都上传到Google Play。您会注意到他们拥有相同数量的受支持设备。

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

  

此应用的版本xxx无法由任何设备下载   将全部收到更高版本代码的APK。

答案 2 :(得分:0)

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

虽然有一种机制可以让x86安卓设备运行apk而不用x86编译,但还有其它缺点。

相关问题