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

  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.

  • Butter Knife - Inyectar en la librería de Android
  • Obtener Android gradle plugin y checkstyle trabajando juntos / uso de la línea de comandos
  • Cómo personalizar gradle android test html report
  • ¿Cómo funciona la publicación de las librerías android que pueden ser importadas fácilmente por otras personas?
  • Android: Skip Gradle "testClasses" tarea para un proyecto de dependencia
  • Android Studio ignorar --core-library flag
  • Appcompat v7 no se introduce en el proyecto
  • Wear App y con tipo de compilación personalizado con applicationIdSuffix
  • ¿Cómo encontrar la versión de la biblioteca de Gradle Dependency? Android Studio
  • ¿Cómo emular a los productFlavors de Android en un módulo de Java gradle puro?
  • Android / gradle: no puede utilizar el repositorio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.