Skip navigation.
Notebook » Firma apk (it)

Firma e allineamento di un'apk per Android (it)


Una volta generato il file apk di un'app Android, occorre (nell'ordine) firmarla ed eseguire l'allineamento dell'apk.

Firma

Un keystore è un contenitore di chiavi pubbliche e private. Ogni chiave privata è identificata da un alias ed è protetta da una password: per utilizzare una chiave privata del keystore per firmare un'app è necessario indicare l'alias della chiave e fornire la password. Una volta caricata un'app sul Play Store, le nuove versioni dell'app dovranno essere firmate con la medesima chiave (e quindi con il medesimo keystore).

Pertanto occorre:

  1. Se non si dispone già di una chiave (contenuta in un keystore), generarla con il comando keytool
  2. Firmare l'apk con il comando jarsigner

La procedura dettagliata è descritta nella documentazione dei tool di Android. Su Arch/Manjaro, i tool si trovano nel pacchetto android-tools (non è necessario scaricare tutto lo sdk).

In sintesi, il comando per firmare si usa così:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <Il mio keystore> <LaMiaApk.apk> <Il mio alias>

Allineamento

Dopo aver firmato l'apk occorre allinearlo, ossia ottimizzare il file zip per far partire i singoli file compressi in un byte la cui posizione è multipla di 4 (ottimizzazione per le architetture a 32 bit).

Per far ciò occorre lo strumento zipalign, che si trova nell'sdk di Android. Il file eseguibile del tool non è installato nel path di sistema (di solito).

La sintassi del comando è:

./zipalign 4 <app_da_allineare.apk> <app_allineata.apk>

N.B. Se non si esegue l'allineamento, quando si tenta di caricare l'APK con la console sviluppatori si ottiene il seguente messaggio di errore: "Hai caricato un APK di cui non è stato eseguito l'allineamento dell'archivio. Dovrai eseguire uno strumento di allineamento dell'archivio sull'APK e caricare di nuovo l'APK."