Variante de varios estilos de Android Gradle

Estoy tratando de construir un proyecto basado en gradle con grupos de sabor. Los grupos son "mercado" y "costo". El problema radica en la gestión de la dependencia.

Por ejemplo, me gustaría hacer algo como compileFreeGplay 'com.google.android.gms:play-services:5.0.89' , que no es (aún) compatible con el complemento de Android para gradle.

Así que he utilizado una solución basada en esta pregunta SO: https://stackoverflow.com/a/22584908/2904294

La solución funciona y llena las siguientes variables globales correctamente dependiendo de la variante que se está construyendo:

 ext { buildType = "" groupCost = "" groupMarket = "" } 

Esta es la sección `dependencies':

 dependencies { compile 'com.android.support:support-v4:20+' compile 'com.android.support:appcompat-v7:20+' compile 'com.google.android.gms:play-services:5.0.89' println groupMarket + ", " + groupCost if (groupMarket == 'gplay' && groupCost == 'free') { compile files('C:\\Program Files (x86)\\adsSdks\\MobileCoreLibrary\\mobilecore_V0.9.4.jar') println 'inside!!' } else if (groupMarket == 'amazon' && groupCost == 'free') { compile files('C:\\Program Files (x86)\\adsSdks\\Apps-SDK\\Android\\Ads\\lib\\amazon-ads-5.4.78.jar') } } 

Los printlns se muestran correctamente y el código introduce los ifs como se esperaba. Sin embargo, la biblioteca todavía no está incluida en el proyecto.

Funciona perfectamente si la ifs fuera de los ifs así:

 dependencies { compile 'com.android.support:support-v4:20+' compile 'com.android.support:appcompat-v7:20+' compile 'com.google.android.gms:play-services:5.0.89' compile files('C:\\Program Files (x86)\\adsSdks\\MobileCoreLibrary\\mobilecore_V0.9.4.jar') } 

¿Puede alguien con más experiencia de Gradle señalar lo que me falta aquí? ¡Gracias!

  • Obtener el nombre del paquete de la variante de aplicación en el complemento gradle
  • No zipAlignEnabled en gradle2.2.0-alpha3
  • Android Studio 2.1.1: "no se detectaron dispositivos usb ni emuladores en ejecución"
  • ¿Cómo puedo comprobar qué versión de plugin de Gradle Android se utiliza en mi proyecto?
  • Android: No se pudo encontrar ni cargar la clase principal org.gradle.wrapper.GradleWrapperMain
  • Diferencia entre el funcionamiento de pelusa a través del menú de Android Studio y la línea de comandos de gradlew
  • Configurar Gradle para ejecutar un paso de compilación personalizado antes de iniciar la compilación
  • EXCEPCIÓN INESPERADA DE SUPERIOR NIVEL: com.android.dex.DexException: Múltiples archivos dex definen
  • Firma de android apk con gradle-experimental: 0.2.0
  • No se pudo actualizar el proyecto Gradle después de la actualización de Android Studio
  • Gradle: Error: más de una biblioteca con el nombre del paquete 'com.google.android.gms'
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.