Firmare l'app

Android richiede che tutti gli APK siano firmati digitalmente con un certificato prima sono installati su un dispositivo o aggiornati. Durante il rilascio tramite app per Android Bundle, devi firmare l'app bundle con un caricamento prima di caricarla in Play Console, e la firma dell'app di Google Play si occupa il resto. Per le app che distribuiscono tramite APK sul Play Store o su altri devi firmare manualmente gli APK per il caricamento.

Questa pagina illustra alcuni importanti concetti relativi alla firma dell'app e sicurezza, come firmare la tua app per il rilascio su Google Play usando Android Studio e su come configurare la firma dell'app di Google Play.

Di seguito è riportata una panoramica generale dei passaggi che potresti dover seguire per per firmare e pubblicare una nuova app su Google Play:

  1. Generare una chiave di caricamento e un archivio chiavi
  2. Firmare l'app con la chiave di caricamento
  3. Configurare la funzionalità di firma dell'app di Google Play
  4. Caricare l'app su Google Play
  5. Preparazione e implementare la release dell'app

Se invece la tua app è già pubblicata sul Google Play Store con un chiave di firma dell'app esistente o preferisci scegliere la chiave di firma dell'app per anziché lasciare che sia Google a generarla:

  1. Firma l'app con la chiave di firma dell'app.
  2. Carica la chiave di firma dell'app nella funzionalità di firma dell'app di Google Play.
  3. (Consigliato) Genera e registra un certificato di caricamento per ricevere aggiornamenti futuri sull'app
  4. Caricare l'app su Google Play
  5. Preparazione e implementare la release dell'app

Questa pagina spiega anche come gestire le tue chiavi durante il caricamento dell'app ad altri store. Se non utilizzi Android Studio o preferisci firmare il tuo dalla riga di comando, scopri come utilizzare apksigner

Firma dell'app di Google Play

Con la firma dell'app di Google Play, Google gestisce e protegge la firma della tua app e la utilizza per firmare gli APK da distribuire. Inoltre, poiché le app i pacchetti rinviano la creazione e la firma di APK al Google Play Store, devi configurare la firma dell'app di Google Play prima di caricare l'app bundle. In questo modo ti consente di usufruire di quanto segue:

  • Utilizzare Android App Bundle e supportare le modalità di invio avanzate di Google Play. Android App Bundle rende la tua app molto più piccola, le tue release più semplici e consente di usare moduli di funzionalità e offrire esperienze istantanee.
  • Aumenta la sicurezza della tua chiave di firma e rendi possibile l'utilizzo di un una chiave di caricamento separata per firmare l'app bundle che carichi su Google Play.
  • L'upgrade della chiave ti consente di modificare la chiave di firma dell'app se quella esistente è stata compromessa o se devi eseguire la migrazione a un una chiave con una migliore crittografia

La firma dell'app di Google Play utilizza due chiavi: la chiave di firma dell'app e il caricamento , descritte in dettaglio nella sezione Chiavi e archivi chiavi. Conservi la chiave di caricamento e la usi per firmare la tua app per caricarla sul Google Play Store. Google utilizza il certificato di caricamento per verificare la tua identità e firma gli APK con la chiave di firma dell'app per come mostrato nella Figura 1. Se utilizzi una chiave di caricamento separata, puoi richiedere la reimpostazione della chiave di caricamento in caso di smarrimento o compromissione della chiave.

In confronto, per le app per cui non è stato attivato Google Play Con la firma dell'app, se perdi la chiave di firma dell'app, perdi la possibilità di aggiornarla.

Figura 1. Firmare un'app con la firma dell'app di Google Play

Le chiavi sono archiviate nella stessa infrastruttura su cui Google utilizza le tue chiavi, protette dal Key Management Service di Google. Puoi scoprire di più sull'infrastruttura tecnica di Google leggendo le White paper sulla sicurezza di Google Cloud

Quando utilizzi la firma dell'app di Google Play, se perdi la chiave di caricamento o se se è stata compromessa, puoi richiedere la reimpostazione della chiave di caricamento in Play Console. Poiché la chiave di firma dell'app è protetta da Google, puoi continuare a caricare nuove versioni della tua app sotto forma di aggiornamenti dell'app originale, se modifichi le chiavi di caricamento. Per ulteriori informazioni, consulta Resettare un dispositivo smarrito o compromesso chiave di caricamento privata.

Nella prossima sezione vengono descritti alcuni termini e concetti importanti relativi all'app firma e sicurezza. Se preferisci andare avanti e scoprire come preparare i tuoi app per il caricamento sul Google Play Store, vai alla sezione Firmare l'app per di IA generativa.

Archivi chiavi, chiavi e certificati

Gli archivi di chiavi Java (.jks o .keystore) sono file binari che fungono da repository di certificati e chiavi private.

Un certificato di chiave pubblica (.der o .pem file), noto anche come certificato o un certificato di identità, contiene la chiave pubblica di una coppia di chiavi pubblica/privata, nonché altri metadati che identificano il proprietario (ad esempio nome e posizione) che contiene la chiave privata corrispondente.

Di seguito sono riportati i diversi tipi di chiavi che dovresti conoscere:

  • Chiave di firma dell'app: la chiave utilizzata per firmare gli APK installati su un dal dispositivo dell'utente. Nell'ambito del modello di aggiornamento sicuro di Android, la chiave di firma non modifiche per tutta la durata dell'app. La chiave di firma dell'app è privata e deve devono essere tenuti segreti. Tuttavia, puoi condividere il certificato generato usando la chiave di firma dell'app.
  • Chiave di caricamento: la chiave che utilizzi per firmare l'app bundle o l'APK prima di caricarla per la firma dell'app con Google Play. Devi di mantenere segreta la chiave di caricamento. Tuttavia, puoi condividere il certificato generato utilizzando la chiave di caricamento. Puoi generare una chiave di caricamento in una delle nei seguenti modi:

    • Se scegli che Google generi la chiave di firma dell'app per te quando attiva, il token che usi per firmare la release dell'app è designata come chiave di caricamento.
    • Se fornisci a Google la chiave di firma dell'app quando attivi la nuova versione o app esistente, puoi generare una nuova chiave di caricamento durante dopo l'attivazione per una maggiore sicurezza.
    • Se non generi una nuova chiave di caricamento, continuerai a usare la tua app chiave di firma come chiave di caricamento per firmare ogni release.

    Suggerimento: per tenere al sicuro le chiavi, ti consigliamo di verificare che la tua app la chiave di firma e la chiave di caricamento sono diverse.

Collaborare con i provider API

Puoi scaricare il certificato per la chiave di firma dell'app e il tuo caricamento in Release > Configurazione > pagina di firma dell'app in Play Console. Viene utilizzato per registrare le chiavi pubbliche con Provider di API; è destinato a essere condiviso, in quanto non contiene i tuoi chiave.

Una impronta digitale del certificato è una rappresentazione breve e univoca di un che viene spesso richiesto dai fornitori di API insieme al nome del pacchetto. per registrare un'app al fine di utilizzare il loro servizio. Impronte MD5, SHA-1 e SHA-256 dei certificati di firma dell'app e di caricamento sono disponibili nella pagina di firma dell'app di Play Console. È possibile calcolare altre fingerprint scaricando il file certificato originale (.der) dalla stessa pagina.

Firma la build di debug

Durante l'esecuzione o il debug del progetto dall'IDE, Android Studio firma automaticamente la tua app con un certificato di debug generato da Android SDK. La prima volta che esegui o esegui il debug del tuo progetto in Android Studio, IDE crea automaticamente l'archivio chiavi e il certificato di debug $HOME/.android/debug.keystore e imposta le password dell'archivio chiavi e delle chiavi.

Il certificato di debug viene creato dagli strumenti di creazione e non è sicuro design, la maggior parte degli store (incluso il Google Play Store) non accetta app firmato con un certificato di debug per la pubblicazione.

Android Studio archivia automaticamente le informazioni di firma di debug in un in modo da non doverla inserire ogni volta che esegui il debug. Un file di firma è un oggetto costituito da tutte le informazioni necessarie firmare la tua app, inclusi posizione dell'archivio chiavi, password dell'archivio chiavi, nome della chiave password della chiave.

Per ulteriori informazioni su come creare ed eseguire app per il debug, consulta Creare ed eseguire app per il debug ed esegui l'app.

Scadenza del certificato di debug

Il certificato autofirmato utilizzato per firmare la tua app per il debug ha un data di scadenza di 30 anni dalla sua data di creazione. Quando il certificato scade, ricevi un errore di generazione.

Per risolvere il problema, elimina il file debug.keystore archiviato in uno di nelle seguenti posizioni:

  • ~/.android/ su OS X e Linux
  • C:\Documents and Settings\user\.android\ attivo Windows XP
  • C:\Users\user\.android\ su Windows Vista e Windows 7, 8 e 10

La prossima volta che creerai ed esegui una versione di debug della tua app, Android Studio rigenera un nuovo archivio chiavi e una nuova chiave di debug.

Firma la tua app per il rilascio su Google Play

Quando è tutto pronto per pubblicare la tua app, devi firmarla e caricarla in uno store come Google Play. Quando pubblichi la tua app su Google Play per la prima volta devi configurare anche la firma dell'app di Google Play. Firma dell'app di Google Play è facoltativo per le app create prima di agosto 2021. In questa sezione viene illustrato come firmare correttamente la tua app per la release e configurare la firma dell'app di Google Play.

Generare una chiave di caricamento e un archivio chiavi

Se non hai ancora una chiave di caricamento, utile per la configurazione di Google Play Firma dell'app, puoi generarne uno utilizzando Android Studio nel seguente modo:

  1. Nella barra dei menu, fai clic su Crea > Genera bundle/APK firmato.
  2. Nella finestra di dialogo Genera bundle o APK firmato, seleziona Android App Bundle o APK e fai clic su Avanti.
  3. Sotto il campo relativo a Percorso archivio chiavi, fai clic su Crea nuovo.
  4. Nella finestra Nuovo archivio chiavi, specifica le seguenti informazioni per dell'archivio chiavi e della chiave, come mostrato nella figura 2.

    Figura 2. Crea una nuova chiave di caricamento e un nuovo archivio chiavi in Android Studio.

  5. Archivio chiavi

    • Percorso archivio chiavi:seleziona la posizione in cui creare l'archivio chiavi. Inoltre, è necessario aggiungere un nome file alla fine del percorso di posizione con l'estensione .jks.
    • Password: crea e conferma una password sicura per l'archivio chiavi.
  6. Chiave

    • Alias: inserisci un nome che identifica la chiave.
    • Password: crea e conferma una password sicura per la chiave. Questo deve essere la stessa password dell'archivio chiavi. Fai riferimento al problema noto per ulteriori informazioni).
    • Validità (anni): imposta la durata in anni in cui la chiave eseguirà sia valida. La chiave deve essere valida per almeno 25 anni, così puoi firmare gli aggiornamenti dell'app con la stessa chiave per tutta la durata dell'app.
    • Certificato:inserisci alcune informazioni su di te per il tuo certificato. Queste informazioni non vengono visualizzate nella tua app, ma sono incluse nel certificato come parte dell'APK.
  7. Una volta compilato il modulo, fai clic su OK.

  8. Se vuoi creare e firmare la tua app con la chiave di caricamento, continua alla sezione su come Firma l'app con la chiave di caricamento. Se vuoi solo generare le chiavi e l'archivio chiavi, fai clic su Annulla.

Firma l'app con la chiave

Se hai già una chiave di caricamento, usala per firmare la tua app. Se invece la tua app è già stata firmata e pubblicata nel Google Play Store con un'app esistente chiave di firma, usala per firmare la tua app. In seguito, puoi generare e registrare un una chiave di caricamento separata con Google Play per firmarla e caricarla. i successivi aggiornamenti dell'app.

Per firmare la tua app utilizzando Android Studio, segui questi passaggi:

  1. Se al momento non vedi la finestra di dialogo Genera bundle o APK firmato fai clic su Crea > Genera bundle/APK firmato.
  2. Nella finestra di dialogo Genera bundle o APK firmato, seleziona App Android Bundle o APK e fai clic su Avanti.
  3. Seleziona un modulo dal menu a discesa.
  4. Specifica il percorso dell'archivio chiavi, l'alias della chiave e inserisci il valore password per entrambi. Se non hai ancora preparato l'archivio chiavi di caricamento e la chiave, prima su Genera una chiave di caricamento e un archivio chiavi e poi torna indietro per completare questo passaggio.

    Figura 3. Firma l'app con la chiave di caricamento.

  5. Fai clic su Avanti.

  6. Nella finestra successiva (mostrata nella Figura 4), seleziona una cartella di destinazione per il tuo firmata per l'app, selezionare il tipo di build e scegliere le versioni del prodotto, se applicabile.

  7. Se stai creando e firmando un APK, devi selezionare la firma Le versioni che vuoi siano supportate dalla tua app. Per saperne di più, consulta schemi di firma dell'app

  8. Fai clic su Crea.

Figura 5. Fai clic sul link nel popup per analizzare o individuare la tua app gruppo.

Al termine della creazione dell'app firmata da Android Studio, puoi: individua o analizza la tua app facendo clic sull'opzione appropriata nella come mostrato nella Figura 5.

Ora è tutto pronto per attivare la firma dell'app di Google Play e caricare la tua app la release dell'app. Se non hai mai utilizzato la procedura di pubblicazione delle app, ti consigliamo di per leggere la Panoramica del lancio. Altrimenti, vai alla pagina sul caricamento dell'app su Google Play Google Cloud.

Utilizzare la firma dell'app di Google Play

Come descritto in precedenza, la configurazione La firma dell'app di Google Play è necessaria per firmare la tua app per la distribuzione tramite Google Play (ad eccezione delle app creati prima di agosto 2021, che potrebbero continuare a distribuire APK autofirmati). I passaggi da seguire variano a seconda che l'app non sia stata ancora pubblicata su Google Play oppure la tua app è già firmata e pubblicata in precedenza Agosto 2021 con una chiave di firma dell'app esistente.

Configura una nuova app

Per configurare la firma per un'app non ancora pubblicata su Google Play: procedi nel seguente modo:

  1. Se non l'hai ancora fatto, genera una chiave di caricamento e firma l'app con la chiave di caricamento.
  2. Accedi alla Play Console.
  3. Segui i passaggi per preparare e implementa la tua release per creare una nuova release.
  4. Dopo aver scelto un canale di rilascio, configura la firma dell'app nella sezione App firma come segue:
      .
    • Per fare in modo che Google Play generi una chiave di firma dell'app e la usi per firmare la tua app, non devi fare nulla. Il token che usi per firmare la tua prima diventa la tua chiave di caricamento e ti consigliamo di utilizzarla per firmare futuri release.
    • Per usare la stessa chiave di un'altra app sul tuo account sviluppatore, seleziona Cambia la chiave di firma dell'app > Usa la stessa chiave di un'altra app di questa app account, seleziona un'app e fai clic su Continua.
    • Per fornire la tua chiave di firma che Google possa usare per firmare la tua app: seleziona Cambia la chiave di firma dell'app e scegli una delle opzioni Esporta e caricamento che ti consente di caricare in modo sicuro una chiave privata e la relativa chiave pubblica. certificato.
di Gemini Advanced.

Nella sezione App Bundle, fai clic su Sfoglia. file per individuare e caricare l'app che hai firmato usando la chiave di caricamento. Per ulteriori informazioni informazioni sul rilascio della tua app, consulta preparare e implementare la release. Quando rilasci l'app dopo aver configurato la firma dell'app di Google Play: Google Play genera (a meno che non carichi una chiave esistente) e gestisce i chiave di firma. È sufficiente firmare gli aggiornamenti successivi dell'app usando il chiave di caricamento prima di caricarla su Google Play.

Se devi creare una nuova chiave di caricamento per l'app, vai alla sezione su come per Reimpostare una chiave di caricamento privata persa o compromessa.

Attivare un'app esistente

Se aggiorni un'app già pubblicata su Google Play utilizzando un chiave di firma dell'app esistente, puoi attivare la firma dell'app di Google Play come che segue:

  1. Accedi a Play Console e apri la tua app.
  2. Nel menu a sinistra, fai clic su Release > Configurazione > Firma dell'app.
  3. Se applicabile, leggi i Termini di servizio e seleziona Accetto.
  4. Seleziona una delle opzioni che meglio descrive la chiave di firma che vuoi caricare su Google Play e seguire le istruzioni mostrate. Per Ad esempio, se utilizzi un archivio chiavi Java per la chiave di firma, seleziona Carica una nuova chiave di firma dell'app dall'archivio chiavi Java e segui le istruzioni istruzioni per scaricare ed eseguire lo strumento PEPK e per caricare il file generato con la tua chiave criptata.
  5. Fai clic su Registrati.

A questo punto dovresti vedere una pagina con i dettagli della firma e del caricamento dell'app certificati. Ora Google Play firma la tua app con la chiave esistente quando dal deployment agli utenti. Tuttavia, uno dei vantaggi più importanti dell'app Google Play Con la firma si intende la possibilità di separare la chiave che utilizzi per firmare l'elemento caricato su Google Play dalla chiave che Google Play utilizza per firmare della tua app per distribuirla agli utenti. Pertanto, ti consigliamo di seguire i passaggi per generare e registrare una chiave di caricamento separata.

Genera e registra un certificato di caricamento

Se pubblichi un'app non firmata da una chiave di caricamento, Play Console offre la possibilità di registrarne uno per gli aggiornamenti futuri dell'app. Questo passaggio è facoltativo, ma ti consigliamo di pubblicare l'app con una chiave separata da quella usata da Google Play per distribuire la tua app agli utenti. In questo modo, Google protegge la tua chiave di firma e tu puoi per reimpostare una chiave di caricamento privata persa o compromessa. Questa sezione descrive come creare una chiave di caricamento, generare un caricamento e registralo su Google Play per il futuro. aggiornamenti della tua app.

Di seguito vengono descritte le situazioni in cui è disponibile l'opzione di registrazione Un certificato di caricamento in Play Console:

  • Quando pubblichi una nuova app firmata con una chiave di firma e decidi di attivarla Firma dell'app di Google Play.
  • Quando stai per pubblicare un'app esistente per cui è già stata attivata Google Play Firma dell'app, ma viene firmata usando la propria chiave di firma.

Se non pubblichi un aggiornamento di un'app esistente già attivata alla firma dell'app di Google Play e vuoi registrare un certificato di caricamento, completa i passaggi riportati di seguito e passa alla sezione su come reimpostare una chiave di caricamento privata persa o compromessa.

Se non l'hai ancora fatto, generare una chiave di caricamento e un archivio chiavi.

Dopo aver creato la chiave di caricamento e l'archivio chiavi, devi generare un'immagine dalla tua chiave di caricamento utilizzando keytool, con il seguente comando:

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Ora che hai il certificato di caricamento, registralo con Google quando ti viene richiesto in Play Console o quando reimposti la chiave di caricamento.

Eseguire l'upgrade della chiave di firma dell'app

In alcuni casi, potresti voler cambiare la chiave di firma dell'app. Per Ad esempio, perché vuoi una chiave con una migliore crittografia o la tua chiave di firma è stato compromesso. Tuttavia, poiché gli utenti possono aggiornare l'app solo se dell'aggiornamento è firmato con la stessa chiave di firma, è difficile modificare per un'app già pubblicata.

Se pubblichi la tua app su Google Play, puoi eseguire l'upgrade della chiave di firma per il tuo pubblicata tramite Play Console; la nuova chiave viene utilizzata per firmare le installazioni e aggiornamenti delle app su Android 13 e versioni successive, mentre la chiave di firma dell'app meno recente è utilizzato per firmare gli aggiornamenti per gli utenti con versioni precedenti di Android.

Per saperne di più, leggi Esegui l'upgrade della chiave di firma dell'app.

Reimposta una chiave di caricamento privata persa o compromessa

Se hai perso la chiave di caricamento privata o se la tua chiave privata è stata compromessa, puoi crearne uno nuovo richiedere la reimpostazione della chiave di caricamento nella Play Console.

Configura il processo di compilazione per firmare automaticamente la tua app

In Android Studio, puoi configurare il progetto per firmare la versione della release dell'app automaticamente durante il processo di compilazione mediante la creazione di un configurazione e assegnandola al tipo di build della release. Un file di firma è composta da una posizione dell'archivio chiavi, una password dell'archivio chiavi, un alias della chiave password della chiave. Per creare una configurazione di firma e assegnarla alla tua release utilizzando Android Studio, completa i seguenti passaggi:

  1. Nella finestra Progetto, fai clic con il tasto destro del mouse sulla tua app e seleziona Apri le impostazioni del modulo.
  2. Nella finestra Struttura del progetto, sotto Moduli nel riquadro a sinistra, fai clic sul modulo desiderato per firmare.
  3. Fai clic sulla scheda Firma, quindi su Aggiungi. .
  4. Seleziona il file del tuo archivio chiavi, inserisci un nome per questa configurazione di firma (poiché potresti crearne più di uno) e inserisci le informazioni richieste.

    Figura 7. Finestra per la creazione di una nuova firma configurazione.

  5. Fai clic sulla scheda Tipi di build.
  6. Fai clic sulla build di release.
  7. In Configurazione firma, seleziona la configurazione di firma. che hai appena creato.

    Figura 8. Seleziona una configurazione di firma in Android Studio.

  8. Fai clic su OK.

Ogni volta che crei il tipo di build della release, seleziona un'opzione nella sezione Crea > Crea bundle/APK in Android Studio, IDE firmerà la tua app automaticamente, utilizzando la configurazione di firma che hai specificato. Puoi trovare l'app bundle o l'APK firmato nelle build/outputs/ all'interno della directory del progetto per che stai creando.

Quando crei una configurazione di firma, le informazioni relative alla firma sono incluse nei file di build Gradle. Se lavori in un team condividi il codice pubblicamente, dovresti mantenere al sicuro le informazioni sulla firma rimuovendola dai file di build e archiviandola separatamente. Puoi leggere scopri di più su come rimuovere le informazioni di firma dai file di build in Rimuovi le informazioni di firma dalla tua build File. Per ulteriori informazioni sulla protezione delle informazioni di firma, vedi Tieni il token al sicuro di seguito.

Aggiungi un segno diverso ai sapori di ogni prodotto

Se la tua app utilizza sapori di prodotto e vuoi firmare ogni gusto in modo diverso, puoi creare configurazioni di firma aggiuntive e assegnarle per sapore:

  1. Nella finestra Progetto, fai clic con il tasto destro del mouse sulla tua app e seleziona Apri le impostazioni del modulo.
  2. Nella finestra Struttura del progetto, sotto Moduli nel riquadro a sinistra, fai clic sul modulo desiderato per firmare.
  3. Fai clic sulla scheda Firma, quindi su Aggiungi. .
  4. Seleziona il file del tuo archivio chiavi, inserisci un nome per questa configurazione di firma (poiché potresti crearne più di uno) e inserisci le informazioni richieste.

    Figura 10. Finestra per la creazione di una nuova firma configurazione.

  5. Ripeti i passaggi 3 e 4, se necessario, finché non avrai creato tutte le firme configurazioni.
  6. Fai clic sulla scheda Preferenze.
  7. Fai clic sul gusto che vuoi configurare, quindi seleziona quello appropriato dal menu a discesa Signing Config (Configurazione firma).

    Figura 11. Configura le impostazioni di firma in base alla versione di prodotto.

    Ripeti l'operazione per configurare le altre varianti dei prodotti.

  8. Fai clic su OK.

Puoi anche specificare le impostazioni di firma nei file di configurazione Gradle. Per Per ulteriori informazioni, consulta la sezione Configurazione delle impostazioni di firma.

Eseguire un report sulla firma

Per ottenere le informazioni sulla firma per ciascuna variante della tua app, esegui Gradle signingReport attività in Android Studio:

  1. Seleziona Visualizza > Finestre degli strumenti > Gradle per aprire la finestra dello strumento Gradle
  2. Seleziona Tuaapp > Attività > Android > SignegReport per eseguire il report.
di Gemini Advanced.

Gestisci la tua chiave di firma

Se scegli di non attivare la firma dell'app di Google Play (solo per le app create prima di agosto 2021), puoi gestire il tuo archivio chiavi e la tua chiave di firma dell'app. Ricorda che sei responsabile della protezione della chiave e dell'archivio chiavi. Inoltre, la tua app non potrà supportare Android App Bundle, Play Feature Delivery e Play Asset Delivery.

Prima di creare il tuo archivio chiavi e chiavi, assicurati di scegliere una password efficace per l'archivio chiavi e una password efficace separata per ogni chiave privata archiviata nell'archivio chiavi. Devi conservare l'archivio chiavi in un luogo in un luogo sicuro. Se perdi l'accesso alla chiave di firma dell'app o se la tua chiave compromesso, Google non può recuperare automaticamente la chiave di firma dell'app non essere in grado di rilasciare nuove versioni della tua app agli utenti come aggiornamenti della app originale. Per ulteriori informazioni, vedi Tieni il token al sicuro di seguito.

Se gestisci il tuo archivio chiavi e la tua chiave di firma dell'app, quando firmi l'APK la firmerà localmente usando la chiave di firma dell'app e caricherà l'APK firmato direttamente sul Google Play Store per la distribuzione, come mostrato nella Figura 12.

Figura 12. Firmare un'app quando gestisci la tua chiave di firma dell'app

Quando utilizzi Firma dell'app di Google Play, Google protegge la tua chiave di firma e garantisce che le tue app siano siano stati firmati correttamente e siano in grado di ricevere aggiornamenti nell'arco della propria vita. Tuttavia, se decidi di gestire autonomamente la chiave di firma dell'app, sono disponibili alcune considerazioni che dovresti tenere a mente.

Considerazioni sulla firma

Devi firmare l'app con lo stesso certificato per tutta la durata prevista e la durata del ciclo di vita. Ti consigliamo di farlo per diversi motivi:

  • Upgrade dell'app: quando il sistema installa un aggiornamento di un'app, confronta i certificati della nuova versione con quelli della versione completamente gestita. Il sistema consente l'aggiornamento in caso di corrispondenza dei certificati. Se firmi il nuova versione con un certificato diverso, devi assegnare un pacchetto diverso nome all'app. In questo caso, l'utente installa la nuova versione nuova app.
  • Modularità delle app: Android consente l'esecuzione degli APK firmati dallo stesso certificato. nello stesso processo, se le app lo richiedono, in modo che il sistema le tratti come un'unica app. In questo modo puoi eseguire il deployment dell'app in moduli e gli utenti possono aggiornare ogni modulo in modo indipendente.
  • Condivisione di codice/dati tramite autorizzazioni: Android fornisce soluzioni basate su firma applicazione delle autorizzazioni, in modo che un'app possa esporre la funzionalità a un'altra app firmato con un certificato specificato. Firmando più APK con stesso certificato e di usare controlli delle autorizzazioni basati sulla firma, le app possono condividere codice e dati in modo sicuro.

Se prevedi di supportare gli upgrade di un'app, assicurati che la chiave di firma dell'app sia un periodo di validità superiore alla durata prevista dell'app. Una validità di almeno 25 anni. Quando il periodo di validità della chiave scade, gli utenti non potranno più eseguire facilmente l'upgrade alle nuove versioni la tua app.

Se prevedi di pubblicare le tue app su Google Play, la chiave che utilizzi per firmare l'app deve avere un periodo di validità che termina dopo il 22 ottobre 2033. Google Play applica questo requisito per garantire che gli utenti possano eseguire senza problemi l'upgrade delle app quando sono disponibili nuove versioni.

Tieni al sicuro il token

Se scegli di gestire e proteggere autonomamente la chiave di firma e l'archivio chiavi dell'app (invece di attivare Firma dell'app di Google Play), proteggendo la tua app che la chiave di firma sia fondamentale sia per te che per l'utente. Se consenti a qualcuno di utilizzare il tuo token, o se lasci l'archivio chiavi e le password in una posizione non sicura, ad esempio terze parti potrebbero trovarli e utilizzarli, la tua identità di creazione e l'affidabilità l'utente sia stato compromesso.

Se una terza parte dovesse riuscire a prendere la chiave di firma dell'app a tua insaputa o l'autorizzazione, la persona in questione potrebbe firmare e distribuire app che sostituiscono intenzionalmente le tue app autentiche o il danneggiarle. Una persona di questo tipo può anche distribuire app con la tua identità che attaccano altre app o il sistema stesso; o danneggiare o rubare i dati degli utenti.

La chiave privata è necessaria per firmare tutte le versioni future della tua app. Se perdi o non trovi la chiave, non potrai pubblicare aggiornamenti un'app esistente. Non puoi rigenerare una chiave generata in precedenza.

La tua reputazione come entità sviluppatore dipende dalla sicurezza della firma dell'app la chiave correttamente, in ogni momento, fino alla scadenza. Ecco alcuni suggerimenti per per conservare la chiave al sicuro:

  • Seleziona password efficaci per l'archivio chiavi e la chiave.
  • Non dare o prestare a nessuno la tua chiave privata e non permettere altre persone conoscono il tuo archivio chiavi e le password delle tue chiavi.
  • Conserva il file dell'archivio chiavi contenente la chiave privata in un luogo sicuro.

In generale, se adotti le precauzioni del buon senso durante la generazione, l'utilizzo e se archivi la chiave, quest'ultima rimarrà sicura.

Rimuovi le informazioni di firma dai file di build

Quando crei una configurazione di firma, Android Studio aggiunge la firma le informazioni in testo normale ai file build.gradle del modulo. Se se lavori con un team o rendere il tuo codice open source, dovresti trasferire informazioni sensibili dai file della build in modo che non siano facilmente accessibili ad altri. Per farlo, devi creare un file di proprietà separato per archiviare per proteggere le informazioni e fare riferimento a tale file nei file di build come segue:

  1. Creare una configurazione di firma e assegnarla a uno o più tipi di build. Queste istruzioni presuppongono che tu abbia configurato una configurazione di firma single per il tipo di build della release, come descritto in Configurare il processo di compilazione per firmare automaticamente l'app, qui sopra.
  2. Crea un file denominato keystore.properties nella radice del tuo progetto. Questo file deve contenere le informazioni sulla firma, come segue:
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. Nel file build.gradle del modulo, aggiungi il codice per caricare keystore.properties prima di android {} bloccare.

    Alla moda

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Nota: puoi scegliere di archiviare i tuoi keystore.properties file in un'altra posizione (ad esempio, nella cartella del modulo anziché nella cartella principale del progetto oppure al server di build se utilizzi uno strumento di integrazione continua). Nella in questo caso, è necessario modificare il codice riportato sopra per inizializzare correttamente keystorePropertiesFile utilizzando il tuo Posizione di keystore.properties file.

  4. Puoi fare riferimento alle proprietà memorizzate in keystoreProperties utilizzando la sintassi keystoreProperties['propertyName']. Modifica il blocco signingConfigs del modulo build.gradle per fare riferimento alle informazioni sulla firma archiviate in keystoreProperties utilizzando questa sintassi.

    Alla moda

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            create("config") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
        ...
      }
  5. Apri la finestra dello strumento Varianti build e assicurati che è selezionato il tipo di build della release.
  6. Seleziona un'opzione in Crea > Crea bundle/APK per creare un APK o un app bundle della build della release. Dovresti vedere l'output della build nella Directory build/outputs/ per il modulo.

Poiché i file di build non contengono più informazioni sensibili, ora puoi includerle nel controllo del codice sorgente o caricarli in un codebase condiviso. Assicurati che per proteggere il file keystore.properties. Questi possono includere e rimuoverlo dal sistema di controllo dei file sorgente.