Come posso creare un keystore?


538

Quali sono i passaggi per creare un keystore per Android?

Devo utilizzare google maps nella mia app e non so quali passaggi ho perso. Forniscimi i passaggi dettagliati specifici (non l'ho capito dalle guide).


Hai già fatto qualcosa o stai cercando consigli per iniziare?
atk,

2
Questi sono i seguenti passaggi che avevo fatto: 1-install eclipse 2- installa jdk 3- installa sdk 4- installa plug-in Android. non sono riuscito a eseguire il comando in win cmd, il comando: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (che genera una chiave privata). grazie
user482762,

@ user482762: la risposta di CommonsWare ha funzionato per te? Perché non sei riuscito a eseguire il cmd win?
atk,

La risposta di CommonsWare non funziona per me, quando provo ad eseguire i comandi nel cmd, ricevo un messaggio di errore: "$ non viene riconosciuto come comando interno o esterno, programma eseguibile o file batch". grazie per l'aiuto
user482762

Ah! Non vuoi digitare effettivamente $. Su Windows, quando si utilizza la riga di comando (l'applicazione cmd), il prompt di input di solito assomiglia a DRIVE: / DIRECTORY>, come "c: \". Su unix, il prompt appare spesso come "$" o semplicemente ">". "$" Nel comando è pensato per rappresentare il prompt di input, non parte del comando. Prova a eseguire keytool con tutti gli argomenti, senza $.
atk,

Risposte:


545

Per rispondere alla domanda nel titolo, si crea un keystore con l'utilità Java Keytool fornita con qualsiasi distribuzione JDK standard e può essere trovata all'indirizzo %JAVA_HOME%\bin. Su Windows questo sarebbe di solito C:\Program Files\Java\jre7\bin.

Quindi su Windows, apri una finestra di comando e passa a quella directory e inserisci un comando come questo

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool richiede di fornire le password per l'archivio chiavi, fornire i campi Nome distinto e quindi la password per la chiave. Quindi genera il keystore come file chiamato my-release-key.keystore nella directory in cui ci si trova. Il keystore e la chiave sono protetti dalle password immesse. Il keystore contiene una chiave singola, valida per 10000 giorni. L'alias è un nome che verrà utilizzato in seguito per fare riferimento a questo keystore quando si firma l'applicazione.

Per ulteriori informazioni su Keytool, consultare la documentazione all'indirizzo: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

e per ulteriori informazioni sulla firma di app Android vai qui: http://developer.android.com/tools/publishing/app-signing.html


6
Buon grido sulla definizione -keysize 2048 piuttosto che sul default 1024 personalmente sto usando 4096
scottyab

9
per informazioni, nel mio caso, devo aprire la finestra di comando con i diritti di amministratore
Intuitisoft,

Questo mi dà: E / TokenRequestor: Hai configurazioni OAuth2 errate, controlla. Errore dettagliato: UNRribut_ON_API_CONSOLE Ho già creato una credenziale immettendo il mio SHA1 nella console API.
Rohan Taneja,

Link diretto alla documentazione sulla generazione manuale di keystore: developer.android.com/studio/publish/…
methodignature

Ho usato questo comando che imposta le 2 password in modo da saltare alcuni dei prompt: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Quindi per generare lo SHA-1 che devi mettere in Firebase fai:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo

158

Firma dell'app in Android Studio

Per firmare l'app in modalità di rilascio in Android Studio, attenersi alla seguente procedura:

1- Nella barra dei menu, fai clic su Genera> Genera APK firmato.


2-Nella finestra Creazione guidata APK firmato, fai clic su Crea nuovo per creare un nuovo keystore. Se hai già un archivio chiavi, vai al passaggio 4.


3- Nella finestra Nuovo archivio chiavi, fornire le informazioni richieste come mostrato in figura. La chiave deve essere valida per almeno 25 anni, in modo da poter firmare gli aggiornamenti dell'app con la stessa chiave per tutta la durata dell'app.

inserisci qui la descrizione dell'immagine

4- Nella finestra Genera procedura guidata APK firmato, selezionare un keystore, una chiave privata e inserire le password per entrambi. Quindi fare clic su Avanti.inserisci qui la descrizione dell'immagine

5- Nella finestra successiva, selezionare una destinazione per l'APK firmato e fare clic su Fine. inserisci qui la descrizione dell'immagine

referance

http://developer.android.com/tools/publishing/app-signing.html


2
Sebbene questa risposta sia corretta, è utile solo se hai già installato Android Studio.
Seph Reed,

98

Ero pazzo a cercare come generare un .keystore usando nella shell un comando a riga singola , in modo da poterlo eseguire da un'altra applicazione. Questo è il modo:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname è un identificatore univoco per l'applicazione nel .keystore

    • cn il nome completo della persona o dell'organizzazione che genera il .keystore
    • o Unità organizzativa che crea il progetto, è una suddivisione dell'organizzazione che lo crea. Ex. android.google.com
    • o Organizzazione proprietaria dell'intero progetto. È un ambito più elevato di ou . Es .: google.com
    • c Il codice funzione del paese. Es .: Per gli Stati Uniti è "US"
  • alias Identificatore dell'app come singola entità all'interno del .keystore (può avere molti)

  • keypass Password per proteggere quell'alias specifico.
  • keystore Percorso in cui deve essere creato il file .keystore (l'estensione standard è in realtà .ks)
  • storepass Password per proteggere l'intero contenuto .keystore .
  • validità Numero di giorni in cui l'app sarà valida con questo .keystore

Ha funzionato davvero bene per me, non richiede nient'altro nella console, crea semplicemente il file. Per ulteriori informazioni, consultare keytool - Strumento di gestione chiavi e certificati .


Non ho mai avuto questo tipo di errore, ma prova a fare touch /path/file.keystoree puntalo con il parametro storepass.
EliuX

funziona alla grande! la mia unica modifica è che utilizzo l'estensione .jks per Android
Adam Mendoza,

2
jksè l' estensione ufficiale del keystore per java in generale, tuttavia keystoreè quella consigliata per essere utilizzata per le app Android .
EliuX,

1
@eliasbagley perché il comando -storepass come scritto sopra è iniziato su un'altra riga. Scrivi tutto su una sola riga e andrà bene.
tormuto,

82

Crea file keystore dalla riga di comando:

  1. Apri riga di comando:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
  2. Enter> Ti verrà richiesta la password> inserisci la password (sarà invisibile)

    Enter keystore password:
    Re-enter new password:
  3. Inserisci> Chiederà i tuoi dettagli.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
  4. Enter> Enter Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Invio> Inserisci di nuovo la password.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:

[Memorizzazione di C: /index.keystore]

  1. E sei fatto !!!

Esporta in Eclipse:

Esporta il tuo pacchetto Android in .apk con il file del keystore creato

  1. Fare clic con il tasto destro del mouse sul pacchetto che si desidera esportare e selezionare Esporta inserisci qui la descrizione dell'immagine

  2. Seleziona Esporta applicazione Android> Avanti inserisci qui la descrizione dell'immagine

  3. Il prossimo
    inserisci qui la descrizione dell'immagine

  4. Selezionare Usa archivio chiavi esistente> Sfoglia file .keystore> inserisci password> Avanti inserisci qui la descrizione dell'immagine

  5. Seleziona Alias> inserisci password> Avanti inserisci qui la descrizione dell'immagine

  6. Sfoglia destinazione APK> Fine inserisci qui la descrizione dell'immagine

In Android Studio:

Crea keystore [.keystore/.jks]in studio ...

  1. Fai clic su Genera (ALT + B) > Genera APK firmato ...
    inserisci qui la descrizione dell'immagine

  2. Fai clic su Crea nuovo .. (ALT + C)
    inserisci qui la descrizione dell'immagine

  3. Sfoglia percorso archivio chiavi (MAIUSC + INVIO)> Seleziona percorso> Inserisci nome> OK inserisci qui la descrizione dell'immagine

  4. Inserisci i dettagli sul tuo .jks/keystorefile inserisci qui la descrizione dell'immagine

  5. Il prossimo
    inserisci qui la descrizione dell'immagine

  6. Il tuo file
    inserisci qui la descrizione dell'immagine

  7. Inserisci la password principale di Studio (puoi RESET se non lo sai) > OK inserisci qui la descrizione dell'immagine

  8. Seleziona * Cartella di destinazione *> Tipo di build

    release : for publish on app store
    debug : for debugging your application

    Fai clic su Fine

    inserisci qui la descrizione dell'immagine

Fatto !!!


28

Questo tutorial:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

è stato molto utile per me la prima volta che ho dovuto creare un keystore. È semplice ma le istruzioni su developer.android.com sono un po 'troppo brevi.

La parte di cui non ero sicuro era dove salvare e quale nome dare il file del keystore .

Sembra che non importa dove lo metti, assicurati solo di tenerlo al sicuro e conservare un numero di backup. L'ho appena inserito nella mia directory dell'app

Denominare il file "something.keystore" dove qualcosa può essere quello che vuoi. Ho usato app_name.keystore , dove app_name era il nome della mia app.

La parte successiva era come chiamare l'alias. Ancora una volta non sembra importare, quindi ho usato nuovamente app_name . Conserva le password come quelle utilizzate in precedenza. Compila il resto dei campi e il gioco è fatto.


13

Ho seguito questa guida per creare il keystore di debug.

Il comando è:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

11

Utilizzare questo comando per creare debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

5

La prima cosa da sapere è se sei in modalità Debug o Release. Dal sito dello sviluppatore "Esistono due modalità di compilazione: la modalità di debug e la modalità di rilascio. La modalità di debug viene utilizzata durante lo sviluppo e il test dell'applicazione. Utilizzare la modalità di rilascio quando si desidera creare una versione di rilascio dell'applicazione che è possibile distribuire direttamente agli utenti o pubblicare su un marketplace di applicazioni come Google Play. "

Se sei in modalità debug, esegui le seguenti operazioni:
A. Apri il terminale e digita:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

Nota: per Eclipse, il keystore di debug si trova in genere in ~ / .android / debug.keystore ...

B. quando viene richiesta una password, inserisci semplicemente "android" ...

C. Se si è in modalità di rilascio, seguire le istruzioni su ...

http://developer.android.com/tools/publishing/app-signing.html <- questo link spiega praticamente tutto ciò che devi sapere.


2

È possibile creare il keystore esportando un APK firmato. Quando proverai a esportare / creare un APK firmato, ti verrà richiesto un archivio chiavi.

Puoi scegliere il tuo keystore esistente oppure puoi crearne facilmente uno nuovo facendo clic su crea nuovo keystore

Qui un link molto utile e ben spiegato su come creare il tuo keystore e generare un APK firmato

Questo link ha spiegato come farlo con Android Studio, ma se ricordo, è abbastanza simile su Eclipse

ATTENTO

Una volta generato il keystore, conservalo in un posto sicuro perché ti servirà per rigenerare un nuovo APK firmato.

Come esportare un progetto in Android Studio?


2

Vorrei suggerire il modo automatico solo con la pendenza

** Definire anche almeno un parametro aggiuntivo per il keystore nell'ultimo comando, ad es. Paese '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

Questo genererà keystore sulla sincronizzazione e sulla compilazione del progetto

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

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.