如果我们为每个ABI上传不同的apk,我们是否需要上传universal-apk

时间:2018-01-03 14:02:15

标签: android performance android-gradle google-play abi

我的应用尺寸已达到117 MB,因为Play商店不允许上传apks,如果其大于100 MB

所以我使用了split,并根据不同的ABI创建了apk的多个版本

如果我分析universal-apk,我在lib文件夹中得到了这些类型的ABI's;

  • armeabi-v7a
  • 86
  • armeabi

enter image description here

我用它来为每个separate apk

创建abi
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a', 'armeabi'
        universalApk true
    }
}

现在我在结果中获得了4种类型的apk。 universal-apk大小为117 MB,其中armeabi为68 MB。

enter image description here

因此很明显,我无法在游戏商店上传universal-apk,因此我最终会在游戏商店上传3 apk's

现在我的问题是那些cpu architecture不属于这些类别的用户会发生什么。

我注意到Galaxy S7是arm64-v8a,除了这些之外,市场上还会有一些其他架构可供使用,那么如果universal-apk不存在,或{{1 }}和armeabi-v7a足以定位市场上的所有设备。

这会减少目标应用用户吗?我无法找到x86

2 个答案:

答案 0 :(得分:3)

第一步始终是从数据开始。在Play Developer Console中查看现有用户,了解用户的分布情况。

对于没有这些ABI的用户,他们将获得"此应用与您的设备不兼容"。

然而,x86_64和arm64-v8a与x86和armeabi-v7a向后兼容。通过覆盖您选择的那些,它几乎可以在所有设备上运行,mips可能不值得担心。

如果您添加x86_64和arm64-v8a变体,那么较新设备上的用户将获得更好的性能,但如果没有这个变量,它应该可以正常工作。

armeabi现在非常罕见,但是一些非常古老的设备确实有这种限制。如果你的目标是一个现代的Android版本(例如ICS +),你可能会没问题。

答案 1 :(得分:1)

可以在此处找到所有受支持的ABI的列表:

https://developer.android.com/ndk/guides/abis.html#sa

如果删除reset()选项,则将为每个受支持的ABI构建拆分。