为每个Android Studio Gradle构建类型复制不同的配置文件
我正要从ant切换到gradle作为我的Android构建系统。我无法解决的一个问题是,每个构建类型使用不同的配置文件 在项目根目录中,有一个文件夹为每个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
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:insourceset{}
中可以使用类似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
供自己使用,而调试版本将是最安全的答案。