【发布时间】:2018-01-03 14:02:15
【问题描述】:
我的应用程序大小已达到 117 MB,因为 Play 商店不允许上传大于 100 MB 的 apk。
所以我使用了split,并创建了多个版本的apk,每个版本都基于不同的ABI
如果我分析 universal-apk,我会在 lib 文件夹中找到这些类型的 ABI's;
- armeabi-v7a
- x86
- armeabi
我用它为每个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-v7a 和x86 这些设备会怎样足以针对市场上所有可用的设备。
这会减少目标应用用户吗?我找不到ABI share on Google Play
【问题讨论】:
-
你能在你的 abi 定义中包含 arm64-v8a 吗?
-
看起来如果您删除重置并包含然后将构建商店支持的所有 abi。这对您来说是一种有效的方法吗?
-
是的,我可以包含所有这些,但是所有其他
apk's的大小都比其他的小,除了armeab-v7a和x86所有其他架构都没有任何 @987654346 @文件,所以我担心如果为每个文件添加单独的apk会导致崩溃,这就是为什么我问armeab-v7a和x86是否足以支持市场上所有可用的设备。 -
也许其他架构在设备上包含这些依赖项?我不是 abi splits 专家,但鉴于您对 S7 的观察,我想说如果您想支持所有可用设备,则需要包含所有 abis。
-
让我举个例子,一些外部库需要使用
libUnity.so,他们在armeabi-v7a和x86文件夹中添加了libUnity.so。所以universal-apk有2个linunity.so文件,它增加了universal-apk的大小,这就是我拆分apk的原因,现在两种架构都只有1个linUnity.so文件。
标签: android performance android-gradle-plugin google-play abi