Gradle Play发布者可以让您override在发布到Play商店之前使用版本名称。
play {
// ...
resolutionStrategy = "auto"
outputProcessor { // this: ApkVariantOutput
versionNameOverride = "$versionNameOverride.$versionCode"
}
}
是否可以在Java代码中使用versionNameOverride
的值?我们使用versionName
属性在应用程序的“关于”页面中显示版本名称。 GPP更新了versionNameOverride
值,因此Play商店列表显示了正确的版本号,但是应用程序的“关于”页面始终显示基于versionName
的不同版本号。
答案 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
。但是那里的versionCode
和versionName
并没有反映出通过versionNameOverride
设置的内容,而是反映了构建过程中的值。