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?
- LintOptions para la herramienta de compilación experimental de Gradle en Android Studio 1.3
- Gradle (plugin experimental androide) ignora una dependencia del proyecto
- Gradle-experimental: 0.1.0 buildConfigField
- Android gradle-experimental con enlace de datos no funciona?
- No se encontró el método DSL de Gradle: 'error proporcionado ()' con gradle experimental
Biblioteca:
android.productFlavor { create ('flavor') { ... } }
Proyecto:
... dependencies { compile project(':mylibrary') }
- Problema al migrar a Gradle Experimental 2.5: ningún método AndroidConfig
- Mezcla de complementos androides de gradle y gradle-experimental
- Gradle experimental incluir directorios de archivos a través de la directiva srcDir srcFile
- La compilación de código nativo de Android Studio es lenta
- Mapa de progreso de Android gradle experimental plugin
- ¿Cómo construir el módulo de NDK usando gradle experimental plugin?
- En Android Studio 2.1.3 ¿No funciona el gradle experimental?
- Cómo utilizar bibliotecas extra * .so en Android Studio y NDK
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