Openssl不被识别为内部或外部命令
我希望为我的应用程序生成一个应用程序签名,稍后将与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
我怎样才能摆脱这个?
那么在openssl的地方…你必须把你已经下载的openssl文件夹的path。 你的实际命令应该是这样的:
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
记住,你将进入的path将是你安装openssl的path…希望这有助于.. 🙂
编辑:
你可以从下面的相应链接下载openssl for windows 32和64位:
64位的OpenSSL
OpenSSL的32位
使用整个path,如下所示:
exportcert -alias androiddebugkey -keystore ~/.android /debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op enssl.exe" base64
它为我工作。
请按照这些步骤,我希望你的关键工作正常:
-
步骤1您将需要OpenSSL。 您可以从Google Code上的openssl-for-windows项目下载二进制文件。
-
步骤2解压缩文件夹,然后将path复制到
bin
文件夹到剪贴板。例如,如果文件解压缩到位置
C:\Users\gaurav\openssl-0.9.8k_WIN32
,则复制pathC:\Users\gaurav\openssl-0.9.8k_WIN32\bin
。 -
步骤3将path添加到您的系统环境path。 在设置
PATH
环境variables之后,打开cmd并键入以下命令:C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64
出现提示时input您的密码。 如果命令起作用,那么你将被显示一个键。
这对我成功了。
“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
小心以下path:
- “C:\ Program Files \ Java \ jdk1.6.0_26 \ bin \ keytool.exe”
- “D:\ keystore \ SocialListing”或者可以像这样“ C:\ Users \ Shaon.android \ debug.keystore ”
- “C:\ cygwin \ bin \ openssl.exe”或者可以像这样C:\ Users \ openssl \ bin \ openssl.exe
如果命令成功工作,那么你会看到这个命令:
input密钥库密码:input您的密码
Encryptedhashkey **
这是迟到的答案,但它会帮助像我这样的懒惰的人..将此代码添加到您的应用程序类,不需要下载openssl,也不需要设置path..只需要只是复制我的代码..和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>
首先导航到cmd中的Java / jre / bin文件夹cd c:\ Program Files(x86)\ Java \ jre7 \ bin
然后使用:[将debug.keystorepath更改为系统上的正确位置]安装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
所以整个命令是这样的:[提示在执行时input密钥库密码]
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:
我用这个代码:
这对我成功了。
"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
使用这个为我工作。 请改变你的path
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
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是系统名称把自己的系统名称
下载和解压
您可以从下面的相应链接下载openssl for windows 32和64位:
https://code.google.com/archive/p/openssl-for-windows/downloads
OpenSSL for 64位OpenSSL for 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
重要的改变我们的path在这里以及安装在您的系统中打开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
input密钥库密码: 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(); } }
对于那些寻找更新的位置来安装Windows二进制版本的openssl(32位和64位),你可以在这里find它:
http://slproweb.com/products/Win32OpenSSL.html
提供二进制分发的网站的最新列表在这里
转到cmd中的bin文件夹path,然后运行以下命令
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
你会得到你的关键哈希
对于Windows用户下载从谷歌代码存储库中打开ssl https://code.google.com/p/openssl-for-windows/downloads/list
下载后,将内容提取到一个文件夹,最好在您的c:驱动器。
然后更新您的PATH环境variables,以便您可以在命令行中的任何位置使用.exe。
[Windows 8]要更新PATH环境variables,请单击我的计算机 – >属性 – >高级系统设置。
单击高级选项卡并单击对话框底部的“环境variables”button,然后通过单击编辑从“系统variables”部分中selectpath条目。
将path粘贴到提取的openssl下载的bin文件夹中,然后单击确定。
您将需要closures并打开并命令以前可能启动的提示,以便加载更新的path设置。
现在运行这个命令:
keytool -exportcert -alias androiddebugkey -keystore“C:\ Users \ Oladipo.android \ debug.keystore”| openssl sha1 -binary | openssl base64
您应该看到开发人员密钥。
这适用于我:
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
不保证用这个openssl方法生成hashkey是可行的。 如果它不适合我。 不过谢谢你给我一个方向来解决我的问题。
保证解决scheme:您需要在单独的命令中打破整个命令,并且必须将每次执行的输出写入文件。
您可以从以下链接获取帮助:
http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1
请享用 :)