在Java中使用Gradle Play Publisher的版本名称覆盖

时间:2018-12-17 14:06:49

标签: android android-gradle

Gradle Play发布者可以让您override在发布到Play商店之前使用版本名称。

play {
// ...
  resolutionStrategy = "auto"
  outputProcessor { // this: ApkVariantOutput
    versionNameOverride = "$versionNameOverride.$versionCode"
}

}

是否可以在Java代码中使用versionNameOverride的值?我们使用versionName属性在应用程序的“关于”页面中显示版本名称。 GPP更新了versionNameOverride值,因此Play商店列表显示了正确的版本号,但是应用程序的“关于”页面始终显示基于versionName的不同版本号。

1 个答案:

答案 0 :(得分:0)

可以像这样使用versionNameOverride

outputProcessor { output ->
    output.versionNameOverride = output.versionNameOverride + "." + output.versionCode
    def versionPropertyFile = file "version.properties"
    def versionProperties = new Properties()
    versionProperties.setProperty('versionCode', "$output.versionCode")
    versionProperties.setProperty('versionName', output.versionNameOverride)
    versionPropertyFile.withWriter { versionProperties.store(it, "Generated by the outputProcessor for the play plugin during publishing.") }
}

但是,如果您想在应用中显示versionName,它将更易于使用

try {
    PackageInfo pInfo = 
context.getPackageManager().getPackageInfo(getPackageName(), 0);
    String version = pInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

您的应用确实显示了错误的值的原因可能是您的应用使用的是BuildConfig。但是那里的versionCodeversionName并没有反映出通过versionNameOverride设置的内容,而是反映了构建过程中的值。