Keytool per generare chiavi di debug SHA-1
In questo mini tutorial Android, vedremo come generare una chiave SHA-1, per poter utilizzare i Google Services e identificare in modo univoco la nostra applicazione.
Il mondo di Google ormai non è più solo il motore di ricerca, ma comprende tutta una serie di servizi che prendono il nome di "Google Services". Sicuramente conoscerai le Google Maps, YouTube, Google Plus, Google Analytics, Google APPs, Google Clouds. Ebbene per ognuno di queste servizi, Google ha messo a disposizione una serie di API, quindi interfacce, per permettere l'interazione tra la propria applicazione e questi molteplici servizi.
Ad esempio dalla nostra applicazione, quindi, è possibile mostrare una mappa Google all'utente, e recuperando le coordinate latitudine e longitudine, indicare la sua posizione con un Marker, oppure tracciare il percorso di un dispositivo nel tempo, oppure monitorare la posizione di determinati veicoli appartenenti alla stessa azienda e così via.
Oppure è possibile interrogare le statistiche di visualizzazione di un determinato video presente nel tuo canale YouTube. Oppure accedere alla tuo account social per inviare dei post, direttamente dalla tua applicazione o pagina web, senza dover usare le applicazioni ufficiali fornite da Google.
Insomma, non c'è limite alle possibili interazioni che potresti creare con questi servizi.
E' evidente che per poter utilizzare queste risorse, Google ha progettato delle infrastrutture che sono fisicamente limitate, quindi oltre un certo livello di sfruttamento, viene richiesto all'utilizzatore di pagare una quota per l'utilizzo del servizio.
Per questo motivo, per ogni progetto che intende sfruttare queste risorse, viene richiesto di creare delle chiavi di accesso o autorizzazione - API Keys - al fine di poter associare l'app che sta usando i servizi, ad uno sviluppatore e quindi chiaramente ad una carta di credito, nel caso quest'ultimo voglia sfruttare oltre il limite gratuito consentito, le risorse messe a disposizione da Google.
In uno dei precedenti tutorial abbiamo visto come si integrano i Google Services all'interno di un progetto Android, con i tre passi fondamentali:
- Creazione del progetto
- Abilitazione servizi (API)
- Creazione di una chiave di accesso
Un ulteriore passo opzionale è costituito dalla creazione di una firma SHA-1. Questo è un passo che, per chi sta sviluppando su Android, è utile fare. Con questa procedura infatti, creeremo una specie di "impronta digitale", che permetterà a Google di identificare l'app in modo univoco, e questo ci proteggerà da usi delle risorse effettuati in modo fraudolento da parte di altri che sono venuti a conoscenza delle credenziali di accesso.
Per recuperare questa firma, è necessario creare un certificato, lo stesso processo che userai per confezionare il file .apk finale da pubblicare su Google Play, solo che per ora ci limiteremo a firmare l'applicazione con una chiave di debug, da usare in tutte le fasi di sviluppo dell'applicazione. Quando saremo pronti per pubblicarla, allora ripeteremo i passaggi, indicando una chiave diversa.
Per fare questo è necessario seguire i passi indicati nel tutorial dei Google Services, e poi, in corrispondenza alla creazione di una nuova chiave -API Key- per Android, cliccare sulla voce per aggiungere una "fingerprint".
I valori richiesti sono: il nome del package Android inserito nel file AndroidManifest.xml della tua applicazione, e un certificato SHA-1, che dovremo recuperare/creare da qualche parte.
Per ottenere quest'ultimo, è necessario aprire una finestra di comando e accedere all'applicazione Keytools.exe, che si trova all'interno della cartella Java del tuo computer, nel percorso jreX.X.X>bin. Putroppo in questa fase Android Studio non ci viene in aiuto (per ora).
Dovremo poi lanciare questa riga:
keytool -exportcert -alias ALIASNOMECHIAVE -keystore PERCORSOCHIAVE -list -v
per esportare il certificato di debug "debug.keystore", creatosi alla prima creazione di un file .apk nell'emulatore di Android Studio, che potrà essere riconosciuto con l'alias indicato al posto di ALIASNOMECHIAVE (androiddebugkey), e che è stato salvato in una opportuna cartella del nostro computer PERCORSOCHIAVE, la cui posizione varia a seconda del sistema operativo (in windows si trova tipicamente dentro a c:/Utenti/NOMEUTENTE/.android/, mentre sul MAC in ~
/.android/. ).
NB: E' importante che specifichi la posizione coretta dove è stato creato, altrimenti il comando non riuscirà ad individuarlo e a mostrarti i dati.
Nell'ipotesi volessi lanciare il comando su Windows, potresi scrivere:
keytool -exportcert -alias androiddebugkey -keystore "%USERPROFILE%/.android/debug.keystore" -list -v
Lanciando il comando, mi verrà chiesto di specificare una password, che nel caso della chiave di debug, è per default la parola "android".
Nella schermata successiva, ti comparirà il certificato SHA-1 (l'impronta della tua app), che dovrai copiare e inserire all'interno della finestra vista in precedenza, su Google. Da ora in poi, potrai testare la tua APP con Android Studio e il relativo emulatore, e fare in modo che Google la identifichi in modo univoco.
Quando pubblicherai l'applicazione ("release") dovrai creare un certificato con una password chiaramente diversa, è dovrai ricordarti di cambiare o aggiungere una nuova impronta SHA-1, da associare alle API. Il comando che dovrai lanciare in questa fase sarà del tipo:
keytool -genkey -v -keystore lamiachiave-release.keystore -alias alias_nome
dove sfrutteremo -genkey proprio per generare la chiave nel nostro computer, e come percorso, lasceremo per semplicità, la stessa cartella in cui è presente keytools (occhio ai permessi in questo caso). Il nome scelto è del tutto arbitrario. Poi dovrai specificare tutti i parametri richiesti per la generazione di una chiave privata, chiave che dovrai poi recuperare per firmare l'aplicazione quando effettuerai la procedura di confezionamento del file .apk con Android Studio.
Per recuperare la sequenza di numeri associata al certificato SHA-1, potrai lanciare la riga:
keytool -v -keystore lamiachiave-release.keystore -list
NB: Ricordati di memorizzare tale chiave in un posto sicuro, perchè tutti gli eventuali aggiornamenti che farai all'applicazione, richiederanno proprio questa firma. Se per errore la dovessi cancellare, non potrai più aggiornare l'app già pubblicata su Google Play. A buon intenditore poche parole. Per ulteriori approfondimenti clicca qui per la guida ufficiale alla pubblicazione di un'app.
2024-10-14 Tipo/Autore: Davide Copelli {ing} Pubblicato da: CorsoAndroid.it