我计划从 ABI 拆分迁移到 App Bundle 功能。目前我正在使用这段代码:
def versionCodesAbi = ['x86': 1, 'x86_64': 2, 'armeabi-v7a': 3, 'arm64-v8a': 4]
splits {
abi {
enable true
reset()
include "x86", "x86_64", "armeabi-v7a", "arm64-v8a"
// "armeabi", "mips", "mips64" last three not needed and not supported currently
universalApk true
}
}
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def abi = versionCodesAbi.get(output.getFilter(OutputFile.ABI))
if (abi != null) {
output.versionCodeOverride =
abi * 1000 + variant.versionCode
}
}
}
每个 ABI 提供 4 个 APK(+ 通用一个)。使用此代码的原因是减少应用程序大小,因为PanoWidget(使用 NDK)和
renderscriptTargetApi 28
renderscriptSupportModeEnabled true
删除拆分配置(+4001 到versionCode
)并构建 Bundle 后,我得到了 .aab 文件,该文件转换为 .apks (使用bundletool)包含文件夹standalones/
。在里面我有四种“种类”的 APK,用于 x86、x86_64、armeabi-v7a 和 arm64-v8a ABI。现在一切看起来都很好。
现在我注意到应用程序代码根本没有使用RenderScript
,所以我认为使用supportMode
and是多余的targetApi
。我已经删除了这两行,在设备/模拟器上进行了测试,一切正常。所以接下来我正在制作 Bundle,现在它在 .apks 存档中没有 x86_64 APK 版本......应该在没有RenderScript
支持的情况下省略它吗?我仍在使用VrPanoramaView
,它可能对每个 ABI 都有一些特定的 NDK 代码(在 GitHub 上看不到)......遗憾的是我没有 x86(32 或 64)设备进行测试,而且我害怕发布这个捆绑包......我错过了smth,我什至需要_64版本吗?