我想确定发布的不同版本的开发版本。是否可以将应用的版本名称附加到应用名称或将版本名称显示为应用名称以用于开发版本,以便我可以从启动器本身识别版本。
有没有更好的方法来做到这一点?
答案 0 :(得分:1)
是否可以将应用的版本名称附加到应用名称或显示 versionname作为开发构建的appname吗?
是。你可以做的是 build.gradle 声明def versionName = "1.0"
android {
compileSdkVersion 24
buildToolsVersion "23.0.3"
def versionName = "1.0"
defaultConfig {
applicationId "..."
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName versionName
}
productFlavors {
flavor1{
resValue "string", "app_name", "YourAppName"+versionName
}
}
}
注意:从string.xml
删除 app_name ,否则它将通过重复资源的例外。
答案 1 :(得分:1)
游戏的后期,但找到了一种方法,可以将应用程序名称保留在 strings.xml 中,使其能够为发布版本提供良好的本地化,同时能够为调试版本添加后缀。
与N J的答案类似,为版本名称定义变量,然后使用manifestPlaceholders
来增加清单中定义的应用名称。
在 strings.xml :
中<string name="app_name">My app</string>
在 build.gradle 中:
def versionName = '1.0'
android {
...
defaultConfig {
...
versionName versionName
manifestPlaceholders.appName = "@string/app_name"
}
buildTypes {
debug {
...
manifestPlaceholders.appName = "My app $versionName"
}
...
}
}
然后在 AndroidManifest.xml :
<application
...
android:label="${appName}"
...
如果您的应用名称中有味道并且需要风味和构建类型信息,则无法在buildTypes.debug
中设置占位符,而是需要求助于变体API。这可能如下所示:
applicationVariants.all { variant ->
final buildTypeName = variant.buildType.name
final flavorName = variant.flavorName
switch (buildTypeName) {
// release name is set via defaultConfig, but could also be set here
case 'debug':
variant.mergedFlavor.manifestPlaceholders.appName = "MyApp $versionName $flavorName $buildTypeName"
break
}
}