Wie kann ich einen Keystore erstellen?

538

Was sind die Schritte, um einen Keystore für Android zu erstellen?

Ich muss Google Maps in meiner App verwenden und weiß nicht, welche Schritte ich verpasst habe. Bitte geben Sie mir die detaillierten Schritte (ich habe es aus den Anleitungen nicht verstanden).

user482762
quelle
Haben Sie bereits etwas getan oder suchen Sie nach Empfehlungen für den Einstieg?
Atk
2
Das sind die folgenden Schritte, die ich gemacht habe: 1-Eclipse installieren 2- JDK installieren 3- SDK installieren 4- Android-Plugin installieren. Ich habe es nicht geschafft, den Befehl in win cmd auszuführen, den Befehl: $ keytool -genkey -v -keystore my-release-key.keystore -alias aliasname -keyalg RSA -keysize 2048 -validity 10000 (der einen privaten Schlüssel generiert). danke
user482762
@ user482762: Hat die Antwort von CommonsWare für Sie funktioniert? Warum haben Sie es nicht geschafft, den Win-Cmd auszuführen?
Atk
Die Antwort von CommonsWare funktioniert bei mir nicht. Wenn ich versuche, die Befehle im cmd auszuführen, wird eine Fehlermassage angezeigt: "$ wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt".
Vielen
Ah! Sie möchten das $ nicht wirklich eingeben. Wenn Sie unter Windows die Befehlszeile (die Cmd-Anwendung) verwenden, sieht die Eingabeaufforderung normalerweise wie DRIVE: / DIRECTORY> aus, wie "c: \". Unter Unix sieht die Eingabeaufforderung oft wie "$" oder nur ">" aus. Das "$" im Befehl soll die Eingabeaufforderung darstellen, die nicht Teil des Befehls ist. Versuchen Sie, Keytool mit allen Argumenten ohne das $ auszuführen.
Atk

Antworten:

545

Um die Frage im Titel zu beantworten, erstellen Sie mit dem Java Keytool-Dienstprogramm einen Keystore, der mit jeder Standard-JDK-Distribution geliefert wird und sich unter befindet %JAVA_HOME%\bin. Unter Windows ist dies normalerweise der Fall C:\Program Files\Java\jre7\bin.

Öffnen Sie unter Windows ein Befehlsfenster, wechseln Sie in dieses Verzeichnis und geben Sie einen Befehl wie diesen ein

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

Keytool fordert Sie auf, Kennwörter für den Schlüsselspeicher anzugeben, die Felder Distinguished Name und dann das Kennwort für Ihren Schlüssel anzugeben. Anschließend wird der Schlüsselspeicher als Datei mit dem Namen my-release-key.keystore in dem Verzeichnis generiert, in dem Sie sich befinden. Der Schlüsselspeicher und der Schlüssel sind durch die von Ihnen eingegebenen Kennwörter geschützt. Der Schlüsselspeicher enthält einen einzelnen Schlüssel, der 10000 Tage gültig ist. Der Alias ​​ist ein Name, den Sie später verwenden, um beim Signieren Ihrer Anwendung auf diesen Schlüsselspeicher zu verweisen.

Weitere Informationen zu Keytool finden Sie in der Dokumentation unter: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

Weitere Informationen zum Signieren von Android-Apps finden Sie hier: http://developer.android.com/tools/publishing/app-signing.html

georgiecasey
quelle
6
Guter Ruf beim Definieren von -keysize 2048 anstelle von Standard 1024 persönlich verwende ich jetzt 4096
scottyab
9
Zur Information muss ich in meinem Fall das Befehlsfenster mit Administratorrechten
Intuitisoft
Dies gibt mir: E / TokenRequestor: Sie haben falsche OAuth2-bezogene Konfigurationen, bitte überprüfen Sie. Detaillierter Fehler: UNREGISTERED_ON_API_CONSOLE Ich habe bereits einen Berechtigungsnachweis erstellt, indem ich meinen SHA1 in die API-Konsole eingegeben habe.
Rohan Taneja
Direkter Link zur Dokumentation zum manuellen Generieren von Keystore: developer.android.com/studio/publish/…
Methodensignatur
Ich habe diesen Befehl verwendet, der die 2 Passwörter so festlegt, dass Sie einige der Eingabeaufforderungen überspringen : keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Um dann die SHA-1 zu generieren, die Sie in Firebase einfügen müssen, gehen Sie wie folgt vor:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo
158

Signieren Ihrer App in Android Studio

Gehen Sie folgendermaßen vor, um Ihre App im Release-Modus in Android Studio zu signieren:

1- Klicken Sie in der Menüleiste auf Erstellen> Signierte APK generieren.


2-Klicken Sie im Fenster Assistent zum Generieren signierter APK auf Neu erstellen, um einen neuen Schlüsselspeicher zu erstellen. Wenn Sie bereits einen Keystore haben, fahren Sie mit Schritt 4 fort.


3- Geben Sie im Fenster "Neuer Schlüsselspeicher" die erforderlichen Informationen ein (siehe Abbildung). Ihr Schlüssel sollte mindestens 25 Jahre gültig sein, damit Sie App-Updates mit demselben Schlüssel während der gesamten Lebensdauer Ihrer App signieren können.

Geben Sie hier die Bildbeschreibung ein

4- Wählen Sie im Fenster Assistent zum Generieren signierter APK einen Schlüsselspeicher und einen privaten Schlüssel aus und geben Sie die Kennwörter für beide ein. Klicken Sie dann auf Weiter.Geben Sie hier die Bildbeschreibung ein

5- Wählen Sie im nächsten Fenster ein Ziel für die signierte APK aus und klicken Sie auf Fertig stellen. Geben Sie hier die Bildbeschreibung ein

Referenz

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

Android-Entwickler
quelle
2
Obwohl diese Antwort richtig ist, ist es nur praktisch, wenn Sie Android Studio bereits installiert haben.
Seph Reed
98

Ich war verrückt danach, wie man einen .keystore mit einem einzeiligen Befehl in der Shell generiert , damit ich ihn von einer anderen Anwendung aus ausführen kann. Das ist der Weg:

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 ist eine eindeutige Kennung für die Anwendung im .keystore

    • cn den vollständigen Namen der Person oder Organisation, die den .keystore generiert
    • ou Organisationseinheit, die das Projekt, das eine Unterteilung der Organisation , die es schafft schafft. Ex. android.google.com
    • o Organisationsinhaber des gesamten Projekts. Es ist ein höherer Umfang als ou . Bsp.: Google.com
    • c Der Länder-Funktionscode. Beispiel: Für die Vereinigten Staaten ist "US"
  • alias Kennung der App als einzelne Entität im .keystore (es können viele vorhanden sein)

  • Tastaturkennwort zum Schutz dieses bestimmten Alias.
  • Keystore Pfad, in dem die .keystore- Datei erstellt werden soll (die Standarderweiterung ist tatsächlich .ks)
  • storepass Passwort zum Schutz des gesamten .keystore- Inhalts.
  • Gültigkeit Innerhalb weniger Tage ist die App mit diesem .keystore gültig

Es hat wirklich gut für mich funktioniert, es fragt nicht nach etwas anderem in der Konsole, sondern erstellt nur die Datei. Weitere Informationen finden Sie unter keytool - Tool zur Verwaltung von Schlüsseln und Zertifikaten .

EliuX
quelle
Ich hatte noch nie einen /path/file.keystoresolchen Fehler, aber versuchen Sie es mit dem Storepass-Parameter.
EliuX
funktioniert super! Meine einzige Änderung ist, dass ich die Erweiterung .jks für Android
Adam Mendoza
2
jksist die offizielle Keystore-Erweiterung für Java im Allgemeinen, keystorewird jedoch empfohlen, stattdessen für Android-Apps verwendet zu werden.
EliuX
1
@eliasbagley, weil der oben beschriebene Befehl -storepass in einer anderen Zeile gestartet wurde. Schreiben Sie alles in eine einzelne Zeile und es wird gut.
Tormuto
82

Erstellen Sie eine Keystore-Datei über die Befehlszeile:

  1. Befehlszeile öffnen:

    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. Eingabe> Es wird Sie zur Eingabe des Passworts auffordern> Passwort eingeben (es wird unsichtbar sein)

    Enter keystore password:
    Re-enter new password:
  3. Enter> Es werden Sie nach Ihren Details gefragt.

    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. Geben Sie> Passwort erneut ein.

    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:

[Speichern von C: /index.keystore]

  1. Und du bist fertig !!!

In Eclipse exportieren:

Exportieren Sie Ihr Android-Paket mit Ihrer erstellten Keystore-Datei nach .apk

  1. Klicken Sie mit der rechten Maustaste auf das zu exportierende Paket und wählen Sie Exportieren Geben Sie hier die Bildbeschreibung ein

  2. Wählen Sie Android-Anwendung exportieren> Weiter Geben Sie hier die Bildbeschreibung ein

  3. Nächster
    Geben Sie hier die Bildbeschreibung ein

  4. Wählen Sie Vorhandenen Keystore verwenden> .keystore-Datei durchsuchen> Kennwort eingeben> Weiter Geben Sie hier die Bildbeschreibung ein

  5. Wählen Sie Alias> Passwort eingeben> Weiter Geben Sie hier die Bildbeschreibung ein

  6. Durchsuchen Sie APK-Ziel> Fertig stellen Geben Sie hier die Bildbeschreibung ein

In Android Studio:

Erstellen Sie einen Keystore [.keystore/.jks]im Studio ...

  1. Klicken Sie auf Erstellen (ALT + B) > Signierte APK generieren ...
    Geben Sie hier die Bildbeschreibung ein

  2. Klicken Sie auf Neu erstellen. (ALT + C)
    Geben Sie hier die Bildbeschreibung ein

  3. Schlüsselspeicherpfad durchsuchen (UMSCHALT + EINGABETASTE)> Pfad auswählen> Name eingeben> OK Geben Sie hier die Bildbeschreibung ein

  4. Füllen Sie die Details zu Ihrer .jks/keystoreDatei aus Geben Sie hier die Bildbeschreibung ein

  5. Nächster
    Geben Sie hier die Bildbeschreibung ein

  6. Deine Datei
    Geben Sie hier die Bildbeschreibung ein

  7. Geben Sie das Studio-Master-Passwort ein (Sie können es zurücksetzen, wenn Sie es nicht wissen) > OK Geben Sie hier die Bildbeschreibung ein

  8. Wählen Sie * Zielordner *> Build-Typ

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

    Klicken Sie auf Fertig stellen

    Geben Sie hier die Bildbeschreibung ein

Erledigt !!!

Iamat8
quelle
28

Dieses Tutorial:

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

war sehr hilfreich für mich, als ich zum ersten Mal einen Keystore erstellen musste. Es ist einfach, aber die Anweisungen auf developer.android.com sind etwas zu kurz.

Der Teil, bei dem ich mir nicht sicher war, war, wo ich speichern und welchen Namen ich der Keystore- Datei geben sollte.

Ich denke, es spielt keine Rolle, wo Sie es ablegen. Stellen Sie sicher, dass Sie es sicher aufbewahren und eine Reihe von Backups aufbewahren. Ich habe es einfach in mein App-Verzeichnis gestellt

Nennen Sie die Datei "Something.keystore", in der etwas beliebig sein kann. Ich habe app_name.keystore verwendet , wobei app_name der Name meiner App war.

Der nächste Teil war, wie man den Alias ​​nennt. Wieder scheint es keine Rolle zu spielen, also habe ich wieder den App-Namen verwendet . Behalten Sie die zuvor verwendeten Passwörter bei. Füllen Sie den Rest der Felder aus und Sie sind fertig.

Vogelmann
quelle
13

Ich habe diese Anleitung befolgt , um den Debug-Keystore zu erstellen.

Der Befehl lautet:

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

Verwenden Sie diesen Befehl, um debug.keystore zu erstellen

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"
Aravin
quelle
5

Als erstes müssen Sie wissen, ob Sie sich im Debug- oder Release-Modus befinden. Von der Entwicklerseite "Es gibt zwei Erstellungsmodi: Debug-Modus und Release-Modus. Sie verwenden den Debug-Modus, wenn Sie Ihre Anwendung entwickeln und testen. Sie verwenden den Release-Modus, wenn Sie eine Release-Version Ihrer Anwendung erstellen möchten, die Sie direkt verteilen können an Benutzer oder auf einem Anwendungsmarktplatz wie Google Play veröffentlichen. "

Wenn Sie sich im Debug-Modus befinden, gehen Sie wie folgt vor:
A. Öffnen Sie das Terminal und geben Sie Folgendes ein :

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

Hinweis: Bei Eclipse befindet sich der Debug-Keystore normalerweise unter ~ / .android / debug.keystore ...

B. wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie einfach "android" ein ...

C. Wenn Sie sich im Release-Modus befinden, befolgen Sie die Anweisungen auf ...

http://developer.android.com/tools/publishing/app-signing.html <- Dieser Link erklärt so ziemlich alles, was Sie wissen müssen.

Liebe zeigen
quelle
2

Sie können Ihren Keystore erstellen, indem Sie eine signierte APK exportieren. Wenn Sie versuchen, eine signierte APK zu exportieren / zu erstellen, werden Sie nach einem Keystore gefragt.

Sie können Ihren vorhandenen Schlüsselspeicher auswählen oder einfach einen neuen erstellen, indem Sie auf Neuen Schlüsselspeicher erstellen klicken

Hier ein Link, der sehr nützlich und gut erklärt ist, wie Sie Ihren Keystore erstellen und eine signierte APK generieren

Dieser Link erklärte, wie es mit Android Studio geht, aber wenn ich mich erinnere, ist es bei Eclipse ziemlich ähnlich

ACHTUNG

Bewahren Sie Ihren Keystore nach dem Generieren an einem sicheren Ort auf, da Sie ihn benötigen, um eine neu signierte APK neu zu generieren.

Wie exportiere ich ein Projekt im Android Studio?

Hugo
quelle
2

Ich möchte einen automatischen Weg nur mit Gradle vorschlagen

** Definieren Sie auch mindestens einen zusätzlichen Parameter für den Keystore im letzten Befehl, z. B. Land '-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
}

Dadurch wird ein Keystore für die Projektsynchronisierung und -erstellung generiert

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
Vlad
quelle
-4

Wenn Sie Android Studio nicht verwenden möchten oder können, können Sie das NPM-Tool zum Erstellen eines Android-Keystores verwenden:

$ create-android-keystore quick

Dies führt zu einem neu generierten Schlüsselspeicher im aktuellen Verzeichnis.

Weitere Informationen: https://www.npmjs.com/package/create-android-keystore

Kaspi
quelle