Nel corso delle lezioni precedenti abbiamo imparato tante cose interessanti che รจ possibile fare su un dispositivo Android. Tuttavia prima di rendere disponibili le nostre applicazioni sui dispositivi di altri utenti รจ necessario una procedura di rilascio e distribuzione delle stesse.
Fortunatamente Google ha reso relativamente semplice la pubblicazione delle applicazioni in modo che esse possano essere rapidamente distribuite agli utenti finali. I passi per la distribuzione di unโapplicazione Android sono generalmente quattro:
- Esportare lโapplicazione in un file APK (Android Package)
- Generare un proprio certificato e firmare lโapplicazione con esso
- Rilasciare lโapplicazione firmata
- Utilizzare Play Store o altri metodi per installare lโapplicazione sui dispositivi degli utenti
Per avere unโidea di come effettuare queste operazioni prendiamo una delle applicazioni sviluppate durante il corso o creiamone una nuova, non รจ importante quale sia il suo funzionamento. A tale scopo io creo unโapplicazione denominata TestDeploy che รจ una semplice applicazione del tipo Hello World.
La prima cosa da fare รจ controllare se nel file AndroidManifest.xml siano presenti gli attributi versionCode e versionName e in caso negativo inserirli
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test.testdeploy"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Lโattributo versionCode rappresenta numericamente la versione dellโapplicazione e per ogni revisione dovrebbe essere incrementato di una unitร in modo da differenziare le nuove versioni dalle precedenti. Tramite questo attributo il Play Store determina se รจ disponibile una nuova versione dellโapplicazione e lo notifica a coloro che giร lโhanno installata sul proprio dispositivo. Lโattributo versionName invece contiene informazioni sulla versione visibili agli utenti e dovrebbe essere nella forma X.X.X (ad esempio versione 1.0.1).
Se vogliamo distribuire lโapplicazione sul Play Store dobbiamo assicurarci inoltre che il file AndroidManifest.xml contenga anche gli attributi label e icon. Lโattributo label specifica il nome dellโapplicazione che verrร poi visualizzato nella schermata delle impostazioni dei dispositivi Android su cui sarร installata.
Per la nostra applicazione di esempio scriviamo qualcosa
android:label="Prima Applicazione"
Lโattributo icon serve a specificare lโicona associata allโapplicazione e per esso lasciamo il valore predefinito.
Sempre in questo file molto importante รจ la sezione
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
Tale sezione serve ad indicare quale versione di Android รจ consigliata per lโesecuzione dellโapplicazione (attributo targetSdkVersion) e quale รจ la versione minima di Android necessaria per lโesecuzione della stessa.
Altro passaggio preliminare alla generazione del file APK รจ lโimpostazione della modalitร di compilazione dellโapp da debug a release. Per fare questo basta aprire la finestra Build Variants ed impostare il valore release al posto del valore debug
Come abbiamo accennato, tutte le applicazioni Android devono essere firmate digitalmente prima di essere distribuite sui dispositivi. Fortunatamente non รจ necessario acquistare certificati digitali da unโautoritร di certificazione ma รจ possibile generare i propri certificati ed utilizzare gli stessi per firmare le applicazioni.
Adesso bisogna configurare le informazioni sulla chiave di firma da utilizzare quando genereremo il package finale dellโapplicazione. Il primo passaggio รจ quello di creare un file denominato keystore e per farlo dal menรน Build clicchiamo su Generate Signed APK
In questo modo viene visualizzata la finestra di dialogo Generate Signed APK
Se disponiamo giร di un file keystore generato in precedenza dobbiamo cliccare su Choose existing e andarlo a selezionare, in caso contrario clicchiamo su Create new e si apre la finestra New Key Store
In questa finestra dobbiamo inserire il percorso ed il nome del file keystore che vogliamo generare e la relativa password. Bisogna inoltre inserire nella sezione Key i dati necessari a generare una chiave privata per firmare lโAPK. Infine bisogna valorizzare almeno uno dei campi della sezione Certificate.
Dopo aver cliccato su OK ritorniamo alla finestra Generate Signed APK
Dopo aver cliccato su Next si accediamo alla finestra di generazione dellโAPK
Scegliamo il percorso di destinazione dellโAPK, la versione della firma (date unโocchiata al link Signature Help) e clicchiamo su Finish.
Dopo il tempo necessario a compilare lโapp comparirร il seguente messaggio
Dopo aver ottenuto il file apk firmato ci serve un modo per portare lโapplicazione sui dispositivi degli utenti.
Fondamentalmente esistono tre possibilitร per effettuare questa operazione:
- Distribuire manualmente lโapplicazione utilizzando lo strumento adb.exe
- Esporre lโapplicazione su un server web
- Pubblicare lโapplicazione tramite il Google Play Store
In ogni caso oltre a questi metodi รจ sempre possibile installare lโapplicazione sui dispositivi semplicemente facendo in modo di trasferire su di essi lโapk (tramite email o file explorer ad esempio) ed avviarlo.