获取SHA-1指纹的方法和获取指纹的方法一样吗?之前,我正在运行这个命令:

我不清楚我得到的结果是不是SHA-1指纹。有人能解释一下吗?


当前回答

跟随本教程为谷歌Map v2创建SHA1指纹

调试模式:

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android 

释放模式:

keytool -list -v -keystore {keystore_name} -alias {alias_name}

例子:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

在windows下,当keytool命令找不到时,转到您安装的JDK目录,例如<YourJDKPath>\Java\jdk1.8.0_231\bin\,打开命令行,尝试上述命令进行调试/发布模式。

获得SHA1或SHA-256的另一种方式使用./gradlew signingReport

欲了解更多详细信息,请访问 使用Gradle的签名报告

其他回答

Keytool是一个密钥和证书管理实用程序。它允许用户 来管理自己的公钥/私钥对和关联的 用于自身份验证的证书(其中用户 向其他用户/服务进行身份验证)或数据 完整性和身份验证服务,使用数字签名。

对于Windows

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

其他

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Android上的授权使用SHA1指纹和包名来识别应用,而不是客户端ID和客户端机密。

http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

我在使用命令时遇到了一个问题

[keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test]

因此,我下载https://sourceforge.net/projects/portecle/。 然后从jar程序中打开。jks文件。它会显示所有相关信息

一个更简单的方法是在项目根目录下运行。/gradlew signingReport 本文还解释了其他方法

除了Lokesh Tiwar的回答

对于发布版本,在gradle中添加以下内容:

android {

defaultConfig{
//Goes here
}

    signingConfigs {
        release {
            storeFile file("PATH TO THE KEY_STORE FILE")
            storePassword "PASSWORD"
            keyAlias "ALIAS_NAME"
            keyPassword "KEY_PASSWORD"
        }
    }
buildTypes {
        release {
            zipAlignEnabled true
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

现在运行Lokesh's Answer中的signingReport将显示发布版本的SHA 1和MD5密钥。

首先有一个与fb-sdk android-support-v4.jar相同的.jar文件。 然后使用以下命令生成SHA1密钥:

PackageInfo info;
try {

    info = getPackageManager().getPackageInfo(
        "com.example.worldmission", PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        Log.e("Hash key", something);
        System.out.println("Hash key" + something);
    }

} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}