Gradle: pasar los parámetros a `apply from: <file>`

Me gustaría poner un gradle código de secuencia de comandos gradle común en el archivo .gradle compartido. Entonces, puedo reutilizarlo usando la apply from: declaración.

La pregunta es si es posible pasar parámetros a la secuencia de comandos aplicada? Por ejemplo, me gustaría reutilizar la siguiente placa de la caldera:

 apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'org.robolectric' configurations { apt } android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } 

El problema está aquí: apply plugin: 'com.android.application' . Me gustaría volver a usar este código para proyectos de aplicaciones o proyectos de biblioteca de android. Así que necesito algún parámetro para decidir qué plugin aplicar:

 // assuming <isApplicationProject> - is a script parameter if (isApplicationProject) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' } 

Por supuesto, sólo puedo definir algunas propiedades a nivel de proyecto en este caso en particular, pero me gustaría saber si es posible pasar los parámetros de script invocación

One Solution collect form web for “Gradle: pasar los parámetros a `apply from: <file>`”

  1. Apply from: is line include <> no se pueden pasar los parámetros.
  2. Sin embargo se ejecuta en el mismo contexto y por lo tanto en el mismo proyecto, por lo que puede hacer algo de: ext.isUsingApp=true; apply from: 'xxx' ext.isUsingApp=true; apply from: 'xxx'
  3. Si esa es la única diferencia que le aconsejo hacer algo de lo siguiente:
    Myinclude.gradle:

     apply plugin: 'com.neenbedankt.android-apt' apply plugin: 'org.robolectric' configurations { apt } android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } 

Entonces en tu aplicación build.gradle:

 apply plugin: 'com.android.application' apply from: '../includes/myinclude.gradle' 

Entonces en tus libs build.gradle:

 apply plugin: 'com.android.library' apply from: '../includes/myinclude.gradle' 

Para un booleano simple no hay necesidad de crear parámetro.

  • Gradle build: La ejecución falló para la tarea ': app: lint'
  • Ejecución fallada para la tarea: app: compileDebugJavaWithJavac en Android Studio
  • Gradle no puede resolver todas las dependencias, url personalizado maven en la biblioteca
  • Proyecto de actualización de Android-Studio con cambios de build.gradle
  • Android Studio: migrar complejo build.xml a build.gradle
  • Gradle - biblioteca duplicados en dependencias
  • './gradlew -Dtest.single = SimpleTest test' ejecuta todas las pruebas que tengo
  • No se pudo actualizar el proyecto Gradle
  • ¿Depurar un proyecto Java basado en gradle en Android Studio?
  • No se pudo encontrar la propiedad 'outputFile' en com.android.build.gradle.internal.api.ApplicationVariantImpl
  • Publicar los resultados de Lint a Sonar usando Gradle
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.