Android Studio Gradle: как получить вариант / вариант в задаче процессора пользовательских ресурсов - PullRequest
0 голосов
/ 14 октября 2018

У меня есть простая задача подготовки активов в Android Studio 3.1.3.Это связано с задачей preBuild:

preBuild.dependsOn(prepare_assets)

Теперь у меня есть несколько вариантов для версий с разным разрешением, и я хочу сообщить prepare_assets, какие ресурсы обрабатывать.Может быть, я не понимаю идею Gradle, но не могу понять, как этого добиться: я пытался установить переменную в фазе конфигурации

 applicationVariants.all { variant ->
        buildType = variant.buildType.name // sets the current build type
    }

, но когда я читал переменную в моей задаче, это всегдато же самое.

1 Ответ

0 голосов
/ 15 октября 2018

В разделе ароматов объявление:

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";
            }
    }
}
...