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

Do we need to upload universal-apk if we are uploading different apk's for each ABI

我的应用程序大小已达到 117 MB,因为 Play 商店不允许上传 apk,如果它大于 100 MB

所以我使用了 split,并根据不同的 ABI

创建了多个版本的 apk

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

我用它为每个 abi

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

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

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

现在我的问题是那些 cpu architecture 不属于这些类别的用户会怎样。

我注意到 Galaxy S7 是 arm64-v8a,除此之外,市场上还会有一些其他架构可用,所以如果 universal-apk 不存在,这些设备会发生什么情况,或者 armeabi-v7ax86 足以定位市场上所有可用的设备。

这会减少目标应用用户吗?我找不到 ABI share on Google Play

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

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

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

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

对于没有这些 ABI 之一的用户,他们将获得 "This app is not compatible with your device"。

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

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

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