Como posso encontrar e executar o keytool


185

Estou lendo um guia de desenvolvimento de desenvolvedores do Facebook aqui

Ele diz que devo usar o keytool para exportar a assinatura do meu aplicativo, como:

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

Não sei como encontrar o keytool para executá-lo. Tentei abrir um prompt de comando do Windows e colar o comando acima, mas ele não funcionou.


se você estiver executando sistema baseado em Linux /usr/local/java/bin# ./keytool, se você estiver executando o Windowsfind the JDK install path and check bin folder
Elshan

Eu encontrei este ansour você pode usá-lo para resolver o problema stackoverflow.com/a/57390582/13405428
ashraf alqaabera

Respostas:


184

Eu encontrei uma solução sozinho como abaixo citação. Funciona bem.

"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

6
Eu encontrei-o aqui: C: \ Arquivos de programas \ Java \ jre1.8.0_111 \ bin \ keytool.exe
Jaime Montoya

9
Ou C: \ Program Files \ Android \ Android Studio \ jre \ bin
SHAHM

Obrigado @SHAHM: ótimo para nós, pessoas que não desejam fazer o download explicitamente do Java NOVAMENTE e recebem bugs toda semana para atualizar para a versão mais recente.
Pete Alvin

116

Basta inseri-los no prompt de comando do Windows.

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

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

A senha base é android

Você será apresentado com o MD5, SHA1e SHA256chaves; Escolha o que você precisa.


3
isso funcionou para mim. Para chaves de depuração, use a opção -alias androiddebugkey.
Broo

Eu uso na próxima linha da versão: 1) cd C: \ Arquivos de Programas \ Java \ jdk1.8.0_162 \ bin e 2) keytool -list -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

Para obter o código hash da chave do Android, siga estas etapas (para aplicativos do facebook)

  1. Faça o download do openssl para Windows aqui
  2. agora descompacte para c drive
  3. prompt de cmd aberto
  4. tipo cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. então digite apenas 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. Feito

Para obter o código de impressão digital do certificado (MD5), siga estas etapas

  1. vá para - C: \ Arquivos de programas \ Java \ jdk1.6.0_26 \ bin
  2. dentro da pasta bin, execute o jarsigner.exearquivo
  3. prompt de cmd aberto
  4. tipo cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. digite novamente em cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. ele solicitará a senha do Keystore agora. O padrão é " android" digite e digite
  7. Feito.

Isso funcionou para mim até a etapa final. Depois de digitar "android", ele cospe lixo ... meu palpite é que não está usando a codificação adequada? Se eu digitar algo como "blá", será informado que a senha estava incorreta. Por isso, sabe que eu tenho a senha correta quando digito em "android"
ArtOfWarfare

Eu encontrei o problema foi que eu tinha deixado fora das bandeiras -LIST e -v
ArtOfWarfare

21

keytool faz parte do JDK.

Tente anexar %{JAVA_HOME}\à instrução exec ou c:\{path to jdk}\bin.


Eu coloquei o arquivo cer e truststore arquivo no mesmo diretório e usado este comando:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
Todd Hale

13

O KeyTool faz parte do JDK. Você o encontrará, assumindo que você instalou o JDK com configurações padrão, em$JAVA_HOME/bin


9

Robby PondA resposta de pode ser generalizada para usar JAVA_HOMEvariável de ambiente e também compensar quaisquer espaços em branco que possam ocorrer no caminho (como Program Files):

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

4

keytool faz parte do jdk, deve ser $ JAVA_HOME / bin / keytool


4

O Keytool faz parte do Java SDK. Você deve encontrá-lo no diretório Java SDK, por exemplo, C: \ Arquivos de Programas \ Java \ jdk1.6.0_14 \ bin


4

Na janela do cmd (é necessário executar como administrador),

cd %JAVA_HOME% 

funciona apenas se você configurou a variável de ambiente do sistema JAVA_HOME. Para configurar sua variável de sistema para o seu caminho, você pode fazer isso

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

Então, você pode digitar

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

ou

cd %JAVA_HOME%\bin

Em seguida, execute quaisquer comandos fornecidos pelo JAVA jdk, como

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

Você só precisa responder às perguntas (equivalente a digitar os valores na linha cmd) após pressionar Enter! A chave seria gerada


3

keytool está localizado no diretório bin do JDK ($ JAVA_HOME / bin). JAVA_HOME é o diretório de instalação do JDK. Para usar essa linha de comando, você também deve incluir $ JAVA_HOME / bin na sua variável de ambiente PATH.


3

Android: onde executar o comando keytool no android

O comando Keytool pode ser executado no prompt de comando dos, se o JRE tiver sido definido na variável do caminho de classe.

Por exemplo, se você deseja obter a impressão digital MD5 do certificado de depuração do SDK para android,

basta executar o seguinte comando ...

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

onde C:\Documents and Settings\user\.android>é o caminho que contém o debug.keystoreque deve ser certificado.

Para informações detalhadas, visite http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint


3

Dependendo da sua versão do Eclipse (estou usando o Kepler). Vá para Windows> Preferências> Android> Compilar.

Você encontrará o caminho do local do seu keystore de depuração, bem como a impressão digital SHA1 (que você pode apenas copiar e usar)


3

Encontrei isso em outro post, que não recebeu muitos votos, mas foi super útil para mim. Então vamos adicioná-lo aqui.

O Android Studio trará uma ferramenta de chave com ele.

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

Você pode ver seu post abaixo por Richar Heap, com uma referência útil. Eu já vi isso antes, mas esqueci. https://stackoverflow.com/a/51524526/4446406


2

O KEYTOOL está no JAVAC SDK. Portanto, você deve encontrá-lo dentro do diretório que contém o javac


2

Se você instalou o visual studio com suporte ao Xamarin / desenvolvimento móvel, terá uma instalação em java aqui C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\, como foi o meu caso.


1

keytoolvem com o JDK. Se você estiver usando o cygwin, isso provavelmente já está no seu caminho. Caso contrário, você pode procurar na pasta bin do JDK.

Você provavelmente precisará usar o cygwin de qualquer maneira para que os tubos shell ( |) funcionem.


Você poderia me dizer como executar o comando abaixo? keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android / debug.keystore | openssl sha1 -binário | openssl base64
Nguyen Minh Binh

1
Sim eu fiz. e quando executo o comando acima, o CMD diz: 'openssl' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote.
Nguyen Minh Binh

Você provavelmente precisará instalar o pacote openssl também através da instalação do cygwin.
Matthew Willis

1
Eu já instalei o pacote openssl. O problema ainda ocorre :(
Nguyen Minh Binh

Você pode executar o openssl sozinho? Quais opções você vê ao digitar "abrir" e pressionar tab?
Matthew Willis

1

Poucas observações enquanto eu estava recebendo o mesmo problema (Windows). 1. Tubo de casca é importante. 2. Se você estiver usando o OpenSSL ou Cygwin, definitivamente precisará instalá-lo. 3. keytool vem com o JDK, portanto, você deve apontar para ele no comando ou ter o CD na pasta JDK / bin (onde o exe reside) 4. O keystore de depuração geralmente está localizado em ~ / .android / debug.keystore 5. a senha é "android", independentemente de você ser digitado ou digitado quando solicitado. 6. Para o nome alternativo, você pode abrir (NÃO SALVAR, basta abrir e fechar) o arquivo de armazenamento de chaves com qualquer editor e lê-lo. 7. O MAIS IMPORTANTE - Há uma diferença ao especificar o caminho do keystore entre aspas e sem. Eu consegui trabalhar usando o caminho do keystore entre aspas duplas. Como remix090378 disse e conforme o instrução, esse comando realmente funcionou - cd C: \ Arquivos de Programas \ Java \ jdk1.7.0_09 \ bin

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


0

No meu caso, eu já havia gerado um arquivo APK usando o comando ionic cordova build android --prode precisava obter a impressão digital SHA-1 para o arquivo APK já existente. Aqui está como eu consegui executando o seguinte comando no diretório de aplicativos:

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

Então, basicamente executei o comando acima no seguinte local do aplicativo:

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

Isso me deu a impressão digital SHA1 como: 7B:6B:AD:...

Espero que isso ajude alguém!


0

Como você instalou o Java e, de preferência, um JDK no seu sistema (respondendo pelo Windows porque o mencionou na sua pergunta), você deve ter o utilitário keytool na binpasta da sua instalação .

Se for esse o caso, o que você pode fazer a seguir é adicionar essa pasta bin à PATHvariável de ambiente da sua instalação do Windows.

Na próxima vez em que você abrir um shell do Windows e digitar keytool, poderá executar o utilitário real.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.