Google Play Developer API version_name

时间:2017-05-11 16:22:29

标签: android gradle google-play-developer-api

我正在尝试使用Gradle Play Publisher自动将应用发布到Google Play商店。到目前为止一直很好,除了我无法以这种方式更新version_name,它只是忽略它。

我试过./gradlew publishRelease -Dversion_name=3.0.0。看起来这是由于Google Play API的限制。如果我运行./gradlew assembleRelease -Dversion_name=3.0.0生成apk然后手动上传apk,则会正确上传版本3.0.0。只是想确保无法上传版本名称víaGooglePlay Developer API,还是 Gradle Play Publisher 的问题?

  

的build.gradle

def version_name = System.getProperty("version_name")

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode version_code
        versionName "${version_name}"
        renderscriptTargetApi 23
        renderscriptSupportModeEnabled true
        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

修改

按照R.Zagórski的建议,我试过了:

1

./gradlew assembleRelease -Dversion_name=3.0.0 publishRelease

2

./gradlew assembleRelease -Pversion_name=3.0.0 publishRelease

  

的build.gradle

def version_name = project.getProperty("version_name")
println "version name: "+version_name

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 23
        versionCode version_code
        versionName "${version_name}"
        renderscriptTargetApi 23
        renderscriptSupportModeEnabled true
        multiDexEnabled true

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    ...
}

但仍然没有。要明确问题不是我在构建中没有得到version_name或错误的version_name,事实上你看到println会打印出正确的版本。只是我在Google Play商店中没有得到任何东西(见下图)。

enter image description here

1 个答案:

答案 0 :(得分:0)

这不是插件或API的问题。这就是gradle的工作原理。表明问题的其他答案为herehere

基本上问题是gradle可能会创建一个JVM fork进程来完成任务。因此,在运行publishRelease depends on assembleRelease时,可能会创建单独的流程以在发布之前完成装配。并且你传递系统属性来发布taksand而不是汇编任务。

解决方案可能是同时运行两个任务,将参数传递给适当的任务:

./gradlew assembleRelease -Dversion_name=3.0.0 publishRelease

或者按照here

所述设置项目属性而不是系统属性