Firma dell'app
Chiavi e Play App Signing
Firma dell'app è una lezione Android Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Android Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Android Academy include 4 lezioni in totale.
Perché le app devono essere firmate
Android non installa un'app se non è firmata digitalmente. La firma dimostra due cose: chi ha pubblicato l'app e che l'APK non è stato manomesso.
È fondamentale che le firme colleghino gli aggiornamenti all'app originale. Un aggiornamento viene accettato solo se è firmato con la stessa chiave della versione installata. Se perde quella chiave, non potrà più aggiornare l'app.
Questa lezione illustra i keystore, la configurazione della firma e l'approccio moderno e più sicuro di Google: Play App Signing.
Keystore e chiavi
La sua identità di firma risiede in un file keystore (.jks o .keystore). Un keystore può contenere più chiavi; ogni chiave ha un alias e una propria password.
- Password del keystore — sblocca il file.
- Alias della chiave — identifica la chiave al suo interno.
- Password della chiave — sblocca quella specifica chiave.
Le build di debug che esegue ogni giorno vengono firmate automaticamente con un keystore di debug temporaneo. Per la release ne serve uno personale.
Creare un keystore
Può creare un keystore dalla finestra di dialogo di Android Studio oppure con il comando keytool incluso nel JDK.
Utilizzi una validità lunga (almeno 25 anni): se la chiave scade, non potrà pubblicare aggiornamenti. RSA 2048 è lo standard.
keytool -genkeypair \
-v \
-keystore release.jks \
-alias upload \
-keyalg RSA \
-keysize 2048 \
-validity 10000Il blocco signingConfigs
Per firmare automaticamente durante una build Gradle, dichiari una voce signingConfigs e la associ al tipo di build release.
Funziona, ma noti che le password sono direttamente visibili nel file di build: risolveremo questo problema nel prossimo passaggio.
android {
signingConfigs {
create("release") {
storeFile = file("release.jks")
storePassword = "superSecret"
keyAlias = "upload"
keyPassword = "superSecret"
}
}
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
}
}
}Tenere i segreti fuori da Git
Non esegua mai il commit delle password o del keystore nel controllo versione. Li legga invece da un file locale keystore.properties, escluso da Git.
Aggiunga keystore.properties e *.jks a .gitignore.
// top of app/build.gradle.kts
val keystoreProps = Properties().apply {
val f = rootProject.file("keystore.properties")
if (f.exists()) load(f.inputStream())
}
android {
signingConfigs {
create("release") {
storeFile = file(keystoreProps["storeFile"] as String)
storePassword = keystoreProps["storePassword"] as String
keyAlias = keystoreProps["keyAlias"] as String
keyPassword = keystoreProps["keyPassword"] as String
}
}
}Il file keystore.properties
Il file delle proprietà corrispondente è un semplice elenco di coppie chiave=valore, escluso da Git e conservato in modo sicuro, ad esempio in un password manager o in un archivio di segreti CI.
Su un server CI, in genere si inseriscono questi valori come segreti forniti tramite variabili d'ambiente, invece di usare un file versionato.
# keystore.properties (git-ignored!)
storeFile=release.jks
storePassword=superSecret
keyAlias=upload
keyPassword=superSecretPlay App Signing
Le versioni moderne di Play utilizzano Play App Signing. In questo caso Google conserva la vera chiave di firma dell'app nella propria infrastruttura sicura e la usa per firmare gli APK distribuiti agli utenti.
Lei gestisce solo una chiave di caricamento: firma il bundle con questa chiave e lo carica. Play verifica la chiave di caricamento, la rimuove e firma nuovamente il bundle con la chiave di firma dell'app.
Il vantaggio principale è che, se perde la chiave di caricamento, può richiederne la reimpostazione; la chiave di firma dell'app, quella considerata affidabile dagli utenti, rimane al sicuro presso Google.
Chiave di caricamento e chiave di firma dell'app
Due chiavi, due funzioni: non le confonda:
- Chiave di caricamento — è sua. Firma l'AAB che carica. Può essere reimpostata se viene persa.
- Chiave di firma dell'app — appartiene a Google, oppure è una chiave caricata da lei una sola volta. Firma gli APK finali installati dagli utenti. È permanente.
Quando registra una nuova app, la soluzione più semplice è lasciare che Google generi la chiave di firma dell'app e firmare i caricamenti con la propria chiave di caricamento.
Verificare una firma
Per verificare come è firmato un artefatto, utilizzi apksigner dagli strumenti di build dell'SDK Android. Il comando indica il certificato di firma e gli schemi di firma presenti (v1/v2/v3).
Il confronto dell'impronta SHA-256 del certificato è anche il metodo con cui si registra l'app presso servizi come Firebase o Google Sign-In.
# Verify and print signer certificates of an APK
apksigner verify --print-certs app-release.apk
# Show the SHA-256 fingerprint of a keystore key
keytool -list -v -keystore release.jks -alias uploadProteggere le chiavi
La chiave di caricamento è difficile da sostituire e la chiave di firma dell'app, se gestita autonomamente, è impossibile da sostituire. Le tratti come gioielli della corona:
- Esegua il backup del keystore in almeno due posizioni sicure.
- Conservi le password in un password manager, mai nel codice sorgente.
- Utilizzi Play App Signing, così una chiave di caricamento persa può essere recuperata.
- Limiti il numero di membri del team che possono accedere al keystore.
Molte app pubblicate sono state abbandonate semplicemente perché lo sviluppatore ha perso la chiave e non ha più potuto distribuire aggiornamenti.
Unire tutti gli elementi
Il flusso completo per firmare una release è il seguente:
- Crei un keystore di caricamento con
keytool. - Lo colleghi a
signingConfigs, leggendo i segreti dakeystore.properties. - Crei un
.aabfirmato con./gradlew bundleRelease. - Carichi il bundle su Play, che lo firma nuovamente con la chiave di firma dell'app prima di distribuirlo agli utenti.
D'ora in poi, ogni aggiornamento dovrà essere firmato con la stessa chiave di caricamento.
Verifica rapida
Con Play App Signing attivo, quale chiave utilizza per firmare il bundle che carica e cosa succede se la perde?
Riepilogo: la firma dell'app
La firma è ciò che rende un'app Android installabile e aggiornabile:
- Un keystore contiene le chiavi; ogni chiave ha un alias e delle password.
- Crei una chiave con validità lunga usando
keytoole la colleghi asigningConfigs. - Tenga le password fuori da Git tramite
keystore.propertiese.gitignore. - Play App Signing separa le chiavi nella propria chiave di caricamento, reimpostabile, e nella permanente chiave di firma dell'app di Google.
- Esegua con attenzione il backup delle chiavi: una chiave persa può decretare la fine dell'app.
Prossimo argomento: configurare la Play Console e la scheda dello store.
Domande Frequenti
La lezione «Firma dell'app» è gratuita?
Sì — il testo completo di «Firma dell'app» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Android Academy, passa a CoddyKit PRO. Il corso Android Academy include 4 lezioni in totale.
Cosa imparerò in «Firma dell'app»?
Chiavi e Play App Signing Eserciti Android Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Android Academy?
Non è richiesta alcuna esperienza precedente. Android Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Firma dell'app»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Android Academy?
Sì. Ogni lezione Android Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Preparare una build per il rilascio
- Firma dell'app
- Play Console e scheda dell'app
- Distribuzioni progressive e aggiornamenti