我正在尝试使用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商店中没有得到任何东西(见下图)。
答案 0 :(得分:0)
这不是插件或API的问题。这就是gradle
的工作原理。表明问题的其他答案为here或here。
基本上问题是gradle
可能会创建一个JVM fork进程来完成任务。因此,在运行publishRelease
depends on
assembleRelease
时,可能会创建单独的流程以在发布之前完成装配。并且你传递系统属性来发布taksand而不是汇编任务。
解决方案可能是同时运行两个任务,将参数传递给适当的任务:
./gradlew assembleRelease -Dversion_name=3.0.0 publishRelease
或者按照here
所述设置项目属性而不是系统属性