首页 > 解决方案 > 需要使用不同的APK Version Code,但实际上并没有使用过

问题描述

大约 1 年前,我使用版本代码 10005 发布了我的应用程序。现在我再次使用版本代码 10505 上传,我收到了以下消息:

这是屏幕截图:https ://i.imgur.com/kdOsF7j.jpg (抱歉,我还没有达到 10 名声望才能在此处附加图片。

我在我的代码中搜索了版本代码 10005。甚至那个截图显示 10505 已经被使用了,实际上还没有

我该如何解决这个问题?

这是我的默认配置:

defaultConfig {
    /* another */
    versionCode codeVersion
    versionName "${versionMajor}.${versionMinor}.${versionPatch}-${releaseType}"
    /* another */
}

这就是 codeVersion、versionMajor Minor Patch 和 releaseType 的起源:

subprojects {
    ext {
        def npmVersion = getNpmVersionArray()
        versionMajor = npmVersion[0]
        versionMinor = npmVersion[1]
        versionPatch = npmVersion[2]
        codeVersion = npmVersion[3]
        releaseType = System.env.RELEASE_TYPE != null ? System.env.RELEASE_TYPE : ''
    }

    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 26
                buildToolsVersion '26.0.3'
            }
        }
    }

    if (project.name.contains('react-native-image-picker')) {
        buildscript {
            repositories {
                jcenter()
                maven { url "https://dl.bintray.com/android/android-tools/"  }
            }
        }
    }

    if (project.name.contains('react-native-vector-icons')) {
        buildscript {
            repositories {
                jcenter()
                maven { url "https://dl.bintray.com/android/android-tools/"  }
            }
        }
    }
}

def getNpmVersion() {
    def inputFile = new File(System.getProperty("user.dir") + "/android/" + "version.json")
    def packageJson = new JsonSlurper().parseText(inputFile.text)

    return packageJson
}

def getNpmVersionArray() { // major [0], minor [1], patch [2]
    def jsonData = getNpmVersion()
    def (major, minor, patch) = jsonData["version"].tokenize('.')
    def code = jsonData["code"]

    def releaseType = System.env.RELEASE_TYPE != null ? System.env.RELEASE_TYPE : ''

    println "Building version: ${major}.${minor}.${patch}-${releaseType}; Version code: ${code}"

    return [Integer.parseInt(major), Integer.parseInt(minor), Integer.parseInt(patch), Integer.parseInt(code)] as int[]
}

所以实际上流程正在获取这个 version.json:

{
  "version": "1.5.5",
  "code": "10505"
}

然后用它在 build.gradle 中定义 versionCode 和 versionName

标签: androidreact-nativeversioningreleasebeta

解决方案


推荐阅读