【问题标题】:How can I find and run the keytool如何找到并运行 keytool
【发布时间】:2017-09-02 07:19:17
【问题描述】:

我正在here 阅读 Facebook 开发者的开发指南

它说我必须使用 keytool 来导出我的应用程序的签名,例如:

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

我不知道如何找到 keytool 来运行它。我尝试打开 Windows 命令提示符并粘贴上述命令,但没有成功。

【问题讨论】:

  • 如果你正在运行基于 Linux 的系统 /usr/local/java/bin# ./keytool 如果你正在运行 Windows find the JDK install path and check bin folder
  • 我找到了这个答案,你可以用它来解决问题stackoverflow.com/a/57390582/13405428

标签: android windows facebook keytool


【解决方案1】:

我自己找到了如下引用的解决方案。它工作正常。

"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

【讨论】:

  • 我在这里找到它:C:\Program Files\Java\jre1.8.0_111\bin\keytool.exe
  • 或 C:\Program Files\Android\Android Studio\jre\bin
  • 感谢@SHAHM:非常适合我们这些不想再次明确下载 Java 并且每周都被窃听以升级到最新版本的人。
  • 我发现只有keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore 为我工作。从谷歌找到here :)
  • 对于“在这里找到它”@JaimeMontoya 评论作为补充。将 keytool.exe 的目录添加到 PATH。它会让你的生活轻松很多。
【解决方案2】:

只需将这些输入到 Windows 命令提示符中。

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

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

基本密码是android

您将看到MD5SHA1SHA256 键;选择您需要的那个。

【讨论】:

  • 这对我有用。对于调试键,请使用 -alias androiddebugkey。
  • 我在下一行使用发布版本:1) cd C:\Program Files\Java\jdk1.8.0_162\bin 和下一个 2) keytool -list -v -keystore "C:\AndroidProjects \Project1\app\myapp.keystore"
  • keytool error: java.lang.Exception: Only one command is allowed: both -exportcert and -list were specified.
【解决方案3】:

要获取 android 密钥哈希码,请按照以下步骤操作(适用于 facebook 应用)

  1. 下载适用于 windows 的 openssl here
  2. 现在解压到c盘
  3. 打开 cmd 提示符
  4. 输入cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 然后只输入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. 完成

要获取证书指纹(MD5)代码,请按照以下步骤操作

  1. 转到-C:\Program Files\Java\jdk1.6.0_26\bin
  2. 在 bin 文件夹中运行 jarsigner.exe 文件
  3. 打开 cmd 提示符
  4. 输入cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 然后再次输入 cmd keytool -list -keystore "C:/Documents and Settings/<your user name>/.android/debug.keystore"
  6. 它现在会要求输入密钥库密码。默认为“android”输入并输入
  7. 完成。

【讨论】:

  • 这对我有用,直到最后一步。输入“android”后它吐出垃圾......我猜它没有使用正确的编码?如果我输入“blah”之类的内容,它会告诉我密码不正确。所以当我输入“android”时它知道我的密码是正确的
  • 我发现问题是我遗漏了标志 -list 和 -v
【解决方案4】:

keytool 是 JDK 的一部分。

尝试在 exec 语句或 c:\{path to jdk}\bin 前添加 %{JAVA_HOME}\

【讨论】:

  • 我把cer文件和truststore文件放在同一个目录下,用了这个命令:"%JAVA_HOME%\bin\keytool" -import -keystore truststore -file certificate.cer -alias my-alias
【解决方案5】:

我在另一个帖子上发现了这个,虽然没有得到很多赞,但它对我很有帮助。所以会在这里添加。

Android Studio 会自带一个keytool。

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

您可以在下面查看 Richar Heap 的帖子,其中包含有用的参考资料。我以前确实看过这个,但忘记了。 https://stackoverflow.com/a/51524526/4446406

【讨论】:

    【解决方案6】:

    KeyTool 是 JDK 的一部分。假设您使用默认设置安装了 JDK,您会在 $JAVA_HOME/bin 中找到它

    【讨论】:

      【解决方案7】:

      Robby Pond 的回答可以推广到使用JAVA_HOME 环境变量,也可以补偿路径中可能出现的任何空白(如Program Files):

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

      【讨论】:

        【解决方案8】:

        keytool 是 jdk 的一部分,应该是 $JAVA_HOME/bin/keytool

        【讨论】:

          【解决方案9】:

          keytool 位于 JDK bin 目录 ($JAVA_HOME/bin)。 JAVA_HOME 是您的 JDK 安装目录。 要使用该命令行,您还应该将 $JAVA_HOME/bin 包含到您的 PATH 环境变量中。

          【讨论】:

            【解决方案10】:

            Keytool 是 Java SDK 的一部分。您应该能够在您的 Java SDK 目录中找到它,例如C:\Program Files\Java\jdk1.6.0_14\bin

            【讨论】:

              【解决方案11】:

              在cmd窗口(需要以管理员身份运行),

              cd %JAVA_HOME% 
              

              仅当您设置了系统环境变量 JAVA_HOME 时才有效。要为您的路径设置系统变量,您可以这样做

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

              然后,你可以输入

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

              cd %JAVA_HOME%\bin
              

              然后,执行JAVA jdk提供的任何命令,例如

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

              你只需要在回车后回答问题(相当于在 cmd 行输入值)!将生成密钥

              【讨论】:

                【解决方案12】:

                Android: where to run keytool command in android

                如果您的类路径变量中设置了 JRE,则可以在您的 dos 命令提示符下运行 Keytool 命令。

                例如,如果你想获取Android SDK调试证书的MD5指纹,

                只需运行以下命令...

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

                其中C:\Documents and Settings\user\.android> 是包含必须认证的debug.keystore 的路径。

                详情请访问http://code.google.com/android/add-ons/google-apis/mapkey.html#getdebugfingerprint

                【讨论】:

                  【解决方案13】:

                  取决于您的 Eclipse 版本(我使用的是 Kepler)。 转到 Windows> 首选项>Android> 构建。

                  您会找到调试密钥库的位置路径以及 SHA1 指纹(您可以直接复制和使用)

                  【讨论】:

                    【解决方案14】:

                    如果您安装了带有 Xamarin/移动开发支持的 Visual Studio,您将在 C:\Program Files\Android\jdk\microsoft_dist_openjdk_{version}\bin\ 处安装 java,就像我的情况一样。

                    【讨论】:

                      【解决方案15】:

                      KEYTOOL 在 JAVAC SDK 中,所以你必须在包含 javac

                      的目录中找到它

                      【讨论】:

                        【解决方案16】:

                        除了Gareth's

                        上面回答,下面对我有用

                        只需将这些输入到 Windows 命令提示符中。

                        确保终端以管理员身份运行

                        1. cd C:\Program Files\Android\Android Studio\jre\bin

                        2. keytool -list -v -keystore "C:\Users\admin.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

                        阅读more

                        N:B:这应该在第一次构建后完成,因为密钥仅在第一次构建后生成

                        【讨论】:

                          【解决方案17】:

                          keytool 随 JDK 一起提供。如果您使用的是 cygwin,那么这可能已经在您的路径上。否则,您可能会在 JDK 的 bin 文件夹中四处寻找。

                          您可能仍然需要使用 cygwin 才能使 shell 管道 (|) 工作。

                          【讨论】:

                          • 你能告诉我如何在命令下运行吗? keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -二进制 | openssl base64
                          • 是的,我做到了。当我运行上述命令时,CMD 说:'openssl' 不被识别为内部或外部命令、可运行程序或批处理文件。
                          • 您可能还需要通过 cygwin 的设置安装 openssl 包。
                          • 我已经安装了 openssl 包。问题依然存在:(
                          • 可以自己运行openssl吗?当您输入“打开”并按 Tab 键时,您会看到哪些选项?
                          【解决方案18】:

                          当我遇到同样的问题时,几乎没有观察到 (Windows)。 1、壳管很重要。 2. 如果您使用的是 OpenSSL 或 Cygwin,则绝对必须安装它。 3. keytool 随 JDK 一起提供,因此您必须在命令中指向它,或者您有 cd 到 JDK/bin 文件夹(exe 所在的位置) 4. 调试密钥库通常位于 ~/.android/debug.keystore 5.密码是“android”,无论你是-keypass还是在提示时输入。 6.对于别名,您可以使用任何编辑器打开(不要保存,只需打开和关闭)密钥库文件并阅读它。 7. 最重要的 - 在引号内指定密钥库路径和不加引号是不同的。我通过使用双引号内的密钥库路径使它工作。 正如 remix090378 所说并根据instruction,这个命令确实有效 - cd C:\Program Files\Java\jdk1.7.0_09\bin

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

                          【讨论】:

                            【解决方案19】:

                            在我的例子中,我已经使用命令ionic cordova build android --prod 生成了一个 APK 文件,并且我需要获取现有 APK 文件的 SHA-1 指纹。这是我通过在 App 目录中运行以下命令获得它的方法:

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

                            所以,我基本上在以下应用位置运行了上述命令:

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

                            这给了我 SHA1 指纹:7B:6B:AD:...

                            希望这对某人有所帮助!

                            【讨论】:

                              【解决方案20】:

                              或者,您可以执行以下操作:

                              • 将下面的 bat 文件复制到您的 PATH 环境变量中已存在的任何文件夹中
                              • 然后只需在任何 Windows shell 中使用 keytool 命令

                              keytool 的实际位置在 bat 文件中定义。如果位置错误,bat 文件将扫描您的系统以检测 ProgramFiles(子)文件夹中的潜在位置。

                              还可以找到keytool2.bat,“keytool -v -list -keystore”的便捷快捷方式,广泛用于快速检查jks文件的内容。

                              keytool.bat:


                              :: 
                              :: 
                              :: "keytool alias" script by Céphas
                              :: easy method : add the known keytool.exe folder to your personal PATH variable (run : C:\Windows\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables)
                              :: else, add the folder containing this bat script to your personal path or put this script in any folder already defined in your path
                              ::
                              :: also see keytool2.bat that automatically adds the following parameters in the keytool command line : -v -list -keystore, for quick display of jks content
                              :: 
                              :: 
                              @echo off
                              set THIS_SCRIPT=%~f0
                              rem  setlocal enableDelayedExpansion : necessary for paths containing special chars
                              setlocal enableDelayedExpansion
                              
                              rem  set PATH to keytool.exe ; path must include the final \
                              rem  ^ is escape char for paths containing & \ < > ^ | 
                              set PATH_TO=C:\Program Files\Java\jre1.8.0_45\bin\
                              set PROG_NAME=keytool.exe
                              
                              rem full_path, with "", to work with paths containing special chars
                              set FULL_KT_PATH="!PATH_TO!!PROG_NAME!"
                              
                              rem checks if keytool.exe exists
                              (dir %FULL_KT_PATH%>nul 2>nul && set KT_FOUND=yes) || set KT_FOUND=no
                              
                              if %KT_FOUND%==yes (
                                  rem keytool found => launching it with all supplied parameters
                                  rem 
                                  rem
                                  %FULL_KT_PATH% %*
                                  rem
                                  rem
                              ) else (
                                  rem keytool not found, trying to find it in %ProgramFiles%
                              
                                  echo.
                                  echo Keytool not found in expected location, scan in progess ...
                                  echo.
                              
                                  cd "%ProgramFiles(x86)%" 2>nul && dir /B /S keytool.exe 2>nul
                              
                                  cd "%ProgramFiles%" 2>nul && dir /B /S keytool.exe 2>nul
                              
                                  echo.
                                  echo *********
                                  echo Path to program keytool.exe not properly defined, or keytool/java missing on this system
                                  echo If any location has been found during above scan, fix variable "PATH_TO" in %THIS_SCRIPT% accordingly
                                  echo *********
                                  echo.
                                  pause
                                  
                              )    
                              

                              keytool2.bat:


                              :: 
                              :: 
                              :: "keytool2 alias" script by Céphas
                              :: easy method : add the known keytool.exe folder to your personal PATH variable (run : C:\Windows\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables)
                              :: else, add the folder containing this bat script to your personal path or put this script in any folder already defined in your path
                              ::
                              :: keytool2 automatically adds the following parameters in the keytool command line : -v -list -keystore
                              :: thus, to quickly display the full content of a jks file, usage is simply : keytool2 \path\to\your\keystore.jks [-alias your_alias]
                              :: 
                              :: 
                              @echo off
                              set THIS_SCRIPT=%~f0
                              rem  setlocal enableDelayedExpansion : necessary for paths containing special chars
                              setlocal enableDelayedExpansion
                              
                              rem  set PATH to keytool.exe ; path must include the final \
                              rem  ^ is escape char for paths containing & \ < > ^ | 
                              set PATH_TO=C:\Program Files\Java\jre1.8.0_45\bin\
                              set PROG_NAME=keytool.exe
                              
                              
                              rem full_path, with "", to work with paths containing special chars
                              set FULL_KT_PATH="!PATH_TO!!PROG_NAME!"
                              
                              rem checks if keytool.exe exists
                              (dir %FULL_KT_PATH%>nul 2>nul && set KT_FOUND=yes) || set KT_FOUND=no
                              
                              if %KT_FOUND%==yes (
                                  rem keytool found => launching it with all supplied parameters
                                  rem 
                                  rem
                                  %FULL_KT_PATH% -v -list -keystore %*
                                  rem
                                  rem
                              ) else (
                                  rem keytool not found, trying to find it in %ProgramFiles%
                              
                                  echo.
                                  echo Keytool not found in expected location, scan in progess ...
                                  echo.
                              
                                  cd "%ProgramFiles(x86)%" 2>nul && dir /B /S keytool.exe 2>nul
                              
                                  cd "%ProgramFiles%" 2>nul && dir /B /S keytool.exe 2>nul
                              
                                  echo.
                                  echo *********
                                  echo Path to program keytool.exe not properly defined, or keytool/java missing on this system
                                  echo If any location has been found during above scan, fix variable "PATH_TO" in %THIS_SCRIPT% accordingly
                                  echo *********
                                  echo.
                                  pause
                                  
                              )    
                              

                              【讨论】:

                                【解决方案21】:

                                在 Windows 上

                                如果您使用 Jetbrain 的 Toolbox 来管理 Android Studio 更新,路径类似于

                                C:\Users\{USERNAME}\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\202.7486908\jre\bin 
                                

                                更新后我必须手动更新/将此路径设置为JAVA_HOME(jre 文件夹)

                                【讨论】:

                                  【解决方案22】:

                                  鉴于您已在系统中安装了 Java,最好是 JDK(回答 Windows,因为您在问题中提到了它)您 应该在安装的 bin 上拥有 keytool 实用程序文件夹。

                                  如果是这种情况,您接下来可以做的是将该 bin 文件夹添加到 Windows 安装的 PATH 环境变量

                                  下次您打开 Windows shell 并输入 keytool 时,您将能够运行实际的实用程序。

                                  【讨论】:

                                    猜你喜欢
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2011-11-09
                                    • 1970-01-01
                                    • 2013-04-26
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多