我在Android Studio 3.1.3中具有简单的资产处理gradle任务prepare_assets。它链接到preBuild任务:
ObjectEqualityComparer<T>
现在,对于不同分辨率的版本,我有几种风格,我想让prepare_assets知道要处理的资产。也许我不了解Gradle的想法,但我不明白如何实现这一点:我试图在配置阶段设置变量
preBuild.dependsOn(prepare_assets)
但是当我在任务中读取变量时,它总是相同的。
答案 0 :(得分:0)
在口味部分声明中:
all { flavor ->
task("${flavor.name.capitalize()}_prepare_assets") {
println "*** conf TEST for ${flavor.name.capitalize()}***"
doLast {
println "*** action TEST ${flavor.name.capitalize()}***"
if (flavor.name.equals("fullhd"))
{
//WARNING: to call copy, javaexec closures here use project.copy and project.javaexec!
}
else
{
...
}
}
}
}
在文件底部,为运行时创建的所有类型的android任务添加依赖项:
tasks.whenTaskAdded { theTask ->
if (theTask.class.name.contains("AppPreBuildTask_Decorated"))
{
for (Iterator iterator = android.productFlavors.iterator(); iterator.hasNext();) {
String flv_name = iterator.next().name.capitalize();
if (theTask.name.contains(flv_name+"Debug") || theTask.name.contains(flv_name+"Release"))
theTask.dependsOn "${flv_name}_prepare_assets";
}
}
}