Wie kann ich das Keytool finden und ausführen?

184

Ich lese bei einer -Entwicklung von Facebook Entwickler hier

Es heißt, dass ich Keytool verwenden muss, um die Signatur für meine App zu exportieren, wie zum Beispiel:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Ich weiß nicht, wie ich das Keytool finden soll, um es auszuführen. Ich habe versucht, eine Windows-Eingabeaufforderung zu öffnen und den obigen Befehl einzufügen, aber es hat nicht funktioniert.

Nguyen Minh Binh
quelle
Wenn Sie ein Linux-basiertes System verwenden, /usr/local/java/bin# ./keytoolwenn Sie Windows find the JDK install path and check bin folder
ausführen
Ich habe diese Antwort gefunden. Sie können sie verwenden, um das Problem zu lösen. stackoverflow.com/a/57390582/13405428
ashraf alqaabera

Antworten:

182

Ich habe selbst eine Lösung gefunden, wie im folgenden Zitat. Es funktioniert gut.

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias
> sociallisting -keystore "D:\keystore\SocialListing"  |
> "C:\cygwin\bin\openssl.exe" sha1 -binary | "C:\cygwin\bin\openssl.exe"
> base64
Nguyen Minh Binh
quelle
6
Ich fand es hier: C: \ Programme \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya
9
Oder C: \ Programme \ Android \ Android Studio \ jre \ bin
SHAHM
Danke @SHAHM: Großartig für uns Leute, die Java nicht WIEDER explizit herunterladen möchten und jede Woche abgehört werden, um auf die neueste Version zu aktualisieren.
Pete Alvin
115

Geben Sie diese einfach in die Windows-Eingabeaufforderung ein.

cd C:\Program Files\Java\jdk1.7.0_09\bin

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\userName\.android\debug.keystore" -list -v

Das Basiskennwort lautet android

Sie werden mit der präsentiert werden MD5, SHA1und SHA256Tasten; Wählen Sie die gewünschte aus.

remix090378
quelle
3
das hat bei mir funktioniert. Verwenden Sie für Debug-Schlüssel den -alias androiddebugkey.
Broo
Ich verwende für die Release-Version die nächste Zeile: 1) CD C: \ Programme \ Java \ jdk1.8.0_162 \ bin und nächste 2) Keytool-Liste -v -keystore "C: \ AndroidProjects \ Project1 \ app \ myapp.keystore "
Andrew Grow
2
keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified.
Gustaf Liljegren
80

Befolgen Sie diese Schritte, um den Hash-Code für den Android-Schlüssel zu erhalten (für Facebook-Apps).

  1. Laden Sie die openssl für Fenster hier
  2. Jetzt auf Laufwerk c entpacken
  3. Öffnen Sie die Eingabeaufforderung cmd
  4. Art cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. Geben Sie dann nur ein keytool -export -alias myAlias -keystore C:\Users\<your user name>\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. Getan

Führen Sie die folgenden Schritte aus, um den MD5-Code (Certificate Fingerprint) abzurufen

  1. Gehen Sie zu - C: \ Programme \ Java \ jdk1.6.0_26 \ bin
  2. Führen Sie die jarsigner.exeDatei im Ordner bin aus
  3. Öffnen Sie die Eingabeaufforderung cmd
  4. Art cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. Geben Sie dann erneut cmd ein keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. Es wird jetzt nach dem Keystore-Passwort gefragt. Der Standardwert ist " android", geben Sie ein und geben Sie ein
  7. Getan.
Noelyahan
quelle
Das hat bei mir bis zum letzten Schritt funktioniert. Nach der Eingabe von "android" spuckt es Müll aus ... meine Vermutung ist, dass es nicht die richtige Codierung verwendet? Wenn ich etwas wie "bla" eingebe, wird mir mitgeteilt, dass das Passwort falsch war. Es weiß also, dass ich das richtige Passwort habe, wenn ich "android"
eingebe
Ich fand das Problem, dass ich die Flaggen-Liste und -v
ArtOfWarfare
21

Keytool ist Teil des JDK.

Versuchen Sie, %{JAVA_HOME}\der exec-Anweisung oder voranzustellen c:\{path to jdk}\bin.

Robby Pond
quelle
Ich habe die Cer-Datei und die Truststore-Datei in dasselbe Verzeichnis gestellt und diesen Befehl verwendet:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale
13

Das KeyTool ist Teil des JDK. Sie finden es unter der Annahme, dass Sie das JDK mit den Standardeinstellungen installiert haben$JAVA_HOME/bin

Chris Cashwell
quelle
9

Robby PondDie Antwort kann verallgemeinert werden, um JAVA_HOMEUmgebungsvariablen zu verwenden und um eventuell im Pfad auftretende Leerzeichen (wie Program Files) zu kompensieren :

"%JAVA_HOME%\bin\keytool" -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Alexei
quelle
4

keytool ist Teil von jdk, es sollte $ JAVA_HOME / bin / keytool sein

James.Xu
quelle
4

Keytool ist Teil des Java SDK. Sie sollten es in Ihrem Java SDK-Verzeichnis finden können, z. B. C: \ Programme \ Java \ jdk1.6.0_14 \ bin

2bard
quelle
4

Im cmd-Fenster (muss als Administrator ausgeführt werden)

cd %JAVA_HOME% 

funktioniert nur, wenn Sie Ihre Systemumgebungsvariable JAVA_HOME eingerichtet haben. Sie können dies tun, um Ihre Systemvariable für Ihren Pfad einzurichten

setx %JAVA_HOME% C:\Java\jdk1.8.0_121\

Dann können Sie eingeben

cd c:\Java\jdk1.8.0_121\bin

oder

cd %JAVA_HOME%\bin

Führen Sie dann alle von JAVA jdk bereitgestellten Befehle aus, z

keytool -genkey -v -keystore myapp.keystore -alias myapp

Sie müssen nur die Fragen beantworten (entspricht der Eingabe der Werte in der cmd-Zeile), nachdem Sie die Eingabetaste gedrückt haben! Der Schlüssel würde generiert

Jenna Leaf
quelle
3

Das Keytool befindet sich im Verzeichnis JDK bin ($ JAVA_HOME / bin). JAVA_HOME ist Ihr JDK-Installationsverzeichnis. Um diese Befehlszeile zu verwenden, sollten Sie auch $ JAVA_HOME / bin in Ihre PATH-Umgebungsvariable aufnehmen.

Roman Mazur
quelle
3

Android: Wo kann man den Befehl keytool in Android ausführen?

Der Befehl Keytool kann an Ihrer Eingabeaufforderung dos ausgeführt werden, wenn in Ihrer Klassenpfadvariablen JRE festgelegt wurde.

Wenn Sie beispielsweise den MD5-Fingerabdruck des SDK-Debug-Zertifikats für Android erhalten möchten,

Führen Sie einfach den folgenden Befehl aus ...

C:\Documents and Settings\user\.android>  keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

Wo C:\Documents and Settings\user\.android>ist der Pfad, der den debug.keystorezu zertifizierenden Pfad enthält ?

Ausführliche Informationen finden Sie unter http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint

Youdhveer
quelle
3

Abhängig von Ihrer Version von Eclipse (ich verwende Kepler). Gehen Sie zu Windows> Einstellungen> Android> Erstellen.

Sie finden den Speicherort Ihres Debug-Keystores sowie den SHA1-Fingerabdruck (den Sie einfach kopieren und verwenden können).

GraSim
quelle
3

Ich fand dies in einem anderen Beitrag, der nicht viele positive Stimmen erhielt, aber es war super hilfreich für mich. Also werde ich es hier hinzufügen.

Android Studio bringt ein Keytool mit.

C:\Program Files\Android\Android Studio\jre\bin

Sie können seinen Beitrag unten von Richar Heap mit einer hilfreichen Referenz sehen. Ich habe das schon mal gesehen, aber vergessen. https://stackoverflow.com/a/51524526/4446406

Gareth
quelle
2

KEYTOOL befindet sich im JAVAC SDK. Sie müssen es also in dem Verzeichnis finden, das javac enthält

suba
quelle
2

Wenn Sie Visual Studio mit Xamarin / Mobile-Entwicklungsunterstützung installiert haben, wird hier eine Java-Installation durchgeführt C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\ , wird wie in meinem Fall .

Nieminen
quelle
1

keytoolkommt mit dem JDK. Wenn Sie Cygwin verwenden, ist dies wahrscheinlich bereits auf Ihrem Weg. Andernfalls könnten Sie im bin-Ordner Ihres JDK herumgraben.

Sie müssen wahrscheinlich sowieso Cygwin verwenden, damit die Shell Pipes ( |) funktionieren.

Matthew Willis
quelle
Können Sie mir sagen, wie ich unter dem Befehl ausführen soll? keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binary | openssl base64
Nguyen Minh Binh
1
Ja, habe ich. und wenn ich den obigen Befehl ausführe, sagt das CMD: 'openssl' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.
Nguyen Minh Binh
Sie müssen das openssl-Paket wahrscheinlich auch über das Setup von cygwin installieren.
Matthew Willis
1
Ich habe das openssl-Paket bereits installiert. Das Problem tritt immer noch auf :(
Nguyen Minh Binh
Können Sie openssl selbst ausführen? Welche Optionen sehen Sie, wenn Sie "Öffnen" eingeben und die Tabulatortaste drücken?
Matthew Willis
1

Einige Beobachtungen, während ich das gleiche Problem bekam (Windows). 1. Shell Rohr ist wichtig. 2. Wenn Sie OpenSSL oder Cygwin verwenden, müssen Sie es auf jeden Fall installieren. 3. keytool wird mit JDK geliefert, sodass Sie entweder im Befehl darauf verweisen müssen oder eine CD in den Ordner JDK / bin (in dem sich die exe befindet) haben. 4. Der Debug-Keystore befindet sich normalerweise unter ~ / .android / debug.keystore 5. Das Passwort lautet "android", unabhängig davon, ob Sie es umgehen oder eingeben, wenn Sie dazu aufgefordert werden. 6. Für den Aliasnamen können Sie die Keystore-Datei mit einem beliebigen Editor öffnen (NICHT SPEICHERN, nur öffnen und schließen) und lesen. 7. WICHTIGSTES - Es gibt einen Unterschied darin, den Schlüsselspeicherpfad innerhalb und außerhalb von Anführungszeichen anzugeben. Ich habe es funktioniert, indem ich den Schlüsselspeicherpfad in doppelten Anführungszeichen verwendet habe. Wie remix090378 sagte und wie am Anweisunghat dieser Befehl tatsächlich funktioniert - cd C: \ Programme \ Java \ jdk1.7.0_09 \ bin

keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ userName.android \ debug.keystore" -list -v

Zeena
quelle
0

In meinem Fall hatte ich bereits eine APK-Datei mit dem Befehl generiert ionic cordova build android --prodund musste den SHA-1-Fingerabdruck für die bereits vorhandene APK-Datei abrufen. So habe ich es erhalten, indem ich den folgenden Befehl im App-Verzeichnis ausgeführt habe:

keytool -list -printcert -jarfile app-debug.apk

Also habe ich den obigen Befehl im Grunde genommen am folgenden App-Speicherort ausgeführt:

C:\myApp\platforms\android\app\build\outputs\apk\debug>keytool -list -printcert -jarfile app-debug.apk

Dies gab mir den SHA1-Fingerabdruck als: 7B:6B:AD:...

Hoffe das hilft jemandem!

Devner
quelle
0

Da Sie Java und vorzugsweise ein JDK in Ihrem System installiert haben (Antwort für Windows, weil Sie es in Ihrer Frage erwähnt haben), sollten Sie das Dienstprogramm keytool im binOrdner Ihrer Installation haben .

Wenn dies der Fall ist, können Sie als Nächstes diesen bin-Ordner zur PATHUmgebungsvariablen hinzufügen Ihrer Windows-Installation .

Wenn Sie das nächste Mal eine Windows-Shell öffnen und eingeben, können keytoolSie das eigentliche Dienstprogramm ausführen.

Christos Alexiou
quelle