¿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!

3 Solutions collect form web for “¿Cómo podemos crear una sola biblioteca combinando diferentes módulos?”

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.

  • ¿Qué significa realmente "Proyecto de sincronización con archivo Gradle"?
  • Error del compilador JACK de Android después de la actualización a la última biblioteca de soporte
  • BuildConfig.DEBUG siempre false al crear proyectos de biblioteca con gradle
  • La caché de dependencias de Android Gradle puede estar dañada y la compilación de gradle no funciona
  • Al construir la versión de apk usando android studio, obtengo un error "Keystore fue manipulado, o la contraseña era incorrecta"
  • Android Studio Sigue diciendo No se pudo completar la ejecución de Gradle
  • ¿Es posible probar contra la versión de lanzamiento de tu aplicación con el complemento Android Gradle?
  • Sabores de Gradle para Android con conjuntos de fuentes personalizadas - ¿Cómo deberían ser los archivos de gradle?
  • Incluir condicionalmente proyecto en gradle build
  • Android Studio 0.5.0 - No hay auto código de terminación y el reconocimiento de sintaxis de errores después de actualizar
  • ¿Cómo usar proguard.jar personalizado en la compilación de Gradle?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.