En programación, en general, una buena práctica es escribir código reutilizable. Para ello, solemos utilizar muchas técnicas. Entre todas ellas está la creación de clases con métodos que por ejemplo parsean fechas de una determinada forma, acceden a internet, etc…
Para la creación de librerías lo había intentado de muchas formas, pero al final siempre era un engorro. Hasta que hace poco he empezado a utilizar Gradle para la creación de librerías. Este sistema permite compartir código entre proyectos de una forma muy fácil y además controlado por versiones.
La utilización va a ser igual que si incluyéramos una librería externa en nuestros proyectos pero con la diferencia de que somos nosotros quienes la controlamos. Veamos como hacer una.
Lo primero es verificar si tenemos gradle instalado y su versión. Vamos a necesitar como versión mínima la 1.9. Así que en un terminal escribimos:
gradle -v
Si no lo tenemos instalado aparecerá un mensaje indicándolo. Y en caso de tenerlo instalado nos indicará el número de versión. Si es menor de 1.9 debemos desinstalarlo así:
sudo apt-get remove gradle
Y a continuación lo instalamos de nuevo añadiendo antes su correspondiente repositorio:
sudo add-apt-repository ppa:cwchien/gradle sudo apt-get update sudo apt-get install
Una vez instalado volvemos a comprobar la versión. Si todo fue bien debería aparecer 1.9 o superior. En el momento de escribir este artículo la versión que me aparecía a mí fue la 2.2.1
Acabados los preliminares, creamos un nuevo proyecto con Android Studio destinado a ser nuestra librería. Debéis tener cuidado al seleccionar la versión de Android, siempre ha de ser menor o igual al que utilicéis en vuestros proyectos.
Una vez listo, abrís el archivo build.gradle, el que pone entre paréntesis «Module». Empezamos añadiendo al principio lo siguiente.
apply plugin: 'com.android.library' apply plugin: 'maven' apply plugin: 'maven-publish'
La primera línea indica que es una librería y los dos siguientes añaden plugins para manejar Maven. Si tenemos dentro de la sección android -> defaultConfig una propiedad aplicationId, debemos eliminarlo, ya que al ser una librería el proyecto, no está soportado este parámetro.
Al final del mismo archivo añadimos la configuración para la publicación de la librería:
def coreAarFile = file("build/${archivesBaseName}-${project.version}.aar") artifacts { archives coreAarFile } uploadArchives { repositories { mavenDeployer { repository(url:"file:///aqui/vuestra/ruta/hacia/el/repositorio/de/librerias/") pom.groupId = 'com.demo.library' pom.artifactId = 'core' pom.version = '0.1.0' } } }
Las primeras líneas le indican como se va a llamar nuestra librería. Fijaros que va con variables para que vaya creando un archivo nuevo por cada versión.
El siguiente grupo de código indica donde se va a subir la librería. Aquí debéis crearos una carpeta donde almacenar las librerías. Luego se indica el groupId que yo hago coincidir con el namespace principal del proyecto, un identificador y la versión de la librería (no olvidéis cambiarla a medida que desarrolléis).
Ya está lista nuestra librería. Gradle nos pedirá que sincronicemos los cambios. Una vez que acabe y no tengamos ningún error, vamos a la terminal de Android Studio y escribimos:
gradle uploadArchives
Lo que hará esto es crear nuestra primera versión de la librería. Para comprobar que todo fue bien abrid la carpeta que indicasteis antes y comprobaréis que está ahí nuestro primer archivo aar, además del resto de archivos y carpetas que se crean con la compilación.
Lo siguiente que vamos a hacer es incluir esta librería en un proyecto. Para ello creamos un nuevo proyecto con Android Studio. Abrimos el archivo gradle de este proyecto y escribimos:
repositories { maven { url 'file://aqui/vuestra/ruta/hacia/el/repositorio/de/librerias/' } mavenCentral() } dependencies { /** Las 2 primeras líneas las ha añadido Android Studio al crear el proyecto Mantened las que os cree a vosotros */ compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:21.0.3' compile 'com.demo.library:core:0.1.0@aar' }
Como veis, debéis indicar la ruta donde se encuentra vuestro repositorio, tal como hicimos en la librería. Sincronizais gradle, y vais a cualquier clase o activity de este proyecto y dentro de cualquier método escribimos com.demo.library, notaréis que empieza a autocompletar con los métodos de la librería.
Ahora ya podéis ir creando clases y métodos en vuestra librería, e ir utilizándolos en cualquier proyecto.
Por último, acordaros siempre de actualizar los números de versión cuando corresponda.