我想为我的应用程序稍后将与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
我怎样才能摆脱呢?
Answer 1:
嗯,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的...希望这有助于路径路径.. :-)
编辑:
你可以为Windows 32和下面的相应链接64位下载的OpenSSL:
OpenSSL的64位
OpenSSL的32位
Answer 2:
使用整个路径,如下所示:
exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe" base64
它为我工作。
Answer 3:
请按照以下的步骤,我希望你的关键工作正常:
第1步你需要OpenSSL的。 您可以从下载二进制的OpenSSL换窗户上的谷歌代码项目。
步骤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
提示时输入密码。 如果该命令的作品,那么你将看到一个关键。
Answer 4:
这是我成功合作。
“C:\ Program Files文件\的Java \ jdk1.6.0_26 \ BIN \ keytool.exe的” -exportcert -alias sociallisting -keystore “d:\密钥库\ SocialListing” | “C:\ cygwin的\斌\ openssl.exe” SHA1 -binary | “C:\ cygwin的\斌\ openssl.exe”的base64
小心以下路径:
- “C:\ Program Files文件\的Java \ jdk1.6.0_26 \ BIN \ keytool.exe的”
- “d:\密钥库\ SocialListing”,或者它可以是这样的“C:\用户\ Shaon.android \ debug.keystore”
- “C:\ cygwin的\ BIN \ openssl.exe”,或者可以是这样的C:\ Users \用户的OpenSSL \ BIN \ openssl.exe
如果命令成功工作,那么你会看到下面的命令:
输入密钥库密码:typeyourpassword
Encryptedhashkey **
Answer 5:
这是迟到的回答,但它会帮助懒惰的人喜欢我..将此代码添加到您的应用程序类,没有必要下载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>
Answer 6:
首先浏览到您的Java / JRE /斌在cmd中CD C文件夹:jre7 \程序文件(x86)\ Java的\ \ 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:
Answer 7:
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过去,这
密钥工具-exportcert -alias androiddebugkey -keystore “C:\用户\ ABC \ .android.keystore” | OpenSSL的SHA1 -binary | OpenSSL的BASE64
//和ABC是系统名称把自己的系统名称
Answer 8:
我用这个代码:
这是我成功合作。
"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
Answer 9:
使用此为我工作。 请改变你的路径
C:\ Program Files文件\的Java \ jre7 \ BIN密钥工具-exportcert -alias androiddebugkey -keystore “C:\用户\ Ace.android \ debug.keystore” | “C:\ OpenSSL的\ BIN
\ openssl.exe” SHA1 -binary | “C:\ OpenSSL的\ BIN \ openssl.exe” 的base64
Answer 10:
下载和解压缩
您可以为Windows 32和下面的相应链接64位下载的OpenSSL:
https://code.google.com/archive/p/openssl-for-windows/downloads
OpenSSL的64位的OpenSSL为32位
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
重要改变我们的路在这里以及在你的系统上安装开放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
输入密钥库密码: 机器人
**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();
}
}
Answer 11:
对于那些寻找一个更近的位置安装Windows的OpenSSL的二进制版本(32位和64位),你可以在这里找到:
http://slproweb.com/products/Win32OpenSSL.html
的网站,提供二进制分发版的最新列表向上是这里
http://www.openssl.org/related/binaries.html
Answer 12:
进入bin文件夹路径在cmd中,然后运行以下命令
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
你会得到你的密钥散列
Answer 13:
对于Windows用户从谷歌的代码库下载开放SSL https://code.google.com/p/openssl-for-windows/downloads/list
下载后,将内容提取到一个文件夹最好在你的C:驱动器。
然后更新您的PATH环境变量,以便你可以在命令行中使用该.exe从任何位置。
[窗口8]要更新PATH环境变量,单击我的电脑 - >属性 - >高级系统设置。
单击高级选项卡,然后单击“环境变量”按钮,在对话框的底部,然后从“系统变量”部分通过单击编辑Path项。
粘贴路径提取的OpenSSL下载的bin文件夹,然后单击确定。
您将需要关闭你可能以前推出,打开并命令提示符下,这样就可以加载更新的路径设置。
现在,运行以下命令:
密钥工具-exportcert -alias androiddebugkey -keystore “C:\用户\ Oladipo.android \ debug.keystore” | OpenSSL的SHA1 -binary | OpenSSL的BASE64
您应该看到开发者密钥。
Answer 14:
这对我的作品:
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
Answer 15:
它不保证这种单一OpenSSL的方法产生hashkey会工作。 如果它不为我工作。 但是,感谢给我解决问题的方向。
保证解决方案:你需要单独的命令来打破整个命令必须写在文件中的每个执行的输出。
您可以从以下链接帮助:
http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1
请享用 :)
文章来源: Openssl is not recognized as an internal or external command