如何找到并运行keytool

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

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

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

我不知道如何找到关键工具,以运行它。我试图打开Windows命令提示符并粘贴上述命令,但它不起作用。

474134 次浏览

keytool是JDK的一部分。

尝试将%{JAVA_HOME}\前置到exec语句或c:\{path to jdk}\bin

keytool是JDK自带的。如果您正在使用cygwin,那么这可能已经在您的路径上了。否则,您可能会在JDK的bin文件夹中查找。

无论如何,你可能需要使用cygwin才能让shell管道(|)工作。

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

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

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

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

我自己找到了一个解决方案,如下所示。它工作得很好。

"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

获取android密钥哈希码遵循以下步骤(适用于facebook应用)

  1. 下载openssl for windows 在这里
  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. 完成了。

只需在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键;选择一个你需要的。

取决于您的Eclipse版本(我使用的是开普勒)。 去Windows> Preferences>Android> Build.

.

您将找到调试密钥库的位置路径以及SHA1指纹(您可以复制并使用它)

当我遇到同样的问题(Windows)时,很少观察到。 1. 壳管很重要。 2. 如果你使用的是OpenSSL或Cygwin,你一定要安装它。 3.keytool是JDK自带的,所以你要么在命令中指向它,要么cd到JDK/bin文件夹(exe所在的文件夹) 4. 调试密钥存储库通常位于~/.android/debug.keystore 5. 密码是“android”,无论你是按键盘输入还是按提示输入。 6. 对于别名,您可以使用任何编辑器打开(不要保存,只是打开并关闭)密钥存储库文件并读取它。 7. 最重要的一点——区别在于用引号和不加引号指定密钥库路径。我通过使用双引号中的密钥存储库路径使其工作。 正如remix090378所说,根据指令,这个命令确实工作了- cd C:\Program Files\Java\ jdk1.7.0_09\bin

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\userName.android\debug. keystore "密钥存储库" -list -v

KEYTOOL在JAVAC SDK中,所以你必须在包含jns javac的目录中找到它

在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行上输入值)!密钥将被生成

Robby Pond的答案可以概括为使用JAVA_HOME环境变量,并补偿路径中可能出现的任何空白(如Program Files):

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

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

在我的例子中,我已经使用命令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:...

希望这能帮助到一些人!

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

如果是这样的话,你接下来要做的就是你的Windows安装的将该bin文件夹添加到PATH环境变量中

下次你将打开一个Windows shell,你将键入keytool,你将能够运行实际的实用程序。

我在另一个帖子上发现了这个,它没有得到很多赞,但它对我非常有帮助。把它加在这里。

Android工作室将带来一个keytool。

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

你可以在下面看到Richar Heap的帖子,其中有一个有用的参考。我以前确实见过,但忘了。https://stackoverflow.com/a/51524526/4446406

你也可以这样做:

  • 将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
    

)

除了加雷斯的

上面的答案,下面的对我有用

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

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

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

  2. C:\Users\admin.android\debug.keystore"-alias androiddebugkey -storepass android

更多的

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

在Windows上

如果你使用Jetbrain的工具箱来管理Android Studio更新,路径是这样的

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

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

考虑添加PATH作为环境变量,并通过cmd访问它。

PATH作为值,C:\Program Files\Java\ jre1.8.0_331\bin作为变量,并通过keytool访问它…