Модификация build.gradle для определенного аромата - PullRequest
0 голосов
/ 10 октября 2019

Я изменяю build.gradle с конкретным кодом для одного аромата. В частности, я изменяю внутри этого цикла

 project.android.applicationVariants.all { variant ->

Лучше всего оборачивать пользовательский код для johndoe аромата в

if (variant.flavorName.toLowerCase().contains("johndoe")) {

... илиЕсть ли недостатки в этом решении?

Ответы [ 2 ]

2 голосов
/ 19 октября 2019

Короче да. Android-документация предлагает использовать его для индивидуальной настройки варианта, когда имеется несколько измерений вариантов и комбинаций типов сборки, как в их примере, который устанавливает разные коды версий для разных вариантов abi. Его можно легко использовать для выполнения чего-либо, как вы предлагаете.

Одна вещь, на которую стоит обратить внимание, это то, что делает «пользовательский код». Пользовательский код может настраивать сборку или может потребоваться добавить дополнительные шаги в процессе сборки или даже оба! Если это связано с конфигурацией, то «пользовательский код» должен выглядеть как в примере выше. Однако если он хочет добавить дополнительную обработку или логику сборки, то это должно быть сделано в форме Gradle Task, как показано ниже:

....
applicationVariants.all { variant ->
    if (variant.buildType.name == "release") {
        task("customReleaseLogic") {
            description = "Runs some custom release logic"
            // run some custom release logic 
        }
        variant.assemble.dependsOn("customReleaseLogic")
    }
}
....

Таким образом, сборка Gradle будет знать, что естьдополнительный шаг должен быть сделан при создании проекта.

1 голос
/ 10 октября 2019

Не разработчик Android, но это в основном то, что другие крупные проекты Gradle делают для настройки конкретных subprojects (варианты в вашем случае). Примеры:

Если вы не заметите, что ваши сборки медленнее, чем выше, то все в порядке.

Возможно, вы также можете использовать Сканирование сборки, чтобы лучше понять конфигурацию Gradle: https://guides.gradle.org/creating-build-scans/

...