Android Studio Gradle:如何在自定义资产处理器任务中获取变体/风格



我在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";
}
}
}

最新更新