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

我怎样才能摆脱这个?


当前回答

请遵循以下步骤,我希望你的钥匙工作正常:

Step 1 You will need OpenSSL. You can download the binary from openssl-for-windows project on Google Code. Step 2 Unzip the folder, then copy the path to the bin folder to the clipboard. For example, if the file is unzipped to the location C:\Users\gaurav\openssl-0.9.8k_WIN32, then copy the path C:\Users\gaurav\openssl-0.9.8k_WIN32\bin. Step 3 Add the path to your system environment path. After your PATH environment variable is set, open the cmd and type this command: C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64 Type your password when prompted. If the command works, then you will be shown a key.

其他回答

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

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

使用这个

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\DK\openssl-0.9.8d_X64\bin\openssl.exe" sha1 -binary | "C:\Users\DK\openssl-0.9.8d_X64\bin\openssl.exe" base64

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 -二进制|

这是一个很晚的答案,但它将帮助像我这样的懒人。将此代码添加到你的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);
        }
    }
}

不要忘记在manifest中添加MyApplication类:

<application
        android:name=".MyApplication"
</application>

步骤1

从https://code.google.com/archive/p/openssl-for-windows/downloads下载用于windows的SSL。

步骤2

解压文件夹到OpenSSL,并粘贴到“C:\Program Files”。

步骤3

在环境变量中添加“C:\Program Files\OpenSSL\bin”(编辑系统环境变量>环境变量> Path > New)。它将使openssl在终端中工作。

步骤4

将“C:\Program Files\Android\Android Studio\jre\bin”添加到环境变量中。它将使keytool在终端中工作。

步骤5

打开一个终端并执行:

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

密码应该是android。