为每个 Android Studio Gradle 构建类型复制不同的配置文件

Copy a different config file for each Android Studio Gradle build type

我正准备从 ant 切换到 gradle 作为我的 Android 构建系统。我无法弄清楚如何解决的一个问题是每种构建类型使用不同的配置文件。

在项目根目录中,有一个文件夹config,其中包含一个用于调试的文件和一个用于发布版本的文件。构建项目时,应将相应的文件复制到资源文件夹中。

简化build.gradle:

android {
    buildTypes {
        debug {
            minifyEnabled false
            // copy config/config_debug.xml to res/values/config.xml
        }
        release {
            minifyEnabled true
            ...
            // copy config/config_release.xml to res/values/config.xml
        }
    }

    ...
}

我尝试过不同的东西,比如

def configFile = 'XXX'
task copyConfigFileTask(type: Copy) {
    println "-> using config file $configFile"
    from 'config/$configFile'
    into 'res/values'
    rename {
        fileName -> 'config.xml'
    }
    outputs.upToDateWhen {
        false
    }
}

assembleDebug.dependsOn {
    copyConfigFileTask { configFile = 'config_release.xml' }
    copyConfigFileTask.execute()
}

但这实际上行不通。真不敢想象这么简单普通的任务用Gradle竟然这么复杂,是吗?

感谢任何帮助!

第 1 步:将调试版本放入 src/debug/res/values/config.xml

第 2 步:将发布版本放入 src/release/res/values/config.xml

第 3 步:啤酒。

调试版本将引入文件的 debug 版本。发布版本将引入文件的 release 版本。没有混乱,没有大惊小怪。