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

为每个Android Studio Gradle构建类型复制不同的配置文件,android,gradle,android-studio,Android,Gradle,Android Studio,我正要从ant切换到gradle作为我的Android构建系统。我无法解决的一个问题是,每个构建类型使用不同的配置文件 在项目根目录中,有一个文件夹config,其中包含一个调试文件和一个发布版本文件。生成项目时,应将相应的文件复制到资源文件夹中 Simplified build.gradle: android { buildTypes { debug { minifyEnabled false // copy config

我正要从ant切换到gradle作为我的Android构建系统。我无法解决的一个问题是,每个构建类型使用不同的配置文件

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

Simplified 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

第三步:啤酒


调试生成将拉入文件的
Debug
版本。发布版本将拉入文件的
Release
版本。没有混乱,没有大惊小怪。

或者,
src/main/res/values/config.xml中的调试版本作为所有非发布版本的默认版本。@ianhanniballake:是的,我可能也会这样设置,但我想更接近OP的原始设置。我从eclipse导入了该项目,所以我仍然保留了旧的结构。我使用
sourceset{main{res.srcDirs=['res']…
。我试图在
res/release/values/config.xml
中添加发布配置,但这似乎不起作用。有没有一种方法可以在不改变整个项目结构的情况下实现这一点?@SimonSays:in
sourceset{}
中可以使用类似
debug.setRoot('build-types/debug')的语句
release.setRoot('build-types/release'))
来指示那些生成类型的源代码集所在的位置。我实际上从未尝试过将文件放在那里,但原则上,考虑到上面的代码,
生成类型/debug/res/values/config.xml
生成类型/release/res/values/config.xml
会起作用。@SimonSays:进一步思考后,您可能会更好地服务于ed同意ianhanniballake的建议:将调试版本的
config.xml
放在正常位置(
res/values/config.xml
),发行版位于
构建类型/
位置。由于Eclipse不知道这些构建类型源集,它需要一个版本的
config.xml
供自己使用,而调试版本将是最安全的答案。