原生React:版本代码对于使用enableSeparateBuildPerCPUArchitecture的Android来说太大

4smxwvx5  于 2022-11-03  发布在  Android
关注(0)|答案(3)|浏览(257)

我正在编译我的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
        }
    }
}

但是我仍然找不到真实的的原因,为什么有必要增加版本代码到一个大的数字

anauzrmj

anauzrmj1#

“我们需要这样做,因为ABI中的每个APK都需要一个单独的版本代码,每次应用更新时都会更新。此代码块会为每个架构向基础版本代码添加一个不同的常量。然后,每个APK都会获得各自的不同值,这些值不太可能重叠。有关更多详细信息,请查看ABI拆分的Android文档。”
https://reactnative.thenativebits.com/courses/upgrading-react-native/upgrade-to-react-native-0.59/
因此,您需要将versionCode的“控制权”交给构建系统,转而依赖versionName。

h9a6wy2h

h9a6wy2h2#

让我们假设你乘以一个小数字....比如说2。
因此,[“armeabi-v7 a”:1,“x86”:2]的apk版本代码将为
当您设置android时:默认版本代码为1:

  • ARMEABI-V7A:1 * 2 + 1 = 3
  • x86:2 * 2 + 1 = 5个

假设您现在有另一个版本,并决定使用默认版本代码2。因此,架构的版本代码为:

  • ARMEABI-V7A:1 * 2 + 2 = 4个
  • x86:2 * 2 + 2 = 6个

现在在下一个版本中,当你使用默认版本代码3时,你会注意到我们遇到了一些问题。

  • ARMEABI-V7A:1 * 2 + 3 = 5**(与第1版的x86版本代码冲突)**
  • x86:2 * 2 + 3 = 7个
    **PS:**以上答案完全基于我的理解/解释,原作者很可能有完全不同的原因。
rpppsulh

rpppsulh3#

将-def enableSeparateBuildPerCPUArchitecture从true更改为false之后,无论何时创建一个构建,它都应该仅以+1递增。

相关问题