Java 解析每个生成类型的应用程序标签
我想解决每个构建类型和风格的manifest占位符依赖关系。例如,我有Java 解析每个生成类型的应用程序标签,java,android,groovy,gradle,Java,Android,Groovy,Gradle,我想解决每个构建类型和风格的manifest占位符依赖关系。例如,我有 productFlavors { dev { manifestPlaceholders = ['applicationLabel': 'DevFlavor'] } prod { manifestPlaceholders = ['applicationLabel': 'ProdFlavor'] } .....
productFlavors {
dev {
manifestPlaceholders = ['applicationLabel': 'DevFlavor']
}
prod {
manifestPlaceholders = ['applicationLabel': 'ProdFlavor']
}
.....
buildTypes {
debug {
def old_name = manifestPlaceholders.get('applicationLabel'); // every time is null
// def old_name = productFlavors.dev.manifestPlaceholders.get('applicationLabel'); // ITS OK, but not dynamic
manifestPlaceholders = [applicationLabel: old_name + ' Dev']
}
是否有任何解决方案可以将“Dev”后缀添加到调试产品风格中
感谢您的帮助仅为我的上述评论提供一个工作示例:
defaultConfig
中声明一个将成为应用程序名称的resValue
。(注意:如果选择将其命名为app\u name
,请确保从strings.xml
文件中删除原始的app\u name
属性,否则会发生冲突。)
productFlavors
设置为您已经做过的设置。如果您可以仅将应用程序名称与味道名称合并,或者提供显式的resValue
,这将覆盖defaultConfig
中的值,则可以将其保留为空
productFlavors {
dev {
// resValue 'string', 'app_name', 'MyAppDevFlavor'
}
prod {
// resValue 'string', 'app_name', 'MyAppProdFlavor'
}
}
resValue
的名称
android.applicationVariants.all { variant ->
// get app_name field from defaultConfig
def appName = variant.mergedFlavor.resValues.get('app_name').getValue()
// concat new App name with each flavor's name
appName = "${appName}"
variant.productFlavors.each { flavor ->
appName += " ${flavor.name}"
}
// optionally add buildType name
appName += " ${variant.buildType.name}"
// your requirement: if buildType == debug, add DEV to App name
if(variant.buildType.name == "debug") {
appName += " DEV"
}
// set new resVale
variant.resValue 'string', 'app_name', appName
}
app\u name
字段:
<application
...
android:label="@string/app_name"
...
>
如上所述,请确保从
strings.xml
中删除默认的app\u name
属性。如果您想为每种风格/构建类型调整应用程序的标签,可能有更好的方法,通过resValue/config build字段,例如,将resValue字符串设置为app\u name
,在applicationVariants.all中更改它,并在清单中将其用作应用程序标签。这个答案是否提供了一些帮助?何时运行重命名逻辑?我正在记录它并运行它,我可以看到修改后的名称,但apk始终具有原始名称。我把它放在defaultConfig部分。
<application
...
android:label="@string/app_name"
...
>