【发布时间】:2019-06-17 20:05:33
【问题描述】:
Google 为更新应用的 apk 文件设置了截止日期,因此它们需要为所有架构版本提供单独的文件。
所以在 build.gradle 文件中我做了以下更改:
def enableSeparateBuildPerCPUArchitecture = true
...
splits {
abi {
...
include "armeabi-v7a", "x86", "arm64-v8a", "x86-64"
...
}
}
...
applicationVariants.all { variant ->
variant.outputs.each { output ->
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a":3, "x86-64":4]
...
}
}
起初我认为它工作得很好,因为在 ...android\app\build\outputs\apk\release 目录中我发现了几个文件而不是一个。然而,让我惊讶的第一件事是我收到了 3 个文件版本:arm64-v8a、x86 和 armeabi-v7a。 未生成 x86-64 版本是否正确?
第二件事是,当我在 google play 控制台上更新文件时,我仍然收到消息说文件没有被体系结构版本相应地分开。还有什么我应该做的吗?
【问题讨论】:
-
我想你很困惑。 Google 设定了所有应用程序必须支持 64 位的日期,而不是所有应用程序都必须具有单独的 64 位 APK 的日期。仍然允许通过多 ABI apk 包进行支持。这一切都从 2019 年 8 月 1 日开始(有一些例外)。
-
我收到了一封包含此消息的电子邮件:“到 2019 年 8 月 1 日,所有使用本机代码的应用程序必须在 32 位版本之外提供 64 位版本才能发布更新。今年 1 月,我们重申,这是为创新让路以及预期未来仅支持 64 位代码的 Android 设备所必需的。”我知道我应该提供一个单独的 64 位版本,但我对此不是 100% 确定
-
这意味着所有应用程序都必须支持 64 位 CPU。这并不意味着他们需要单独的应用程序包。尽管这样做并没有什么坏处,但您从 Play 商店下载的内容会更少。所以这不是浪费,尽管我强烈建议您使用 Fastlane 或类似的工具自动执行构建上传。
-
至于 x86-64 二进制文件 - 你确定你所有的库都提供它们吗?这是我最不关心的一个,因为 x86-64 在 Android 设备上的唯一主要用途是用于模拟器 - 99% 以上的手机/平板电脑都是 ARM。
-
我之前试图拆分 apk 文件,但是遇到了一些问题,就把它放在我的待办事项列表中;)但是由于谷歌提醒了我,我认为应该这样做。跨度>
标签: android react-native google-play react-native-android