Gradle

Gradle: tricks and tips

Posted by on Mar 13, 2015 in Gradle | 0 comments

Gradle: tricks and tips

In questo articolo vi elenco alcuni tricks sull’ uso di Gradle in Android Studio che uso spesso nei miei progetti. Li ho recuperati leggendo vari blog, community e dal sito ufficiale.
Li ho provati e testati:  dopo una piccola introduzione vi allego gli esempi su github.
Spero vi possano essere utile.

 

 

Cartelle multiple delle risorse

Nello sviluppo di applicazioni complesse e con numerose screen, la cartella res delle risorse aumenta giorno per giorno contenendo una quantità di file considerevole.  Soprattutto la cartella drawable  contiene quasi sempre risorse xml di vario tipo (bitmap, selector)  e immagini. Mi sono ritrovato con più di 200 file di risorse.

Gradle permette di aggiungere per lo stesso progetto e/o modulo più cartelle res così da suddividerle in base all’ esigenza.
In questo esempio ho creato 3 catelle res: quella di default, una che contiene solo risorse bitmap e una  layout. Naturalmente sia il naming che la suddivisione logica è a vostra discrezione. Per esempio si potrebbe creare una cartella res per le risorse tablet e una smartphone.

 

Il risultato

gradle multi res

I sorgenti su GitHub  gradlemultires

Proprietà comuni per tutti i moduli

Nei progetti che contengono diversi moduli invece di settare manualmente proprietà comuni, come per esempio compileSdkVersion o buildToolsVersion è utile creare delle variabili nel file build.gradle generale (root del progetto) cosi che possiamo riutilizzarle in tutti i moduli.

build.gradle (root)

build.gradle (modulo)

 

Utilizzare gradle per modificare BuildConfig

Gradle permette di modificare la classe BuildConfig durante la fase di compilazione. Se utilizziamo per esempio crashlytics e decidiamo che il servizio deve essere abilitato solo per la versione debug basta utilizzare questo script

 

Con questo script aggiungiamo alla classe BuildConfig la variabile REPORT_CRASHES e la inizializziamo a true.

Nel codice java scriviamo

 

Dipendenze per flavor

Le dipendenze possono essere anche diverse per flavor. L’ esempio mostra una diversa dipendenza del play service per il flavor old e il flavor last. Potremmo per esempio fare dei test su dispositivi che non hanno l’ ultima versione del play service scegliendo uno dei due flavor.

La possibilità di creare build con dipendenze diverse diventa molto utile quando dobbiamo, per esempio,  sviluppare una versione dell’ app per determinati dispositivi che possono sfruttare librerie proprietarie.  Aggiungiamo il flavor Sony e utilizziamo un’ ipotetica  libreria per i wearable Sony cosi:

 

 Rinominare l’ apk di release

Se non usiamo un sistema di CI (Continous Integration)  come jenkins o TravisCI e rilasciamo continuamente versioni dell’ app al cliente o ai tester inviandoli per email mgari, Gradle ci aiuta a rinominare il file apk prendendo alcuni parametri dinamicamente, così da avere degli apk con nomi che contengono il versionCode e/o il versionName per esempio  o dalla data di release.

In questo esempio viene generato un apk con il suffisso creato dal versionName e dal versionCode.
Per generare un apk di release dobbiamo usare il file .jks, copiamolo nella root del modulo app.

Per creare l’ apk usiamo il task assembleRelease.

assemble

Troveremo il file apk con il nome app-release-1.0-14.apk nella cartella build/outputs/apk/  del nostro modulo. Un semplice click sul task e in pochi secondi l’ apk è pronto.

Possiamo anche cambiare la stringa app-release

Lo script crea l’ apk: myapp-release-1.0-14.apk

Gradle ci permette anche di usare delle date.

Dopo lo script android: android{….} inseriamo la creazione della data.

e il nostro script diventa

Esistono diversi metodi e script per rinominare gli apk in fase di compilazione, quello che vi ho spiegato funziona bene e lo uso sempre.

Ecco i sorgenti

apkrename

Alla prossima puntata 🙂

 

Read More