Ответ 1
Используйте этот код:
if (!getGradle().getStartParameter().getTaskRequests()
.toString().contains("Develop")){
apply plugin: 'com.google.gms.google-services'
}
У меня есть мульти-ароматизированный проект с несколькими встроенными андроидами, и я хочу интегрировать плагин NewRelic. Но я должен применять его только для одного из клиентов, поэтому только для одного продукта. NewRelic использует инструментарий, и плагин генерирует код в других вариантах, если я применил туда плагин, и это нам не разрешено.
Итак, мой вопрос: как я могу использовать команду apply plugin: something
в файле gradle для применения только к одному из моих вкусов?
Используйте этот код:
if (!getGradle().getStartParameter().getTaskRequests()
.toString().contains("Develop")){
apply plugin: 'com.google.gms.google-services'
}
def fl
Инициализировать переменную в вас Ароматизаторы (и/или сборки)
productFlavors {
freeFlavour {
(...)
fl = "free"
}
paidFlavour {
(...)
fl = "paid"
}
}
Использовать оператор if -
if (fl == "free") {
apply plugin: something
}
Я нашел решение, но пока это не лучшее. Поэтому я не уверен, что то, что я хотел сделать изначально, возможно. Оценка файла 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