我在Android Studio 3.1.3中有简单的资产处理gradle任务prepare_assets。它链接到预构建任务:
preBuild.dependsOn(prepare_assets)
现在,我为不同的分辨率版本提供了几种风格,我想prepare_assets知道要处理哪些资产。也许我不明白 Gradle 的想法,但我不明白如何实现这一目标:我试图在配置阶段设置变量
applicationVariants.all { variant ->
buildType = variant.buildType.name // sets the current build type
}
但是当我在任务中读取变量时,它总是相同的。
在口味部分声明中:
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";
}
}
}