Distribuire una libreria attraverso jcenter() – parte 1

Posted by on Ott 28, 2016 in Tutte | 0 comments

Distribuire una libreria attraverso jcenter() – parte 1

Nel precedente articolo ho descritto come creare un file .aar del proprio codice e condividerlo con altri sviluppatori. Il procedimento che ho scritto è molto veloce e vuole essere più un utilizzo pratico che una soluzione più robusta.
Non è adatto per librerie più corpose perchè per esempio per utilizzare il codice occorre importare tutte le dipendenze che utilizza la libreria.
Per utilizzare una libreria  open source in Android Studio, come ben  sapete,  basta una riga di codice nel file build.gradle,  cioè l’ import della dipendenza, ma da dove scarica la libreria Android Studio?
In questa seria di 3  articoli descriverò come utilizzare  jcenter() per distribuire la stessa libreria del precedente articolo. Una semplice classe che mostra una SnakeBar.

Per prima cosa è importante capire da dove effettua il download Android Studio.
Android Studio utilizza un Maven Repository Server che è stato definito nel file build.gradle del progetto. Apache Maven è un tool, una tecnologia per la distribuzione di progetti (java soprattutto) e build automation.
I due principali server utilizzati per la distribuzione di librerie sono:  jscenter e maven central.

jcenter è un repository maven ospitato da bintray.com mentre maven central è ospitato da sonatype.org. Sono entrambi ormai degli standard ma sono due siti, due repo diversi quindi è possibile che una libreria presente su jcenter() non sia presente su maven central. E’ anche possibile creare un proprio repository maven come ha fatto per esempio Fabric.

e la dipendenza è gestita come le altre

Esistono anche altri repository che gradle e Android Studio possono usare ma è talmente raro usare le librerie ospitate in questi repo che personalmente non ho mai avuto l’ occasione  di provarle nè le ho viste in altri progetti.

La scelta degli sviluppatori quindi si divide tra jcenter e maven central.
Android Studio (quindi google) aveva scelto inizialmente come repo principale maven central infatti tempo fa quando si creava un nuovo progetto nel file build.gradle  era presente:

Adesso invece è stato scelto jcenter e infatti possiamo vedere nel file build.gradle del progetto che il repo principale è cambiato:

Non ho mai usato maven central ma ho letto che è molto più complicato di jcenter e non è facile caricare le librerie (almeno non facile come su jcenter), anche il team di Android Studio ha scelto jcenter e leggendo su vari blog la scelta è stata effettuata per alcuni motivi:

  • jcenter rilascia la libreria attraverso  CDN che è un sistema di caricamento molto veloce.
  • jcenter è il più grande repository Java del mondo quindi, di conseguenza qualsiasi cosa disponibile su Maven Central teoricamente è disponibile anche su jcenter e non viceversa.
  • Caricare la nostra libreria su jcenter è molto più semplice e non occorre firmare nulla come succede su Maven Central.
  • Il sito di bintray.com mette a disposizione una UI molto più user friendly.

Prima di spiegare come caricare una libreria su jcenter è opportuno parlare di  come funziona l’ import delle dipendenze in gradle.

La stringa per importare la dipendenza è divisa in 3 parti:

In questo caso il group_id  è com.giuseppesorce , l’ artifact_id è snake (che il nome identificativo della libreria) e version  è 1.0.0. Il group_id definisce il nome del gruppo principale e per convenzione si usa il package name dello sviluppatore come per esempio:

com.square.picasso

mentre il nome della libreria è l’ artifact quindi:

compile ‘com.squareup.picasso:picasso:2.5.2′

Tra il group_id, l’ arrtifact e il numero di versione si inseriscono i due punti “:” .
Cosa succede quando inseriamo la dipendenza per esempio di Picasso ?
Semplicemente il plugin gradle di Android Studio farà una richiesta a jcenter con le informazioni del group_id, identificando lo sviluppatore,  l’ artifact, identificando la specifica libreria dello sviluppatore  e per finire richiedendo la versione indicata nell’ ultima parte della stringa della dipendenza.
Provate a visualizzare questo indirizzo sul browser:

http://jcenter.bintray.com/com/squareup/picasso/picasso/

Come vedete il browser vi mostrerà tutte le versioni di Picasso presenti nel repository e se provate ad aprire una cartella per esempio la 2.5.2 troverete tutti i file che gradle scaricherà per far funzionare la libreria Picasso.

Per questa prima parte è tutto.

 

 

 

Leave a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *