我正在尝试使用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
版本。只是想确保无法通过Google Play开发者API上传版本名称,还是Gradle Play Publisher的问题?
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
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商店中什么都没有得到(请参见下图)。最佳答案
这不是插件或API的问题。这就是gradle
的工作方式。指示问题的其他答案是here或here。
基本上,问题是gradle
可能创建JVM fork进程来完成任务。因此,在运行publishRelease
(即depends on assembleRelease
)时,可能会创建单独的过程以在发布之前完成组装。并且您传递系统属性来发布任务,而不是组装任务。
解决方案可能是同时运行两个任务,并将参数传递给适当的一个:
./gradlew assembleRelease -Dversion_name=3.0.0 publishRelease
或按here所述设置项目属性而不是系统属性