【问题标题】:Android app name depends on buildType and flavours GradleAndroid 应用名称取决于 buildType 和风味 Gradle
【发布时间】:2016-03-05 06:28:49
【问题描述】:

以下是我的 gradle 源代码的摘录。我想要实现的是在执行 buildType.debug 时为应用名称添加后缀。我尝试了以下代码,但变量是按顺序分配的,因为它们是写入文件而不是任务顺序。所以在下面的例子中 buildVariant 变量总是等于 Release。

{
def buildVariant = ""   
buildTypes {
    debug {
        manifestPlaceholders = [showDebug: 'true']
        buildVariant = " (DEBUG)"
    }
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        manifestPlaceholders = [showDebug: 'false']
        signingConfig signingConfigs.myConf
        buildVariant = " Release"
    }
}    
productFlavors {

    flavour1{
        resValue 'string', 'app_name', 'Flavour1'+buildVariant
    }
    flavour2{
        resValue 'string', 'app_name', 'Flavour2'+buildVariant
    }
    flavour3{
        resValue 'string', 'app_name', 'Flavour3'+buildVariant
    }
}

【问题讨论】:

    标签: android groovy gradle build


    【解决方案1】:

    这是一个非常有趣的谜题,非常感谢您的提问!

    你可以做什么:

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.0"
    
        defaultConfig {
            ....
        }
        buildTypes {
            debug {
            }
    
            release {
            }
        }
    
        productFlavors {
            FlavorA {
            }
    
            FlavorB {
            }
        }
    
        applicationVariants.all { variant ->
            variant.resValue "string", "app_name", '"' + variant.productFlavors.get(0).name + '_' + variant.buildType.name + '"'
        }
    
    }
    
    dependencies {
    }
    

    因此,它会打印应用名称“FlavorA_debug”、“FlavorB_release”等。

    (注意!我使用 gradle classpath 'com.android.tools.build:gradle:1.3.0' 运行它 - 效果很好,虽然我没有尝试使用旧版本)

    【讨论】:

    • 感谢您的回复。这块 variant.productFlavors.get(0).name 返回风味名称?如果我想要一个自定义风味名称怎么办?假设 flavor1 的应用名称为 MyApp?实际上,我的目标是仅将 Debug 后缀添加到调试变体中。如果构建变体已发布,我只想使用自定义风味的名称。
    • @urgas9 我明白了,要使后缀仅适用于“Debug” buildType,您可以像这样修改 applicationVariants.all 函数: applicationVariants.all { variant -> variant.resValue "string", " app_name", '"' + variant.productFlavors.get(0).name + ((variant.buildType.name=="debug")? " debug" : "") + '"' } 对于每个版本构建它' d 将其 Flavor 写为应用名称和所有调试版本 - Flavor Name + "Debug" :-)
    • 谢谢,自定义风味名称怎么样?问题是,我在应用程序名称中使用了一些特殊字符(š,ž,..),我不想将它们包含在风味名称中(我不确定 gradle 是否支持),因此我想使它们成为自定义字段
    • 刚刚检查了“Flavoršž” - 工作正常。所以就试一试吧
    • 哦,不幸的是,这个字符对于 gradle 来说太多了:Å。但是如果我直接将它保存为 resValue 'string', 'app_name', 'Å'+buildVariant
    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多