tools studio now must flavors flavordimensions flavor configurar belong all actualizar android gradle android-gradle build.gradle gradle-plugin

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