Distribuire una libreria attraverso jcenter() – parte 2

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

In questa seconda parte vi descriverò il processo di caricamento della libreria su http://jcenter.bintray.com.

Per prima cosa occorre creare un account su bintray.com e precisamente per i progetti open source andate su questa pagina:

https://bintray.com/signup/oss

account_bintray

Come vedete dall’immagine è possibile usare un account Github o un account Google o Twitter.
Create il vostro account e una volta effettuata la login aggiungete un repository.

addrepo

maven

Nella scheda di creazione del repo date un nome alla vostra libreria, lasciate la libreria come Public altrimenti sarete costretti a fare l’upgrade dell’ account e pagare il canone mensile.
Scegliete Maven come Type  e se volete inserite una licenza e una breve descrizione.

Cliccate su Create e in pochi secondi il repository è pronto.

repo

Per adesso è un repo completamente vuoto. Aggiungiamo un package, click su “Add New Package”

add_package

Scegliamo il Name, un tipo di licenza, se volete anche dei tag, il proprio sito e il percorso del repo git o qualsiasi altro sistema di versioning.

Sul sito di bintray abbiamo finito ma prima di passare ad Android Studio vi consiglio di copiare il codice API Key che ci servirà per caricare la libreria.

Selezioniamo il  nostro username in alto a destra e dal menu clicchiamo “Edit Profile” poi la voce API key e inseriamo la password.

Copiamo il codice API Key e mettiamolo da parte, ci servirà per autenticarci per  il caricamento della libreria

apikey

 

Adesso è arrivato il momento di caricare la libreria direttamente da Android Studio su jcenter().

Per prima cosa dobbiamo creare la libreria.  Create un progetto o in uno già esiste: File->New Module

 

newmodule

Poi selezioniamo Android Library

library

e nella finestra successiva diamo un nome alla libreria. Io l’ho chiamata snake.
Inserite magari per la prima volta una semplice classe cosi provate il funzionamento.

applylibrary

Dopo aver creato la libreria aprite il file build.gradle del modulo libreria, snake nel mio caso.
La prima differenza con un modulo normale è nel plugin applicato.
Una libreria non applica il plugin “com.android.application” ma “com.android.library”

Il passo successivo è applicare il plugin di bintray. Modifichiamo il file build.gradle del progetto (e non dei moduli).

Adesso aggiungiamo le informazioni per l’ autenticazione su bintray direttamente nel file local.properties

Ovviamente sostituite le XXX con i dati del vostro account, sia password che il codice API key che abbiamo messo da parte durante le precedenti procedure. Non modificate il path del vostro sdk, ho lasciato la prima riga per farvi capire dove aggiungere i dati.
Non preoccupatevi se inseriamo i dati dell’ account in chiaro, il file local.properties è inserito nella lista dei file da ignorare su .gitignore quindi non sarà mai incluso nel repository online ma rimarrà solo in locale.
Se non usate git preoccupatevi di non “pushare” online il file.

Infine modifichiamo il file builde.gradle del modulo libreria.

Sotto apply plugin: ‘com.android.library’ inseriamo

Cambiate bintrayName e gli altri dati in base al vostro repository che avete creato online.

Infine per poter caricare la libreria utilizziamo uno script. Lo script l’ho copiato tempo fa  direttamente da questo repo : https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle

Lo script è  anche presente in un repo che ho creato ad hoc.

Quindi aggiungiamo in fondo al file build.gradle della libreria

Vi mostro il file build.gradle della libreria di esempio snakelib:

https://raw.githubusercontent.com/giuseppesorce/snakelib/master/snakelib/build.gradle

Sincronizziamo e abbiamo finito.

Per poter caricare la libreria usiamo la linea di comando direttamente da Android Studio (la tab Terminal)  e scriviamo

Per windows

Per macos e linux

Al termine carichiamo la libreria e scriviamo:

Per windows

Per macos e linux

Se tutto è andato a buon fine dovremmo vedere la libreria nel sito di bintray.

bintray

Per poter usare la libreria in un progetto dobbiamo prima inserire il path del repo e poi la dipendenza.

Nel file build.gradle del modulo app o nel vostro modulo principale inseriamo:

Ovviamente sostituite nel repo il mio nome e la mia libreria con i vostri dati.

Poi inseriamo  la dipendenza:

Ci sono altri metodi per poter caricare una libreria su jscenter() anche direttamente da github o bitbucket.

Ecco il repo che ho usato per la libreria.

https://github.com/giuseppesorce/snakelib

Ho testato varie volte questo metodo e funziona molto bene. In pochi minuti è possibile distribuire la propria libreria come qualsiasi altra libreria opensource che usiamo nei nostri progetti.

 

 

 

 

Leave a Reply

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