Подтвердить что ты не робот

Как применить плагин только к одному аромату в gradle?

У меня есть мульти-ароматизированный проект с несколькими встроенными андроидами, и я хочу интегрировать плагин NewRelic. Но я должен применять его только для одного из клиентов, поэтому только для одного продукта. NewRelic использует инструментарий, и плагин генерирует код в других вариантах, если я применил туда плагин, и это нам не разрешено.

Итак, мой вопрос: как я могу использовать команду apply plugin: something в файле gradle для применения только к одному из моих вкусов?

4b9b3361

Ответ 1

Используйте этот код:

if (!getGradle().getStartParameter().getTaskRequests()
        .toString().contains("Develop")){
    apply plugin: 'com.google.gms.google-services'
}

Ответ 2

  • Определить переменную - def fl
  • Инициализировать переменную в вас Ароматизаторы (и/или сборки)

        productFlavors {
    
                freeFlavour {
                    (...)
                    fl = "free"
                }
    
                paidFlavour {
                    (...)
                    fl = "paid"
                }
            }
    
  • Использовать оператор if -

    if (fl == "free") { apply plugin: something }

Ответ 3

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

Я использую параметр build из командной строки. Когда этот параметр является истинным, я применяю плагин, когда его даже нет, я также применяю его (для сборки IDE). Я использую Jenkins, поэтому я могу написать этот параметр в задании сборки.

build.gradle файл:

// First we have to attach a task to the project, which will be running first
gradle.projectsEvaluated {
    preBuild.dependsOn(applyNewRelicByProperty)
}

// Then check on the parameter, which comes from the command line
task applyNewRelicByProperty {
    if(!project.hasProperty('compileNewRelic')) {
        // NewRelic on: 'compileNewRelic' property not set, so running from IDE.
        apply plugin: 'newrelic'
    } else if(project.hasProperty('compileNewRelic') && project.getProperties().get('compileNewRelic').equals('true')) {
        // NewRelic on: 'compileNewRelic' property is set and it is 'true'.
        apply plugin: 'newrelic'
    } else {
        // NewRelic off
        println("No NewRelic")
    }
}

И вам нужно запустить конструкцию gradle следующим образом:

assembleYourApp -PcompileNewRelic=true