解析每种构建类型的应用程序标签
我想为每种构建类型和风格解析manifestPlaceholders依赖项。 例如,我有
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_name
,请确保从strings.xml
文件中删除原始app_name
属性,否则它将发生冲突。)defaultConfig { // applicationId, versionCode, etc. (...) // define your base Applications name here resValue 'string', 'app_name', 'MyApp' }
-
像你一样设置你的产品。 如果您可以仅使用flavor的名称连接App的名称,则可以将它们留空,或者提供显式的
resValue
,它将覆盖defaultConfig
的值。productFlavors { dev { // resValue 'string', 'app_name', 'MyAppDevFlavor' } prod { // resValue 'string', 'app_name', 'MyAppProdFlavor' } }
-
在gradle配置时配置
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 }
-
在AndroidManifest中,设置
app_name
字段:
如上所述,请务必从strings.xml
删除默认的app_name
属性