Agregue el producto a la experimental Android gradle plugin library

Tengo un proyecto que utiliza el gradle experimental plugin, es decir, 0.2.0 . Cuando no tengo productFlavor , puedo perfectamente integrar un módulo de biblioteca en Android Studio y todo funciona perfectamente. Pero cuando la biblioteca tiene un productFlavor , el proyecto principal de I no encuentra las clases de la biblioteca.

Esta corrección no parece funcionar con el complemento gradle experimental. ¿Alguien tiene alguna idea de cómo hacer que los sabores funcionen con el nuevo complemento?

Biblioteca:

 android.productFlavor { create ('flavor') { ... } } 

Proyecto:

 ... dependencies { compile project(':mylibrary') } 

Esto podría ayudar?

Publicación de la biblioteca

De forma predeterminada, una biblioteca sólo publica su variante de versión. Esta variante será utilizada por todos los proyectos que hacen referencia a la biblioteca, independientemente de la variante que construyan ellos mismos. Esta es una limitación temporal debido a las limitaciones de Gradle que estamos trabajando para eliminar.

Puede controlar qué variante se publica con

 android { defaultPublishConfig "debug" } 

Tenga en cuenta que este nombre de configuración de publicación hace referencia al nombre completo de la variante. Liberar y depurar sólo son aplicables cuando no hay sabores. Si desea cambiar la variante publicada predeterminada mientras usa los sabores, escribiría:

 android {defaultPublishConfig "flavor1Debug" } 

También es posible publicar todas las variantes de una biblioteca. Estamos planeando permitir esto mientras usamos una dependencia normal de proyecto a proyecto (como se muestra arriba), pero esto no es posible en este momento debido a las limitaciones en Gradle (estamos trabajando para arreglarlo también). La publicación de todas las variantes no está habilitada de forma predeterminada. Para habilitarlos:

 android {publishNonDefault true } 

Es importante darse cuenta de que publicar múltiples variantes significa publicar varios archivos aar, en lugar de un único aar que contenga múltiples variantes. Cada envase aar contiene una única variante. Publicar una variante significa hacer que este aar esté disponible como un artefacto de salida del proyecto Gradle. Esto se puede utilizar cuando se publica en un repositorio de maven o cuando otro proyecto crea una dependencia en el proyecto de biblioteca.

Gradle tiene un concepto de defecto "artefacto.Este es el que se utiliza cuando se escribe:

 compile project(':libraries:lib2') 

Para crear una dependencia de otro artefacto publicado, debe especificar cuál utilizar:

 dependencies { flavor1Compile project(path: ':lib1', configuration: 'flavor1Release') flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') } 

Importante: Tenga en cuenta que la configuración publicada es una variante completa, incluyendo el tipo de compilación, y debe hacerse referencia como tal. Importante: Al habilitar la publicación de valores no predeterminados, el complemento de publicación de Maven publicará estas variantes adicionales como paquetes adicionales (con clasificador). Esto significa que esto no es realmente compatible con la publicación en un repositorio de maven. Debe publicar una única variante en un repositorio O habilitar todas las ediciones de configuración para dependencias entre proyectos.

Desde aquí: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

La sintaxis es incorrecta.

Con el plugin experimental (0.2.1) los sabores se definen fuera del bloque android y la sintaxis correcta es android.productFlavors

 model { android { } android.productFlavors { create("flavor") { } } } 

Las cosas son un poco más complejas. He probado en gradle experimental 0.8.0

En la biblioteca que necesita:

 model{ android { ... publishNonDefault true productFlavors { create("flavor1") { } create("flavor2") { } } } } 

En la aplicación que necesitas:

 model { android { ... publishNonDefault true productFlavors { create("flavor1") { } create("flavor2") { } } } } //after the model is closed !! configurations { flavor1DebugCompile flavor1ReleaseCompile flavor2DebugCompile flavor2ReleaseCompile } dependencies { ... flavor1DebugCompile project(path: ':mylibrary', configuration: 'flavor1Debug') flavor1ReleaseCompile project(path: ':mylibrary', configuration: 'flavor1Release') flavor2DebugCompile project(path: ':mylibrary', configuration: 'flavor2Debug') flavor2ReleaseCompile project(path: ':mylibrary', configuration: 'flavor2Release') } 

Ojalá, si se ejecuta completa montar obtendrá 2 apk, uno para cada sabor. He utilizado "./gradlew construir" de un cmd y los tengo. Tenga en cuenta que para su lib, obtendrá un AAR para cada sabor también

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.