我开发了一个应用程序,该应用程序主要使用 C++,并像往常一样由 NDK 编译为 .so
库。我们知道,必须为每个 CPU 架构分别构建原生应用程序;所以我对 armeabi
和 armeabi-v7a
有不同的 so
文件。 (我故意省略了 x86
和 mips
,因为发布的具有这些架构的 Android 设备并不多。)
但是,它的大小非常大,每个 so
文件占用大约 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 - 仅支持 Android 4 及更高版本的 armeabi-v7a 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28926101/