我已经开发了一个应用程序,主要是在C++和编译由NDK到.so库像往常一样。我们知道必须为每个CPU架构分别构建原生应用程序;因此,我为armeabi和armeabi-v7a创建了不同的so文件。(我故意忽略了x86和mips,因为采用这些架构的安卓设备发布的并不多。)
然而,大小是非常大的,每个so文件占用约90 MB的空间,我想减少它。
我知道我可以省略armeabi-v7a,因为向后兼容,但在这种情况下,应用程序的运行速度会非常慢。
考虑到我的应用程序只支持android ICS及以上版本(minSdkVersion="14"),我是否可以安全地删除armeabi,并假设所有这些新设备都使用armeabi-v7a?或者一些设备可能仍然使用旧的armeabi而不是armeabi-v7a架构?
发布于 2015-03-08 20:15:34
用于Android4.0和更新版本的未经修改的原始Android源代码默认不支持ARMv5/ARMv6 (但可以针对ARMv5/ARMv6进行修改--有一些在ARMv6上运行的定制版本)。我不确定一个人是否可以得到一个ARMv6设备的认证兼容这样的安卓版本,或者它是否只适用于非官方固件。从Android4.4开始,CDD (兼容性定义)严格要求ARMv7。有关这方面的详细信息,请参阅https://android.stackexchange.com/questions/34958/what-are-the-minimum-hardware-specifications-for-android。
所以,原则上,如果你的应用需要Android4.0,你可以放弃armeabi,但我不确定是否有这样的官方保证。如果你需要的是Android4.4,那应该是完全没问题的。
发布于 2017-08-16 23:34:16
目前还没有支持armeabi但不支持armeabi-v7a的安卓4+设备,所以你可以放心地放弃armeabi。
你可以自己在Google Play中查看:创建2个APK (1个支持armeabi,1个支持armeabi-v7a),并尝试将这两个上传到Google Play。你会注意到他们有相同数量的支持设备。
如果您在尝试同时支持两种架构时按架构拆分APK,则在上传到Google Play时甚至会出现错误:
任何设备都无法下载此应用程序的
版本xxx,因为它们都将收到具有更高版本代码的app。
发布于 2016-10-14 03:02:12
作为Zenfone2的拥有者,我会说不是--这些设备运行的是ICS+,但采用的是x86的微架构。如果你在谷歌上搜索android x86 percent,你应该能找到一个unity页面,告诉你不同微架构的市场份额。此外,还有一些利基产品使用基于MIPS的CPU并运行ICS+。
虽然确实有一种机制可以让x86 android设备运行apk编译,但没有针对x86的so,这也有其他缺点。
https://stackoverflow.com/questions/28926101
复制相似问题