我希望为我的应用程序生成一个应用程序签名,以后将与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

我怎样才能摆脱这个?


当前回答

这对我来说很成功。

“C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe” -exportcert -alias sociallist -keystore “D:\keystore\SocialListing” |“C:\cygwin\bin\openssl.exe” sha1 -binary |“C:\cygwin\bin\openssl.exe” base64

注意以下路径:

“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

如果命令成功工作,那么你将看到这个命令:

输入keystore密码:typeyourpassword

Encryptedhashkey * *

其他回答

IDK如果这是相关的,但如果你已经安装了Git,你可以在“C:\Program Files\Git\usr\bin”中找到openssl,这个位置你可以在终端中使用你的密钥库命令。

哦,对了,命令:

"C:\Users\YOURPATH/filename. exe -exportcert -alias keystore -keystore "C:\Program Files\Git\usr\bin\openssl" base64 . jks" | "C:\Program Files\Git\usr\bin\openssl" sha1 -二进制|

这种方法对我很有效。请更改您的路径

C:\Program Files\Java\jre7\bin keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Ace.android\debug. keystore "keystore" | "C:\openssl\bin

\openssl.exe" sha1 -二进制| "C:\openssl\bin\openssl.exe" base64

对于Windows用户,请从谷歌的代码存储库https://code.google.com/p/openssl-for-windows/downloads/list下载开放SSL

下载后,将内容解压到一个文件夹中,最好是在c:驱动器中。

然后更新PATH环境变量,以便可以从命令行中的任何位置使用.exe。

要更新PATH环境变量,请单击“我的电脑->属性->高级系统设置”。

单击高级选项卡,单击对话框底部的“环境变量”按钮,然后单击编辑从“系统变量”部分选择路径条目。

将该路径粘贴到解压缩的openssl下载的bin文件夹,然后单击ok。

您将需要关闭和打开之前可能启动的命令提示符,以便加载更新后的路径设置。

现在运行这个命令:

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Oladipo.android\debug. keystoreKeystore " | openssl sha1 -binary | openssl base64 . Keystore

您应该看到开发人员键。

在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 windows32及64bit:

OpenSSL for 64位

OpenSSL for 32 Bits

下载和解压缩

你可以从以下连结下载openssl for windows32及64bit:

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

重要的改变我们的路径这里以及安装开放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

输入keystore密码: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();
        }

    }