studio - Android/Gradle: aplica condicionalmente el complemento según el tipo de compilación
flavor android (4)
Me gustaría hacer algo como (pseudo código):
if (BuildType == "release"){
apply plugin: ''testfairy''
} else if (BuildType == "debug"){
apply plugin: ''io.fabric''
}
La idea es que, según el tipo de compilación, aplique (o no) un complemento. Cómo hacerlo ?
Podrías hacer algo como esto en tu build.gradle
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
apply plugin: ''testfairy''
}
debug{
apply plugin: ''io.fabric''
}
}
Basado en Stefan Oehme , un desarrollador core de Gradle, dijo :
Los complementos no se pueden aplicar solo a "parte de su proyecto". Ellos son aplicados o no. ¿Cuál es el caso de uso en el que esto se convierte en un problema para usted?
Entonces, la respuesta es que esto no es posible . He expuesto mis casos de uso cuando esto se convierte en un problema y veré lo que dice al respecto.
Aquí hay una solución alternativa que utilicé. La idea es introducir una variable Env y solo aplicar el complemento en algún env específico.
if (System.getenv("PROJECT_ENV") == "Release") {
apply plugin: ''your plugin''
}
¿Recuerdas los perfiles de maven? Puedes hacer algo similar usando este fragmento que fue tomado prestado de Gradle-furia
en su archivo de compilación if (project.hasProperty(''profile'') && project.profile.split('','').contains("ci")) { //do something }
luego ejecútelo cuando gradlew -Pprofile=ci
Hay un ejemplo completo aquí https://github.com/gradle-fury/gradle-fury/blob/develop/build.gradle
Descargo de responsabilidad, yo trabajo en gradle-furia. para la ciencia