【发布时间】:2015-05-09 16:05:23
【问题描述】:
我开发了一个主要使用 C++ 的应用程序,并像往常一样由 NDK 编译为 .so 库。我们知道,必须为每个 CPU 架构分别构建原生应用程序;所以我有不同的so 文件用于armeabi 和armeabi-v7a。 (我故意省略了x86 和mips,因为发布的具有这些架构的Android 设备并不多。)
但是,大小非常大,每个so 文件占用大约90 MB 空间,我想减少它。
我知道我可以省略 armeabi-v7a,因为向后兼容,但在这种情况下,应用程序会运行得很慢。
考虑到我的应用仅支持 android ICS 及更高版本 (minSdkVersion="14"),我是否可以安全地删除 armeabi 并假设所有这些新设备都使用 armeabi-v7a?或者某些设备可能仍然使用旧的armeabi 而不是armeabi-v7a 架构?
【问题讨论】:
-
如果您的设备已经有更新的 api 版本,并且您只想在旧设备上测试您的应用程序,请下载 armabi-v7a
-
您可以“安全地”执行此操作,因为 Play 商店不会向旧设备发送仅支持 ARMv7-A 的应用程序。您承担的唯一风险是切断一定比例的市场。几年前 ARMv6 设备的数量惊人地多,但由于低端廉价 ARMv7-A+ 芯片的可用性,这个数字正在下降。
-
是的,Play 商店确实会根据设备规格过滤应用程序,但由于我的公司不会通过 Play 商店分发它,所以它没有多大帮助,我必须确保。跨度>
-
请注意,自 r16 以来 NDK 已弃用 armeabi 和 mips。因此,默认情况下不会生成这些架构的 so 文件。仍然可以通过在 abifilters 中明确提及来获取 so 文件。这实际上意味着 armeabi 和 mips 现在绝对不需要了。
标签: android android-ndk arm