我正在编译我的Android React原生应用程序,将enableSeparateBuildPerCPUArchitecture设置为false,但由于我读到如果我设置为true,则应用程序将减少4 mb,这是真的。
因此,我当前的版本代码是9,所以我将新版本设置为10,当我创建一个新版本时,将该选项设置为true,我将其上传到我的Google Play Jmeter 板,我意识到新版本代码不是10,而是1048586:/
幸运的是,我没有发布那个版本,我只是删除了它,但我想知道发生了什么,如果这是正常的,如果我创建一个新版本后,数字将增加1个单位,如1048586到1048587?
谢谢你!
编辑
我找到了设置版本代码的代码行
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
但是我仍然找不到真实的的原因,为什么有必要增加版本代码到一个大的数字
3条答案
按热度按时间anauzrmj1#
“我们需要这样做,因为ABI中的每个APK都需要一个单独的版本代码,每次应用更新时都会更新。此代码块会为每个架构向基础版本代码添加一个不同的常量。然后,每个APK都会获得各自的不同值,这些值不太可能重叠。有关更多详细信息,请查看ABI拆分的Android文档。”
https://reactnative.thenativebits.com/courses/upgrading-react-native/upgrade-to-react-native-0.59/
因此,您需要将versionCode的“控制权”交给构建系统,转而依赖versionName。
h9a6wy2h2#
让我们假设你乘以一个小数字....比如说2。
因此,[“armeabi-v7 a”:1,“x86”:2]的apk版本代码将为
当您设置android时:默认版本代码为1:
假设您现在有另一个版本,并决定使用默认版本代码2。因此,架构的版本代码为:
现在在下一个版本中,当你使用默认版本代码3时,你会注意到我们遇到了一些问题。
**PS:**以上答案完全基于我的理解/解释,原作者很可能有完全不同的原因。
rpppsulh3#
将-def enableSeparateBuildPerCPUArchitecture从true更改为false之后,无论何时创建一个构建,它都应该仅以+1递增。