简体   繁体   English

Android应用程序名称取决于buildType和flavor Gradle

[英]Android app name depends on buildType and flavours Gradle

Below is an extract from my gradle source code. 以下是我的gradle源代码的摘录。 What I want to achieve is to add suffix to app name when buildType.debug is executed. 我想要实现的是在执行buildType.debug时为app name添加后缀。 I tried the following code, but variables are in gradle assigned in sequence as they are written in file and not as task order. 我尝试了以下代码,但变量按顺序分配,因为它们是在文件中写入而不是作为任务顺序。 So in the example below buildVariant variable will always be equal to Release. 因此,在下面的示例中,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
    }
}

It was a really interesting puzzle to solve, so thanks for the question! 这是一个非常有趣的难题,所以谢谢你的问题!

Here what you can do: 在这里你可以做什么:

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 {
}

As a result, it'd print the app name "FlavorA_debug", "FlavorB_release", etc. 结果,它打印应用程序名称“FlavorA_debug”,“FlavorB_release”等。

(NB! I ran it with gradle classpath 'com.android.tools.build:gradle:1.3.0' - works great, though I didn't try with older versions) (注意!我用gradle classpath'com.android.tools.build:grad:1.3.0'运行它 - 效果很好,虽然我没有尝试旧版本)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM