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

Is it safe to support only armeabi-v7a for Android 4 and above?

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

但是,文件很大,每个 so 文件占用 space 的 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,那绝对没问题。

作为 zenfone 2 的所有者,我会拒绝 - 这些设备 运行 ICS+ 但具有 x86 微体系结构。如果您在 google 上搜索 android x86%,您应该能够看到一个统一页面,告诉您不同微体系结构的市场份额。此外,还有一些使用基于 MIPS 的 CPU 和 运行 ICS+ 的利基产品。

虽然确实有一种机制可以让 x86 android 设备 运行 apk 在没有 x86 的情况下编译,但它还有其他缺点。

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

您可以在 Google 播放中自行检查:创建 2 个 APK(1 个支持 armeabi,1 个支持 armeabi-v7a)并尝试将两者上传到 Google玩。您会注意到它们支持的设备数量相同。

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

Version xxx of this app can not be downloaded by any devices as they will all receive APKs with higher version codes.