gpt4 book ai didi

android - 在 Android gradle 构建开始时根据风格复制文件

转载 作者:行者123 更新时间:2023-11-29 01:11:48 26 4
gpt4 key购买 nike

我在 Android 应用程序的 gradle 文件中有两种风格:

productFlavors {
production { }
devel { }
}

我有一个配置文件,在构建项目时,我需要在运行任何其他任务之前将其复制到 app/ 目录。这是每个口味的配置文件,即:

etc/configuration-production.json
etc/configuration-devel.json

在构建 devel 时,我基本上需要这样做:

cp etc/configuration-devel.json app/configuration.json

构建产品时:

cp etc/configuration-production.json app/configuration.json

我如何在 gradle 中自动执行此操作?此副本需要在执行构建时首先发生,因为某些任务需要 app/configuration.json 文件存在。

我试过:

task copyConfig(type: Copy) {
from "etc/configuration-${Flavor.name}.json"
into "app/configuration.json"
}

build.dependsOn copyConfig

但是没有用。 copyConfig 任务未运行。

最佳答案

您可以将以下内容添加到您的 app build.gradle 以将您的文件从 etc/configuration-XXX.json 复制到 app/configuration.json 在各自任务的第一个语句中 assembleDevel.* & assembleProduction.* :

def cp(copyType) {
println "copying " + "../etc/configuration-" + copyType + ".json"
copy {
from "../etc/configuration-" + copyType + ".json"
into '.'
rename { String fileName ->
fileName.replace("configuration-" + copyType + ".json", "configuration.json")
}
}
}

tasks.whenTaskAdded { task ->
if (task.name ==~ /assembleDevel.*/) {
task.doFirst() {
cp("devel")
}
} else if (task.name ==~ /assembleProduction.*/) {
task.doFirst() {
cp("production")
}
}
}

这是必需的配置:

app/
├── build.gradle
etc/
├── configuration-production.json
└── configuration-devel.json

如果 assembleDevel.*/assembleProduction.* 不是您正在寻找的任务,您可以将它们替换为例如:prepareDevel.*Dependencies/prepareProduction.*Dependencies

关于android - 在 Android gradle 构建开始时根据风格复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42450615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com