JitPack, distribuyendo librerías con GitHub y Gradle o Maven

Hace unas semanas completé una librería que pareció gustar bastante en /r/androiddev, llamada CoolMaterialDialog. La idea es muy sencilla, un dialogo con dos botones (primario y secundario) fácilmente personalizable y que podía servir a un amplio rango de propósitos cambiando la View interna del mismo. Sin embargo, que otra gente pudiese usarlo en sus proyectos era un dolor. Había que clonar el repo, añadirlo a Android Studio, generar el .aar correspondiente y después añadirlo como dependencia al proyecto principal. Además, habría que repetir cada uno de los pasos para los cambios de versión, lo cuál no es deseable para nadie. Gran barrera de entrada. Así que en mi lista de tareas pendientes estaba subir el proyecto a uno de los repositorios típicos para poder añadir la librería con una sencilla instrucción compile al build script de Gradle. Pero buscando los pasos en Internet, parecía ser un gran aburrimiento. Muchos pasos. así que esto se iba retrasando más y más.

JitPack logo

Hasta hoy. He encontrado, de nuevo en /r/androiddev, el Santo Grial para distribuir tus librerías de manera sencilla. Muy sencilla. Y, como no, vengo a hablar de ello.

JitPack es un servicio que corre sobre Docker y que se ocupará del dolor de cabeza de quien quiera usar nuestra librería por nosotros. Ellos clonarán nuestro repositorio de GitHub, lo compilarán y se lo devolverán sin problemas a quien lo necesite. Para ello, como desarrolladores de la librería a usar, tendremos que:

  1. Asegurarnos de que nuestra librería compila sin problemas en local antes de subirla a GitHub (este debería ser un paso obvio, pero con las prisas…)
  2. Asegurarnos de que en nuestro repositorio haya un script de build válido (build.gradle) y una configuración válida (settings.gradle).
  3. Hacer una release de GitHub. Estos son los pasos a seguir.

En la release creada se encontrará el código hasta el último commit hecho (que, confiamos, funciona perfectamente) listo para que JitPack lo recupere y haga el build. Si no hay release, siempre se puede especificar un commit concreto del que se quiere que se haga el build, pero personalmente no es una opción que me agrade. Si tenemos que recurrir a eso es porque el desarrollador no se ha preocupado de marcar un punto del proyecto como estable, y me da reparo usarlo.

Para usar la librería, como clientes de ella simplemente tendremos que modificar nuestros dos build.gradle (uno el de la configuración de repositorios y otro el que contenga las dependencias).

repositories {
    maven {
        url "https://jitpack.io"
    }
dependencies {
    compile 'com.github.User:Repo:Tag'
}

¡Y con eso estaremos listos! También podemos usar Maven, en la web de JitPack tienen todas las instrucciones, además de un práctico comprobador de versiones que, en caso de que un build falle, te dará la información de por qué.

Deja un comentario