我希望为我的应用生成应用程序签名,稍后将与Facebook集成。在Facebook的一个教程中,我找到了这个命令:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
在本教程中,它说通过运行此cmd,我的生成签名的过程将开始。
但是,此命令会出错:
openssl is not recognized as an internal or external command
我怎样摆脱这个?
答案 0 :(得分:374)
在openssl的地方......你必须实际将路径放到你下载的openssl文件夹中。您的实际命令应如下所示:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\abc\openssl\bin\openssl.exe" sha1 -binary | "C:\Users\abc\openssl\bin\openssl.exe" base64
请记住,您将输入的路径将是您安装openssl的路径...希望这有助于......: - )
修改强>
您可以从以下相应链接下载openssl for Windows 32和64位:
答案 1 :(得分:22)
使用整个路径,如下所示:
exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe" base64
它对我有用。
答案 2 :(得分:18)
请按照以下步骤操作,希望您的密钥正常工作:
第1步您将需要OpenSSL。您可以从Google代码上的openssl-for-windows项目下载二进制文件。
第2步解压缩文件夹,然后将bin
文件夹的路径复制到剪贴板。
例如,如果文件已解压缩到位置C:\Users\gaurav\openssl-0.9.8k_WIN32
,则复制路径C:\Users\gaurav\openssl-0.9.8k_WIN32\bin
。
步骤3 将路径添加到系统环境路径。设置PATH
环境变量后,打开cmd并键入以下命令:
C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64
出现提示时输入密码。如果该命令有效,那么您将看到一个键。
答案 3 :(得分:11)
这对我来说很成功。
“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
小心以下路径:
如果命令成功运行,您将看到以下命令:
输入密钥库密码:typeyourpassword
<强> Encryptedhashkey ** 强>
答案 4 :(得分:10)
这是迟到的答案,但它会帮助像我这样的懒人..将此代码添加到您的Application类,无需下载openssl,也无需设置路径..只需要复制此代码即可...和keyHash将在日志中生成。
import com.facebook.FacebookSdk;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
printKeyHash();
}
private void printKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(
getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:",
Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("jk", "Exception(NameNotFoundException) : " + e);
} catch (NoSuchAlgorithmException e) {
Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
}
}
}
并且不要忘记在清单中添加MyApplication类:
<application
android:name=".MyApplication"
</application>
答案 5 :(得分:6)
首先导航到cmd中的Java / jre / bin文件夹 cd c:\ Program Files(x86)\ Java \ jre7 \ bin
然后使用:[将debug.keystore路径更改为系统上的正确位置] 安装openssl(对于Windows 32或64,根据您的需要在c:\ openssl)
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.exe" sha1 -binary | "c:\openssl\bin\openssl.exe" base64
所以整个命令是这样的:[提示在执行时输入密钥库密码]
c:\Program Files (x86)\Java\jre7\bin>keytool -exportcert -alias androiddebugkey
-keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.ex
e" sha1 -binary | "c:\openssl\bin\openssl.exe" base64
Enter keystore password:
答案 6 :(得分:4)
Steps to create Hash Key.
1: Download openssl from Openssl for Windows . I downloaded the Win64 version
2:Unzip and copy all the files in the bin folder including openssl.exe(All file of bin folder)
3:Goto to the folder where you installed JDK for me it’s C:\Program Files\Java\jdk1.8.0_05\bin
4:Paste all the files you copied from Openssl’s bin folder to the Jdk folder.
然后转到C:\ Program Files \ Java \ jdk1.8.0_05 \ bin并按shift键并右键单击并打开cmd
C:\Program Files\Java\jdk1.8.0_05\bin>//cmd path
这是Sha1过去的
keytool -exportcert -alias androiddebugkey -keystore“C:\ User \ ABC \ .android.keystore”| openssl sha1 -binary | openssl base64
//和ABC是系统名称放置自己的系统名称
答案 7 :(得分:2)
用这个对我有用。请改变你的路径
C:\ Program Files \ Java \ jre7 \ bin keytool -exportcert -alias androiddebugkey -keystore“C:\ Users \ Ace.android \ debug.keystore”| “C:\ OpenSSL的\ BIN
\ openssl.exe“sha1 -binary |”C:\ openssl \ bin \ openssl.exe“base64
答案 8 :(得分:2)
我使用了这段代码:
这对我来说很成功。
"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
答案 9 :(得分:1)
下载和解压缩
您可以从以下相应链接下载openssl for Windows 32和64位:
https://code.google.com/archive/p/openssl-for-windows/downloads
OpenSSL for 64 Bits OpenSSL for 32 Bits
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" sha1 -binary | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" base64
重要更改我们的路径此处以及在系统中安装open ssl
毫无疑问
C:\Users\keshav.gera>keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" sha1 -binary | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" base64
输入密钥库密码: android
**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**
=============================================== ==============
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
private void PrintHashKey() {
try {
PackageInfo info = getPackageManager().getPackageInfo("**com.keshav.patanjalidemo Your Package Name Here**", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
答案 10 :(得分:0)
转到cmd中的bin文件夹路径,然后运行以下命令
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
您将获得密钥哈希
答案 11 :(得分:0)
for windows用户从谷歌的代码库https://code.google.com/p/openssl-for-windows/downloads/list下载open ssl
下载后,将内容提取到最好放在c:驱动器中的文件夹中。
然后更新PATH环境变量,以便从命令行中的任何位置使用.exe。
[windows 8]要更新PATH环境变量,请单击我的计算机 - >属性 - >高级系统设置。
点击“高级”标签,然后点击“环境变量”&#39;在对话框底部的按钮,然后从系统变量&#39;中选择路径条目。单击编辑部分。
将路径粘贴到解压缩的openssl下载的bin文件夹中,然后单击“确定”。
您需要关闭并打开以前可能已启动的命令提示符,以便加载更新的路径设置。
现在运行此命令:
keytool -exportcert -alias androiddebugkey -keystore&#34; C:\ Users \ Oladipo.android \ debug.keystore&#34; | openssl sha1 -binary | openssl base64
您应该看到开发人员密钥。
答案 12 :(得分:0)
对于那些寻找更新位置来安装openssl(32位和64位)的Windows二进制版本的人,你可以在这里找到它:
http://slproweb.com/products/Win32OpenSSL.html
提供二进制分发的网站的最新列表在这里
答案 13 :(得分:0)
这对我有用:
C:\Users\example>keytool -exportcert -alias androiddebugkey -keystore
"C:\Users\example\.android" | "C:\openssl\bin\openssl.exe" sha1 -binary
| "C:\openssl\bin\oenssl.exe" base64
答案 14 :(得分:0)
IDK(如果此处与此相关),但是如果已安装Git,则可以在“ C:\ Program Files \ Git \ usr \ bin”中找到openssl,并且可以在终端中使用该位置来存储Keystore命令
哦,是的,命令:
keytool -exportcert-别名密钥库-keystore“ C:\ Users \ YOURPATH / filename.jks” | “ C:\ Program Files \ Git \ usr \ bin \ openssl” sha1 -binary | “ C:\ Program Files \ Git \ usr \ bin \ openssl” base64
答案 15 :(得分:0)
对于那些像我现在一样迷路的人,请关注 Usama Sarwar 的回应 但如果:
<块引用>"your_openssl_path/bin/openssl.exe"
不行,试试
<块引用>your_openssl_path/bin/openssl.exe。
没有引号。
<块引用>"c:\openssl\bin\openssl.exe" => 对我不起作用
<块引用>c:\openssl\bin\openssl.exe => 为我工作
答案 16 :(得分:-1)
无法保证使用此单个openssl方法生成hashkey将起作用。 如果它对我不起作用。但感谢你给我一个解决问题的方向。
保证解决方案: 您需要在单独的命令中中断整个命令,并且必须在文件中写入每个执行的输出。
您可以从以下链接获取帮助:
http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1
享受:)