我完全不明白这个过程。我已经能够导航到Java SDK中包含keytool的文件夹。虽然我一直得到错误openssl不识别为内部或外部命令。问题是,即使我能让它工作,我该做什么,然后做什么?


当前回答

这里是完整的细节(适用于Windows)

1. 根据您的32位或64位系统下载第三或第四版OpenSSl(使用e会更好)。

2. 解压到C目录下下载的zip文件

3.打开解压的文件夹到bin并复制路径,它应该是C:\openssl-0.9.8 k_x64 \bin\openssl(在结束时添加\openssl)

4. (获取Jdk bin文件夹的路径,如果你知道怎么做,忽略这个)。

打开android studio ~file~Project Structure(ctrl+alt+shift+s),在左侧面板中选择SDK location,复制JDK位置并添加/bin

因此,最终的JDK位置将类似于C:\Program Files\Android\Android Studio\jre\bin

我们使用这种方法来获取Jdk的位置,因为你可能像我一样使用嵌入式Jdk

现在你有了OpenSSl的位置和JDK的位置

5. 现在我们需要调试密钥库的位置,为打开C~>Users~>YourUserName~>。Android应该有一个文件名调试。Keystore,复制路径位置,应该是这样的

C:\Users\Redman\.android\ debug.keystore

6. 现在打开命令提示符并键入命令

cd YourJDKLocationFromStep4  

对我来说

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7. 现在构造以下命令

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

在我的例子中,命令如下所示

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

现在在命令提示符中输入这个命令,如果你做对了,你会被要求输入密码(密码是android)

Enter keystore password:  android

就是这样,你会得到Key Hash,只是复制它并使用它

对于Signed KeyHash,构造以下命令

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

输入您的密钥库密码,如果您输入错误的密码,它将给出错误的KeyHash

请注意

如果出于某种原因,如果它在某些路径上给出错误,那么将该路径用双引号括起来。此外,Windows power shell对我来说工作不太好,我使用git bash(或使用命令提示符)。

例子

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

其他回答

很容易找到你的android项目的sha1

然后粘贴到这个网站上

对于get sha1只是

// vscode and my cmd
project-name/cd android && ./gradlew signingReport

// other 
project-name/cd android && ./gradlew signingReport

请试试这个,它对我有用:

fun Context.generateSignKeyHash(): String {

    try {

        val info = packageManager.getPackageInfo(
            packageName,
            PackageManager.GET_SIGNATURES
        )

        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            return Base64.encodeToString(md.digest(), Base64.DEFAULT)
        }

    } catch (e: Exception) {
        Log.e("keyHash", e.message.toString())
    }

    return ""

}

步骤1->在您的系统中打开CMD

步骤2->C:\程序文件\Java\jdk1.6.0_43\bin>

步骤3->keytool -list -v -keystore C:\Users\leon\.android\debug. exeKeystore -alias androiddebugkey -storepass android -keypass android

你得到SHA1值点击这个链接你转换你的SHA1值为哈希键

我100%肯定这个链接会帮助你

我也遇到了同样的问题,下面是我如何解决它的方法

keytool -list -alias androiddebugkey -keystore <project_file\android\app\debug.keystore>

以下是你需要做的

从代码下载openSSl 提取它。在C:/目录下创建一个名为OpenSSL的文件夹,并将解压后的代码复制到这里。

检测调试。Keystore文件路径。如果你没有找到,那么在C:/中进行搜索,并在下一步中使用命令中的Path。

检测您的keytool.exe路径,并进入dir/ in命令提示符,并在一行中运行此命令

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

它会要求输入密码,输入android 这是所有。你会得到一个key-hash