Ora che abbiamo imparato i fondamenti dello sviluppo di applicativi Android rimane un ultimo passaggio per chiudere il cerchio: il rilascio e la pubblicazione dell'app. In questa lezione vedremo come preparare e “confezionare” un'applicazione Android per il rilascio nella principale area di pubblicazione per applicazioni Android: il Google Play Store.
Preparare ed eseguire il packaging di un'applicazione per la pubblicazione è un processo conosciuto come il nome di release process.
Il release process è il processo attraverso il quale passa la nostra app per diventare la release build, ovvero la versione ufficiale pronta per essere pubblicata. Prima di guadagnarsi questo appellativo, e quindi di essere disponibile per l'utente finale, l'applicazione è nella fase di release candidate build: solo dopo attente e rigorose verifiche e test l'app diventa una release build pronta per il rilascio.
Il processo per la pubblicazione di una applicazione Android si divide in 5 passi:
- Preparare una release candidate build della nostra applicazione.
- Testare attentamente e minuziosamente la release candidate.
- Generare un package Android e ufficializzarlo con una firma digitale.
- Testare attentamente e minuziosamente il package pronto per il rilascio.
- Pubblicare l'applicazione.
Prima di effettuare i test definitivi sulla nostra app dobbiamo preparare la release candidate build. Per fare questo dobbiamo aver implementato e testato tutte le funzionalità utili al corretto funzionamento dell'applicazione, corretto tutti i bug e rimosso tutto il codice utilizzato per la diagnostica per evitare che incida nelle performance della app.
Per avere una release candidate ufficiale dobbiamo anche effettuare qualche modifica al file di configurazione AndroidManifest.xml. Alcune modifiche sono imposte dai marketplace come il Google Play Store mentre altre sono dettate dal buon senso e da linee guida comunemente accettate. Vediamo dunque come dobbiamo preparare l'AndroidManifest.xml per una app che vogliamo ufficializzare a release candidate:
- Innazittutto verifichiamo che l'icona dell'applicazione sia impostata correttamente: questa icona sarà visualizzata agli utenti e verrà utilizzata dai marketplace per presentare l'app, quindi è importante che sia d'impatto e perfettamente configurata;
- Verifichiamo inoltre che il nome dell'applicazione sia appropriato e correttamente impostato: questo sarà il nome con cui l'applicazione si presenterà agli utenti finali;
- Verifichiamo la corretta impostazione del testo indicante la versione dell'applicazione;
- Controlliamo che il codice della versione dell'applicazione sia impostato correttamente: questo è un codice che la piattaforma Android utilizza per gestire gli aggiornamenti della nostra app;
- Verifichiamo l'impostazione del uses-sdk dell'applicazione: possiamo impostare il massimo, il minimo e il consigliato SDK Android supportato dall'applicazione. Il Google Play Store filtra le applicazioni disponibili per uno specifico utente in base alle informazioni fornite da ogni file di configurazione AndroidManifest.xml, comprese quelle relative all'Android SDK;
- Verifichiamo di aver disabilitato l'opzione debuggable;
- Verifichiamo che tutti i permessi richiesti dall'applicazione siano appropriati per un corretto funzionamento della app: richiediamo solo i permessi davvero necessari e assicuriamoci di aver richiesto tutto il necessario indipendentemente da come si potrebbe comportare il device senza di essi.
A questo punto possiamo passare alla fase di testing. In realtà questa fase non richiede particolari interventi, più che altro richiede particolari attenzioni e accorgimenti: dobbiamo testare la nostra applicazione il più rigorosamente possibile e verificare che l'app rispetti i criteri richiesti dal Google Play Store.
Se durante i test dovessimo riscontrare dei bug o delle problematiche di qualche genere sarà nostro compito valutare quanto siano importanti e serie, considerarne la gravità ed eventualmente valutare anche la possibilità di interrompere il processo di rilascio per iniziarlo nuovamente una volta sistemate le problematiche riscontrate.
Se la nostra applicazione ha superato la fase di testing, allora abbiamo ufficialmente la nostra release canditate build. A questo punto dobbiamo generare il package Android, nella pratica un file con estensione .apk, e ufficializzarlo con la firma digitale. Per completare facilmente questi passaggi, sia Eclipse che Android Studio offrono appositi wizard. Li vediamo nei paragrafi seguenti.
Preparazione della release con Eclipse
Per lanciare il wizard su Eclipse è sufficiente cliccare con il tasto destro del mouse sul nostro progetto e selezionare la voce Export. Nella finestra che compare selezioniamo l'opzione Android e poi Export Android Application come mostrato nella seguente figura:
Clicchiamo su Next, controlliamo che il progetto selezionato sia quello effettivamente di nostro interesse (altrimenti ne possiamo selezionare un altro dopo aver cliccato sul bottone Browse...), clicchiamo nuovamente su Next e arriviamo alla schermata per la selezione della Keystore:
Scegliamo l'opzione Create new keystore (se possediamo già una keystore precedentemente creata possiamo anche valutare di utilizzare questa scegliendo l'opzione Use existing keystore) e nel campo Location inseriamo il percorso del file in cui vogliamo memorizzare la chiave. Inseriamo anche la password per la gestione della chiave, la confermiamo, e clicchiamo su Next.
Accediamo dunque alla schermata Key Creation in cui dobbiamo inserire alcune informazioni dettagliate sulla chiave, come mostrato dalla seguente figura:
Il team di Android suggerisce per il campo Validity di inserire un valore almeno uguale a 25.
Clicchiamo su Next per accedere alla schermata Destination and key/certificate checks, selezioniamo la destinazione per il file .apk ed infine clicchiamo su Finish.
Preparare la release con Android Studio
Anche su Android Studio il procedimento di creazione del file .apk da distribuire non sarà molto complicato. L'operazione preliminare richiesta, anche in questo caso, sarà la predisposizione di un keystore, idoneo a contenere le chiavi per firmare digitalmente il pacchetto.
Selezioniamo quindi la voce Generate Signed APK... dal menu Build.
La finestra che si apre, visibile in figura, richiede di indicare una chiave per eseguire la firma del pacchetto. Sono richieste due password: una per accedere al keystore ed una per la chiave.
Tutto ciò è possibile a patto che si abbia a disposizione un keystore preesistente. Se così non fosse, sarà necessario crearlo. Per procedere all'inizializzazione di un nuovo “portachiavi”, clicchiamo su Create new... nella medesima finestra. Nella procedura che porta alla sua creazione verranno richiesti alcuni dati: il percorso nel file system in cui salvarlo, una nuova password per accedervi ed alcuni dati personali da inserire nel relativo certificato.
Una volta in possesso di una chiave si può procedere alla creazione del pacchetto .apk firmato digitalmente. Le ultime opzioni da scegliere saranno il percorso di salvataggio del pacchetto ed il Build Type. Per quest'ultimo ci saranno due opzioni, release e debug, ma noi sceglieremo la prima.
Cosa contiene un APK?
Considerato che abbiamo nominato tante volte in questa lezione il formato APK, diamo ora uno sguardo alla sua struttura interna.
Esso è il frutto di un processo di Build articolato, composto da varie fasi, che elabora le componenenti principali di un progetto: codice
Java, risorse e file AndroidManifest.xml.
Il risultato finale pertanto conterrà:
- file .dex, destinati all'ambiente di runtime in Android, dove confluiranno il codice Java - già compilato nel formato .class - ed il
contributo offerto da librerie esterne; - le risorse a disposizione del progetto che verranno incluse in parte compilate (file resources.arsc) ed in parte non compilate;
- il file AndroidManifest.xml, trasposto in un formato binario.
Note conclusive
Abbiamo così creato un application package file pronto per la pubblicazione: prima però di renderlo disponibile all'utente finale attraverso i market, è consigliabile eseguire ancora qualche test sull'installazione del pacchetto .apk che abbiamo appena creato.
Proviamo dunque ad installarlo e disinstallarlo sia nell'emulatore sia su uno o più device reali, in modo da verificare che il processo di installazione dell'.apk che vogliamo pubblicare sia completo e vada a buon fine.
Conclusi anche questi test sul file .apk possiamo iniziare il procedimento per pubblicare la nostra app nell'Android Market.