¿Cómo podemos crear una sola biblioteca combinando diferentes módulos?

Quiero construir una sola biblioteca de mi proyecto, el proyecto utiliza muchas dependencias y recursos. Si cardview se importa como un jar, no tendrá los recursos con él, pero cuando se añade como aar, se agrega como otro módulo. Así que no puedo combinarlo en una sola biblioteca de aar. No quiero enviar mi proyecto al repositorio. ¿Cómo puedo construir la biblioteca, gracias de antemano!

Android-fat-aar debe manejar este problema para usted.

Tienes que

 apply from: 'fat-aar.gradle' 

Desde el repositorio de GitHub y luego reemplazar sus dependencias de compilación con una dependencia incrustada . Así que en lugar de definir un módulo otherModule dependencia como

 dependencies { compile project(':otherModule') } 

Solo tendrías que definirlo como

 dependencies { embedded project(':otherModule') } 

La configuración de compilación depende de la configuración incrustada , por lo que tendría el mismo comportamiento localmente como antes.

Pero al final esta es una configuración problemática, especialmente si usted quiere usar algunas de las bibliotecas de soporte de Android. Lo más probable es que se enfrente a problemas de duplicación.

Si está creando esta configuración para trabajos sin conexión, considere utilizar un repositorio Local Maven

 repositories { mavenLocal() } 

Con una copia de los artefactos de la biblioteca que necesita usar. O tal vez incluso un repositorio gestionado personalmente para usted y cualquier otra persona que lo necesite.

¿Sabe que puede utilizar un módulo como una biblioteca (fuentes, no compilar un AAR)? Esto significa que su proyecto de biblioteca puede utilizar todas las dependencias de gradle. Aquí hay un ejemplo con un proyecto de biblioteca llamado 'MyApiLibrary' que será un módulo autónomo llamado 'api'

Primero crea tu biblioteca como un nuevo proyecto (con el nombre del módulo 'api' para este ejemplo, pero el nombre puede ser lo que quieras). En el archivo gradle para ese módulo de biblioteca, use el complemento de biblioteca en el que normalmente utilizaría el complemento de la aplicación

 apply plugin: 'com.android.library' //not apply plugin: 'com.android.application' 

También asegúrese de que el módulo de biblioteca no declare un defaultConfig de applicationId en el defaultConfig de su archivo gradle. A continuación, declare todas las dependencias de la biblioteca como lo haría normalmente.

A continuación, en su proyecto de consumo de importación de la biblioteca, incluyendo lo siguiente en settings.gradle :

 //this first line declares a pseudonym to refer to the library module include ':api' //this second line explains where the pseudonym links to //(the path to the module directory of the library project, relative to the root dir of the current project) project(':api').projectDir = new File('../MyApiLibrary/api/') 

En el archivo gradle de su módulo de consumo, haga referencia al proyecto como una dependencia:

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

Ahora todo dentro de su proyecto principal puede acceder a todas las clases y dependencias importadas del proyecto Biblioteca

Si lo hago bien, usted tiene un proyecto de varios módulos, que tiene varios proyectos de biblioteca, y desea compilar un único aar que abarca sus módulos y sus dependencias. Si es así:

-Instalar maven. -Aplique el complemento gradle maven ( https://github.com/dcendents/android-maven-gradle-plugin ) a sus módulos. Utilice la tarea de instalación para instalar los módulos como bibliotecas únicas.

-Cree un nuevo módulo, que importa todas las versiones instaladas de sus bibliotecas individuales, y sus dependencias. Aplique el complemento de sombra de Android ( https://github.com/zawn/android-shade-plugin , documentación aquí: http://imperceptiblethoughts.com/shadow/ ) a este módulo. La salida de que será un uber-aar, y aar que contiene los módulos de la biblioteca, y sus dependencias. Puede instalarlo en su instancia de maven local o colocar el aar en el directorio libs de sus aplicaciones.

  • Ejecutar una tarea de gradle independiente personalizada en android studio
  • "Error: No se pudo completar la ejecución de Gradle. Causa: El daemon de generación de Gradle desapareció inesperadamente (puede haber sido destruido o puede haber caído) "
  • Gradle: pros / contras añadiendo dependencias
  • Varias versiones de la misma biblioteca
  • Android Studio marca R en rojo con el mensaje de error "no se puede resolver el símbolo R", pero la generación tiene éxito
  • Android Studio Gradle construye lento después de un proyecto añadido a Git
  • Actualización del SDK de Aviary en Android
  • Dependencia de la biblioteca de Android Gradle
  • El complemento de Android Studio es demasiado antiguo
  • Sonar Android Lint sin problemas encontrados
  • De compilación ./gradlew falla con TypeSystem.getUnannotatedType
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.