Cómo hacer librerías en Android Studio con módulos

¿Qué es un Módulo?

Según la definición de IntelliJ IDEA, un módulo es una unidad discreta de funcionalidad que puede ejecutarse, testearse y depurarse de forma independiente. Los módulos pueden tener código fuente, sripts, test unitarios, etc. Para el caso de Android un módulo se utiliza como librería o para test unitario.

Estructura de un Módulo

Los modulos tienen la misma estrutura que un proyecto en Android, la única diferencia es el pluguin que utiliza el módulo, este pluguin se define en el archivo build.gradle (library).

output_module

Creando un Módulo en Android Studio

Como hemos mencionado, los módulos son útiles para hacer test unitarios y además para encapsular funcionalidades que podemos utilizar más tarde en nuevos proyectos. A continuación explicaremos paso a paso la creación de un módulo externo, otro interno y los enlazaremos con el proyecto principal y además hablaremos de errores comunes con los módulos.

Paso 1: Crear un modulo externo

1 – Creamos un proyecto en Android Studio.

Modulo1

 

Modulo2

 

Modulo3

 

crear1

 

Modulo2

 

crear2

 

Si has seguido todos los pasos habrás creado un nuevo proyecto de Android. A continuación vamos a modificar el archivo build.gradle para que nuestro proyecto sea un módulo.

 

2- Modificamos el archivo build.gradle: el archivo build.gradle de un proyecto Android, en resumen, define como se debe compilar el proyecto. Como queremos crear un módulo, vamos a modificar un par de lineas para este fin.

 

.gradle_module1

 

En primer lugar sustituimos la línea: apply plugin: ‘com.android.application’ por apply plugin: ‘com.android.library’ y en segundo lugar quitamos la línea applicactionId. y ya tenemos nuestro módulo configurado. En la imagen que aparece a continuacion podéis ver como quedaría el archvo build.gradle.

 

gradle_module_2

 

3- Compilamos el módulo: finalmente compilamos el módulo y obtenmos un archivo con extensión aar, el archivo aar correspondería  una librería de java un jar.

 

Paso 2: Crear un modulo dentro de un proyecto

En el apartado anterior hemos creado un proyecto y lo hemos modificado, ahora en vez de modificarlo vamos a crear otro proyect nuevo y creamos un módulo dentro del este.

 

Paso 3: Importamos un modulo externo

El módulo que cremos en el paso 1 lo vamos a cargar en el proyecto que se ha creado en el paso 2.

 

 

Paso 4: Añadimos los modulos a las dependencias del proyecto

Una vez tenemos todos los módulo cargados y creados tenmos que indicarle al proyecto de Android Studio las dependencias entre los módulos. Es decir, el módulo principal de nuestro proyecto es app y queremos que app pueda llamar a las funcionalidades de los modulos que hemos creado (modulo1 y modulo2).

 

 

Una vez tenemos las dependencias entre los módulos configuradas, os pongo un ejemplo de como invocar un activity del módulo 2 en el módulo principal (app).

 

 

Errores comunes

  1. Archivos repetidos: en el proyecto principal y en módulos hay archivos con el mismo nombre. Por ejemplo, 2 activities que se llamen ActivityMain.java.
  2. Conflictos entre los manifest: los atributos theme y icon solo deben aparecen en el manifest del módulo principal.
  3. Librerías repetidas y de diferente versión: siempre que añadimos un módulo debemos quitar del build.gradle del módulo principal aquellas librerías que ya estén en el módulo insertado.
  4. No añadir las dependencias entre módulos, esto lo hemos explicado en el paso 4.

 

Los ejemplos los puedes encontrar pulsando aquí:
https://github.com/PalmeraLabs/ExampleModule.git

 

Si tienes alguna duda contacta con nosotros en palmeralabs@gmail.com o escribiendo un comentario.

1 Comment

  • Crear versiones app en Android Studio Flavors - Palmera Labs - Palmera Labs / octubre 12, 2015 at 12:03 pm

    […] Studio Flavors ? Muchas veces se quiere probar diferentes algoritmos para una misma aplicación o reutilizar el código para hacer una app parecida. Muchas soluciones consistente en crear un proyecto nuevo, ir cambiando […]

    Responder

Dejar una respuesta