Android e i KeyStore

Chi sviluppa su piattaforma Android ha sicuramente già avuto a che fare con un keystore.
Per coloro che non conoscono l'argomento, illustreremo alcuni consigli su come utilizzarli al meglio.

Durante il processo di sviluppo è sempre possibile produrre un file APK non firmato (normalmente viene utilizzato per creare apk in modalità di debug). Tale file si può installare su un device reale (a patto di abilitare le "Sorgenti/Origini sconosciute") anche manualmente.

Utilizzare un keystore per firmare la propria app
Per un rilascio ufficiale nello Store di Google è necessario però "firmare" il pacchetto APK prima di poterlo "deliverare" sulla Console degli Sviluppatori.
Il risultato di tale operazione (che si può attuare direttamente con Android Studio o Eclipse+ADT) è un file APK firmato con un keystore: è possibile successivamente deliverarlo direttamente dalla console di Google e procedere con la pubblicazione.

Questo keystore è un file che dev'essere utilizzato sempre per firmare l'app una volta pubblicata.

Cioè una volta utilizzato tale file per firmare un'app, va sempre utilizzato per aggiornamenti futuri dell'app stessa.
Può sembrare una banalità, ma se gli aggiornamenti dell'app non sono frequenti (magari viene aggiornata una volta all'anno...), ci si potrebbe trovare nella spiacevole situazione di non trovare più il keystore utilizzato in precedenza (basta cercare su un qualsiasi motore di ricerca la parole "android lost keystore" per rendersi conto che non è una cosa cosi impossibile da realizzarsi).
Potreste anche trovarvi nella situazione di aver effettuato i backup dei keystore utilizzati per rilasciare le vostre app, ma di non ricordarvi quale keystore avete utilizzato per firmare una certa app.
In questi casi è possibile calcolare l'hash di un keystore e l'hash di un file APK per verificare quale keystore è stato utilizzato per firmare l'apk.
La procedura è abbastanza semplice: si tratta si eseguire il comando "keytool" (presente nella distribuzione di Java) e ricavare l'hash SHA1 per il keystore e il file APK e controlare che siano uguali.

Come visualizzare l'hash di un keystore

keytool -list -keystore my_keystore.jks

 

Come visualizzare  l'hash di un file apk signed

keytool -list -printcert -jarfile my_app.apk


Se la sezione SHA1 è identica in entrambi i casi, si può assumere che il file "my_app.apk" è stato firmato utilizando il file "my_keystore.jks".
Ovviamente non è possibile recuperare la password utilizzata per creare il keystore stesso, quindi consiglio di seguire questo semplice accorgimento:

Per ogni nuova app che sviluppate, abbiate cura di salvare sia la password che il keystore che avete utilizzato per il primo rilascio in produzione, perchè senza questo file non potrete più rilasciare aggiornamenti per la/le vostre app.

Riferimenti

https://developer.android.com/training/articles/keystore.html

Commenti

  1. Ciao, mi trovo nella situazione di aver smarrito il mio keystore a causa di hard disk andato :(
    Ergo non posso più aggiornare la mia app che ho caricato più di un anno fa, esiste un modo per fare il reverse dall'apk firmato correttamente?

    RispondiElimina
    Risposte
    1. Ciao Marco, purtroppo se hai smarrito fisicamente il keystore vedo poche possibilità di poter pubblicare un aggiornamento dell'app.
      In alternativa puoi pubblicare la tua app mantenendo il suo nome pubblico ma cambiando il nome del package principale (in pratica la pubblichi come nuova app)

      Alessandro

      Elimina

Posta un commento