Android App Bundle版本代码突然很高

时间:2019-07-05 07:58:35

标签: android react-native build version

我刚刚为我的React Native应用制作了一个新的Android捆绑包。我在android / app / build.gradle中将版本代码从90手动更新为91,但是现在我尝试上传到Play商店,版本代码为3145819(我希望看到91)

build.gradle:

 defaultConfig {
        applicationId "com.myapp"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 91
        versionName "4.1.0"
        multiDexEnabled true
        missingDimensionStrategy "RNN.reactNativeVersion", "reactNative57_5"
        resValue "string", "build_config_package", "com.myapp"
    }

我使用此命令捆绑:

./gradlew bundleProdRelease --console plain

不确定为什么会这样,我绝对更喜欢较小的版本代码(在报告错误时,用户更容易阅读)。

有什么想法,怎么解决?

3 个答案:

答案 0 :(得分:1)

我有同样的问题。每当我运行 ./ gradlew bundleRelease 而我更改

时,就会发生这种情况
def enableSeparateBuildPerCPUArchitecture = false

def enableSeparateBuildPerCPUArchitecture = true

此功能可在 android / app / build.gradle

中找到

除了将 enableSeparateBuildPerCPUArchitecture 更改回 false

之外,我不确定如何停止它

答案 1 :(得分:1)

哦,好吧,我终于想通了!不,在过去的两年里,我并没有拼命地寻找答案......我现在只是不知何故偶然发现了它。

因此,在 android/app/build.gradle 中,有一个生成包版本代码的脚本。它是根据版本代码和目标架构版本代码计算得出的。例如在 RN 0.64x template:

def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
def abi = output.getFilter(OutputFile.ABI)

if (abi != null) {
  output.versionCodeOverride = defaultConfig.versionCode * 1000 + versionCodes.get(abi)
}

对我来说,arm64-v8a 在生成版本代码时似乎总是被用作默认值,所以我得到如下输出:

versionCode 1 => 1003
versionCode 12 => 12003
versionCode 105 => 105003
you get the idea...

过去的计算涉及一个更神秘的数字(1048576 ??‍♂️,见RN 0.59x template),这似乎是任意的,并且很难理解这个捆绑版本代码是如何生成。

现在更有意义了!

答案 2 :(得分:0)

一种可能性是您的/app/build.gradle配置包含一些逻辑,这些逻辑可能会转换versionCode,这可能是因为您正在进行应用捆绑。

在当前的react-native主站中,您可以看到一些版本控制逻辑here

可能您的build.gradle具有相同或相似的逻辑。

Google对于版本here有解释。