基于buildType在android项目中更改.properties文件和settings.gradle文件

时间:2015-11-22 07:15:29

标签: android gradle android-gradle

我有一个android gradle项目,我有两个buildTypes:QA和prod。我想根据构建类型更改.properties文件中的属性。我还想根据buildType更改settings.gradle文件中的一个值。我是android和gradle的新手,请原谅我,如果这是一个非常基本的问题。

这是我的.properties文件:

build_number=3.1-SNAPSHOT
version_number=3.1.0
environment_name=prod //this needs to changed to environment_name=qa in qa environment

这是我的settings.gradle文件:

rootProject.name = 'tom-android-prod' //this needs to changed to rootProject.name = 'tom-android-qa' in qa environment

这是我的build.gradle文件:

apply plugin: 'com.android.application'

buildscript {
    repositories {
        jcenter()

    }

    dependencies {

    classpath 'com.android.tools.build:gradle:1.3.1'

    }
}


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        multiDexEnabled true
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }

    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
    }

}

dependencies {
....
}

1 个答案:

答案 0 :(得分:1)

我不确定你的目标是什么environment_name因为它没有被使用,但想象你需要为特定的构建设置一个变量然后你可以做这样的事情:

ext {
    environment_name = null
}
android {
    // other stuff...
    buildTypes {
        qa {
            project.ext.environment_name = "qa"
        }
        prod {
            project.ext.environment_name = "prod"
        }
    }
}

// later you can use the variable like this
println "Hello variable: $project.ext.environment_name"

使用buildTypes不需要修改rootProject.name = 'tom-android'。或者您可以以相同的方式使用productFlavors闭包...取决于您为每个构建配置明确指定的内容。