DevCorner620

DevCorner: Gradle, firma e ProGuard insieme

Roberto Orgiu

Abbiamo parlato più volte di Gradle, ma non abbiamo fatto altro che scalfirne leggermente la superficie, senza realmente mettere mani in questo processo che Google sta ottimizzando per aiutarci nello sviluppo di applicazioni Android.

Nella puntata di oggi vedremo quindi come creare due build differenti, una per il debug e una per la release, con l’utilizzo di ProGuard e la firma automatica del pacchetto di release.

Prima di cominciare, è bene ricordare che in realtà anche la versione di debug è firmata, ma con un KeyStore ad hoc autenticato da username e password standard, differente dalla chiave concessaci alla registrazione su Google Play e che dovremmo trovare nella cartella .android nella root del nostro profilo, sotto il nome di debug.keystore.

LEGGI ANCHE: Introduzione a Gradle – DevCorner

Apriamo quindi con Android Studio il progetto relativo alla geolocazzazione della scorsa puntata, selezioniamo il nostro file build.gradle e creiamo una configurazione diversa per la firma in fase di release: nella sezione android del nostro file creiamo una sottosezione signingConfigs, nella quale andremo ad inserire un oggetto miaRelease, come esemplificato

android{
signingConfigs{
miaRelease{}
}
}

All’interno di quest’ultimo oggetto andremo a specificare il nostro KeyStore personale, chiamato (a titolo esemplificativo) miaChiave.keystore e posizionato all’interno della cartella C:/licenze/ e la cui password sia miaPasswordKeystore

storeFile file("C:\\licenze\\miaChiave.keystore")
storePassword "miaPasswordKeystore"

Sotto queste due righe, possiamo specificare l’alias che vogliamo usare, ad esempio aliasAndroid, accompagnato dalla relativa password (miaPasswordAliasAndroid)

keyAlias "aliasAndroid"
keyPassword "miaPasswordAliasAndroid"

Ora, possiamo creare la configurazione per la build di release, cui diremo di andare ad usare questa configurazione appena descritta: iniziamo creando (se non è già presente) una sezione buildTypes, contenente a sua volta una sottosezione release giusto sotto alla sezione signingConfigs

buildTypes {
release {}
}

all’interno delle configurazioni di release indichiamo a Gradle di usare il KeyStore appena inserito

signingConfig signingConfigs.miaRelease

accodando a quest’ultima istruzione anche quelle per l’utilizzo di ProGuard in fase di release, le cui regole sono contenute nel file proguard-android.txt

runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')

E se volessimo anche specificare che vogliamo che il suffisso del package risultante dalla build fosse .debug, in modo da poter lasciare installata la versione stabile e continuare ad usare lo stesso terminale per lo sviluppo? Ci basterebbe aggiungere un suffisso nella sottosezione debug dei nostri buildTypes

packageNameSuffix ".debug"

Siamo pronti a testare il nostro script? Apriamo il terminale da Tools > Open Terminal… e digitiamo la seguente stringa

gradlew aR

Ci troveremo quindi il nostro apk nella directory build/apk, pronto per il rilascio, senza dover specificare ulteriori parametri.

Se non siete del tutto convinti o volete dare un’occhiata al file build.gradle che abbiamo utilizzato, fate un salto a questo indirizzo oppure chiedeteci direttamente nella sezione Sviluppo e Programmazione del nostro forum.