Come abilitare la firma dell'app Google Play


113

Penso che molti sviluppatori stiano cercando di saperne di più sulla nuova funzione Firma dell'app di Google Play presentata a Google I / O 2017.

La possibilità di memorizzare il keystore per firmare le app all'interno di Google Play ti fa risparmiare lo sforzo di archiviare in modo sicuro il keystore e può aiutare il sistema a ottimizzare gli APK serviti a ogni dispositivo, in base alle caratteristiche hardware e OS.

Puoi leggere ulteriori informazioni su questo argomento nella documentazione ufficiale qui: https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .

Con la seguente risposta, spiegherò un po 'meglio i passaggi che devi seguire per caricare il tuo keystore originale e come creare il nuovo keystore di upload, che dovrai firmare il tuo APK da questo punto in poi.

Risposte:


189

Questa guida è rivolta agli sviluppatori che hanno già un'applicazione nel Play Store. Se stai iniziando con una nuova app il processo è molto più semplice e puoi seguire le linee guida del paragrafo "Nuove app" da qui

Prerequisiti che il 99% degli sviluppatori possiede già :

  1. Android Studio

  2. JDK 8 e dopo l'installazione è necessario impostare una variabile di ambiente nello spazio utente per semplificare i comandi del terminale. In Windows x64 è necessario aggiungere questo: C:\Program Files\Java\{JDK_VERSION}\binalla Pathvariabile d'ambiente. (Se non sai come fare puoi leggere la mia guida per aggiungere una cartella alla Pathvariabile d'ambiente di Windows 10 ).

Passaggio 0 : apri la console per sviluppatori di Google Play, quindi vai a Gestione delle versioni -> Firma dell'app .

inserisci qui la descrizione dell'immagine

Accetta i TOS di firma dell'app.

inserisci qui la descrizione dell'immagine

Passaggio 1 : scarica lo strumento PEPK facendo clic sul pulsante identico all'immagine sottostante

inserisci qui la descrizione dell'immagine

Passaggio 2 : apri un terminale e digita:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OUTPUT_FILE --encryptionkey = GOOGLE_ENCRYPTION_KEY

Leggenda:

  • PATH_TO_PEPK = Il percorso del pepk.jar che hai scaricato nel passaggio 1 , potrebbe essere qualcosa di simile C:\Users\YourName\Downloads\pepk.jarper gli utenti Windows.
  • PATH_TO_KEYSTORE = Percorso al keystore che utilizzi per firmare l'APK di rilascio. Potrebbe essere un file di tipo * .keystore o * .jks o senza estensione. Qualcosa di simile C:\Android\mykeystoreo C:\Android\mykeystore.keystoreecc ...
  • ALIAS_YOU_USE_TO_SIGN_APK = Il nome dell'alias che utilizzi per firmare l'APK di rilascio.
  • PATH_TO_OUTPUT_FILE = Il percorso del file di output con estensione .pem, qualcosa di simileC:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Questa chiave di crittografia dovrebbe essere sempre la stessa. Puoi trovarlo nella pagina Firma dell'app, copiarlo e incollarlo. Dovrebbe essere in questa forma:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Esempio:

java -jar "C: \ Users \ YourName \ Downloads \ pepk.jar" --keystore = "C: \ Android \ mykeystore" --alias = myalias --output = "C: \ Android \ private_key.pem" - encryptionKey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Premi Invio e dovrai fornire in ordine:

  1. La password del keystore
  2. La password alias

Se tutto è andato bene, ora avrai un file nella cartella PATH_TO_OUTPUT_FILE chiamato private_key.pem.

Passaggio 3 : carica il file private_key.pem facendo clic sul pulsante identico all'immagine sottostante

inserisci qui la descrizione dell'immagine

Passaggio 4 : crea un nuovo file keystore utilizzando Android Studio.

AVRAI BISOGNO DI QUESTO KEYSTORE IN FUTURO PER FIRMARE LE PROSSIME VERSIONI DELLA TUA APP, NON DIMENTICARE LE PASSWORD

Apri uno dei tuoi progetti Android (scegline uno a caso). Vai a Build -> Genera APK firmato e premi Crea nuovo .

inserisci qui la descrizione dell'immagine

Ora dovresti riempire i campi richiesti.

Il percorso del keystore rappresenta il nuovo keystore che creerai, scegli una cartella e un nome utilizzando l'icona dei 3 puntini sulla destra, ho scelto C:\Android\upload_key.jks(l'estensione .jks verrà aggiunta automaticamente)

NOTA: ho usato uploadcome nuovo nome alias, ma se in precedenza hai utilizzato lo stesso keystore con diversi alias per firmare app diverse, dovresti scegliere lo stesso nome alias che avevi in ​​precedenza nel keystore originale.

inserisci qui la descrizione dell'immagine

Premi OK quando hai finito e ora avrai un nuovo upload_key.jkskeystore. Puoi chiudere Android Studio ora.

Passaggio 5 : è necessario estrarre il certificato di caricamento dal upload_key.jkskeystore appena creato . Apri un terminale e digita:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -file PATH_TO_OUTPUT_FILE

Leggenda:

  • UPLOAD_KEYSTORE_PATH = Il percorso del keystore di caricamento appena creato. In questo caso è statoC:\Android\upload_key.jks .
  • UPLOAD_KEYSTORE_ALIAS = Il nuovo alias associato al keystore di caricamento. In questo caso è statoupload .
  • PATH_TO_OUTPUT_FILE = Il percorso del file di output con estensione .pem. Qualcosa di simile aC:\Android\upload_key_public_certificate.pem .

Esempio:

keytool -export -rfc -keystore "C: \ Android \ upload_key.jks" -alias upload -file "C: \ Android \ upload_key_public_certificate.pem"

Premi Invio e dovrai fornire la password del keystore.

Ora se tutto è andato bene, avrai un file nella cartella PATH_TO_OUTPUT_FILE chiamato upload_key_public_certificate.pem.

Passaggio 6 : carica il upload_key_public_certificate.pemfile facendo clic sul pulsante identico all'immagine sottostante

inserisci qui la descrizione dell'immagine

Passaggio 7 : fare clic sul pulsante REGISTRA alla fine della pagina Firma dell'app.

inserisci qui la descrizione dell'immagine

Ora ogni nuova versione dell'APK deve essere firmata con il upload_key.jkskeystore e gli alias creati nel passaggio 4 , prima di essere caricata nella Console per gli sviluppatori di Google Play.

Altre risorse:

Q & A

D: Quando carico l'APK firmato con il nuovo keystore upload_key, Google Play mostra un errore del tipo: Hai caricato un APK non firmato. Devi creare un APK firmato .

R: Seleziona per firmare l'APK con entrambe le firme (V1 e V2) durante la creazione dell'APK di rilascio. Leggi qui per maggiori dettagli.

AGGIORNATO

Il passaggio 4,5,6 consiste nel creare la chiave di caricamento che è facoltativa per le app esistenti

"Chiave di caricamento (facoltativa per le app esistenti): una nuova chiave generata durante la registrazione al programma. Utilizzerai la chiave di caricamento per firmare tutti i futuri APK prima di caricarli nella Play Console." https://support.google.com/googleplay/android-developer/answer/7384423


3
La tua procedura dettagliata è super utile! Dovrebbero metterlo sul sito ufficiale lol
Nei nomi di

3
Le virgolette sono necessarie solo se hai almeno uno spazio all'interno dei tuoi percorsi, ma questo è il modo in cui funziona ogni comando della console. Quindi devi usare le virgolette se il tuo percorso è: "C:\My Path\MyName"ma non se il percorso è C:\MyPath\MyName. A proposito, grazie :)
MatPag

1
@layth La creazione del nuovo keystore è la Step 4guida: D
MatPag

1
L'ho fatto ma quando ho ottenuto la nuova finestra di dialogo del keystore il percorso del keystore e i campi della password erano vuoti, quindi li ho indirizzati al vecchio keystore e ho inserito la vecchia password - btw attualmente bloccato su "keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS - file PATH_TO_OUTPUT_FILE "continua a lamentarsi di non sapere cosa significa keytool. Ho provato ad aggiungere "C: \ Program Files \ Java \ jdk1.8.0_25 \ bin \ keytool.exe" ma non ha funzionato, forse perché non so dove metterlo esattamente ..
NukeouT

9
Sembra che Google abbia cambiato la procedura, perché non riesco più a trovare lo strumento PEPK.
Andrea Motto

31

C'è una soluzione molto più semplice che richiederà un minuto.

  1. Nella Google Play Console, seleziona Gestione delle versioni -> Firma dell'app
  2. Scegli la prima opzione, quella con Genera chiave privata crittografata con Android Studio (o qualcosa del genere; non posso tornare indietro per vedere quella pagina)
  3. In Android Studio genera il tuo Android App Bundle (file .aap) da Build -> Genera Signed Bundle / APK ... , scegli l' opzione Android App Bundle e non dimenticare di selezionare Esporta chiave crittografata (necessaria per registrare la tua app App Google Play firma) opzione. Se non hai un keystore generato, generane uno ad-hoc.
  4. Ora la parte "complicata". Dopo che il .aap è stato generato, Android Studio mostrerà una notifica nell'angolo in basso a destra contenente un percorso alla posizione in cui è stato salvato il file .aap. Nella stessa notifica, se la espandi, troverai un altro collegamento al percorso in cui è stata salvata la chiave privata (chiamato private_key.pepk ). Se perdi questa notifica, non preoccuparti, apri la finestra Registro eventi facendo clic sul pulsante Registro eventi in basso a destra e troverai le stesse informazioni. Apri quella posizione, per me era C: \ Users \ yourUser \ .android

inserisci qui la descrizione dell'immagine

  1. Torna nel browser e premi il pulsante APP FIRMA CHIAVE PRIVATA e vai alla posizione della chiave privata sul tuo computer.

Fatto!

Ora puoi caricare la tua versione che hai generato in precedenza :) Buona fortuna!


1
È la risposta migliore e più semplice
Simon

Mi ha fatto risparmiare così tanto tempo e, cosa più importante, la tranquillità
Meenohara

Non ricevo questa opzione Esporta chiave crittografata (necessaria per registrare la tua app per la firma dell'app Google Play).
Jarvis

Apprezzerei davvero una spiegazione più completa del punto 5 - Non vedo questo pulsante, dov'è, forse il layout è cambiato con gli aggiornamenti recenti?
androidneil

ok bello ora voglio essere curioso di sapere che nel prossimo aggiornamento cosa fare ?? come se avessimo bisogno di nuovo la chiave .pepk o dobbiamo firmare la versione 2 usando la stessa chiave o la nuova chiave privata .pepk pls help
Sunil Chaudhary

15

Durante la migrazione del file del pacchetto dell'applicazione Android (APK) ad Android App Bundle (AAB), pubblicando l'app nel Play Store, ho riscontrato questo problema e sono stato risolto in questo modo di seguito ...

Durante la creazione del .aabfile, viene richiesto il percorso in cui memorizzare il percorso di esportazione della chiave come di seguito:

inserisci qui la descrizione dell'immagine
inserisci qui la descrizione dell'immagine Nella seconda immagine trovi il percorso di esportazione della chiave crittografata Posizione in cui il nostro .pepk memorizzerà nella cartella specifica durante la generazione del file .aab.

Una volta effettuato l'accesso alla Google Play Console con le credenziali del Play Store: seleziona il tuo progetto dal lato sinistro scegli l'opzione Firma app Gestione rilascio >> Firma app inserisci qui la descrizione dell'immagine

troverai la finestra di certificazione della firma di Google App ACCETTA.

Dopodiché troverai tre pulsanti di opzione per selezionare **

Carica una chiave esportata dal pulsante di opzione di Android Studio

**, espanderà il pulsante APP FIRMA CHIAVE PRIVATA come di seguito

inserisci qui la descrizione dell'immagine

fare clic sul pulsante e scegliere il .pepkfile (Abbiamo memorizzato durante la generazione del .aabfile come sopra)

Leggi tutte le altre opzioni e invia.

Una volta completato con successo, puoi tornare alla versione dell'app e sfogliare il file .aab e completare RollOut ...

@Ambilpura


ok bello ora voglio essere curioso di sapere che nel prossimo aggiornamento cosa fare ?? come se avessimo bisogno di nuovo la chiave .pepk o dobbiamo firmare la versione 2 usando la stessa chiave o la nuova chiave privata .pepk pls help
Sunil Chaudhary

Secondo la mia comprensione, non è necessario creare per la prossima volta, puoi usare la vecchia chiave .pepk ....
Ambilpura Sunil Kumar

Come usi il .pepk per un aggiornamento? Ho utilizzato con successo la firma dell'app Google durante il caricamento della mia app, ma ora sto cercando di inviare un aggiornamento e non so come @AmbilpuraSunilKumar
nt95

Anch'io. Ho appena caricato l'abate nel Play Store e ignoro completamente il file .pepk. Sarebbe bello sapere a cosa serve esattamente e cosa fare quando si aggiorna l'app.
Julian Eggers

4

Ho dovuto fare quanto segue:

  1. Crea un'app nella console di Google Play inserisci qui la descrizione dell'immagine

2. Vai a Versioni app -> Gestisci produzione -> Crea versione

3.Fare clic su Continua su Firma dell'app di Google Play inserisci qui la descrizione dell'immagine

4.Crea il certificato di caricamento eseguendo "keytool -genkey -v -keystore c: \ path \ to \ cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000"

5. Firma il tuo apk con il certificato generato (c: \ path \ to \ cert.keystore)

6. Carica l'apk firmato nelle versioni dell'app -> Gestisci la produzione -> Modifica versione

7.Con il caricamento dell'apk, il certificato generato nel passaggio 4 è stato aggiunto ai certificati di firma dell'app ed è diventato il certificato di firma per tutte le build future.


1
Ho fatto esattamente questo ma l'accesso a Google dalla mia app non funziona se installo l'app tramite Google Play Store. * Ma * se scarico l'apk dalla pagina di gestione del rilascio e lo installo manualmente nel mio emulatore / dispositivo, funziona. Qualche idea di cosa mi manchi?
Raghudevan Shankar

Ho cercato ovunque per circa 3 ore e finalmente mi hai salvato!
Oliver Dixon

3

Quando utilizzi Fabric per le versioni beta pubbliche (firmate con prod config), NON USARE Firma dell'app di Google Play. Dovrai dopo aver creato due apk firmati!

Quando distribuisci su più Play Store (Samsung, Amazon, Xiaomi, ...) dovrai costruire di nuovo due APK firmati.

Quindi fai molta attenzione con Google Play App Signing.

Non è possibile ripristinarlo: / e Google Play non ha accettato gli apk firmati con la chiave di produzione. Dopo aver abilitato la firma dell'app Google Play, viene accettata solo la chiave di caricamento ...

È davvero complicato la distribuzione di CI ...

Prossimi problemi con l'upgrade: https://issuetracker.google.com/issues/69285256


1
I DON'T USEcommenti in grassetto maiuscolo sono pericolosi. Puoi spiegare in dettaglio il problema e la soluzione consigliata? Non c'è affatto una soluzione? È così difficile firmare due volte un APK per Fabric?
Gokhan Arik

1
Non è così difficile firmare l'APK due volte, ma come ho descritto, devi creare due (o più) APK che non sono identici (quindi stai testando su Fabric Beta un file diverso da quello che verrà pubblicato nel Play Store). È sciolto il punto di testare la build di produzione sui beta tester ... stai testando un altro file :). È solo un avvertimento per le persone che hanno un CI / CD complesso che devono
cambiarlo

2
Tieni presente che Google Play ora accetta APK firmati con la chiave di produzione anche dopo la registrazione alla firma dell'app.
Pierre

2

Eseguire le seguenti operazioni :

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button

Dopo questo, posso provare l'acquisto in app e riprodurre i servizi come prima? Hai avuto esperienza in merito? Perché nemmeno a me piace fare passi pesanti.
Siddharth,

1
Non proprio una risposta appropriata per "Come abilitare la firma dell'app Google Play" ...
Ben Madsen

2
E cosa suggerisci come modo appropriato per farlo?
Sterling Diaz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.