返回

获取 Android 应用的 SHA1 指纹:调试和正式版本详解

Android

Android 应用程序的 SHA1 指纹:获取指南

对于与第三方 SDK 集成并确保应用程序安全,获取 Android 应用程序的 SHA1 指纹至关重要。让我们深入了解如何在调试和正式版本中获取 SHA1 指纹。

调试版本 SHA1 指纹

在 Android Studio 中,你可以使用终端窗口检索调试版本的 SHA1 指纹。输入以下命令:

keytool -list -v -keystore ~/.android/debug.keystore

命令会列出调试密钥库中的所有证书,其中包括调试版本的 SHA1 指纹。

正式版本 SHA1 指纹

要获取正式版本的 SHA1 指纹,你需要使用 Package Manager 工具。输入以下命令:

apksigner verify --print-certs <your-app-path>

<your-app-path> 替换为正式版本 APK 文件的路径。此命令将验证 APK 并打印正式版本签名的 SHA1 指纹。

使用 Package Manager 提取 SHA1 指纹

你还可以使用 Package Manager 提取已安装应用程序的 SHA1 指纹。输入以下命令:

packagemanager get package-name signatures

package-name 替换为已安装应用程序的包名。此命令会打印出应用程序签名的 SHA1 指纹。

代码示例

以下代码示例演示了如何获取调试版本的 SHA1 指纹:

import java.security.MessageDigest;
import java.security.cert.Certificate;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

public class Sha1FingerprintGenerator {

    public static String getDebugSHA1Fingerprint() {
        try {
            // 获取调试密钥库
            String debugKeystorePath = "~/.android/debug.keystore";
            KeyStore keystore = KeyStore.getInstance("JKS");
            keystore.load(new FileInputStream(debugKeystorePath), "android".toCharArray());

            // 遍历密钥库中的证书
            Enumeration<String> aliases = keystore.aliases();
            while (aliases.hasMoreElements()) {
                String alias = aliases.nextElement();
                Certificate certificate = keystore.getCertificate(alias);

                // 获取证书的 SHA1 指纹
                MessageDigest digest = MessageDigest.getInstance("SHA1");
                byte[] fingerprint = digest.digest(certificate.getEncoded());
                return Base64.encodeToString(fingerprint, Base64.DEFAULT);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }
}

常见问题解答

1. 找不到调试密钥库怎么办?

  • 确保已使用 Android Studio 构建过应用程序。调试密钥库位于 ~/.android/debug.keystore 中。

2. keytool 命令找不到怎么办?

  • 确保 Java 开发工具包 (JDK) 已安装并已添加到系统路径中。

3. apksigner 命令找不到怎么办?

  • apksigner 是 Android SDK Build Tools 的一部分。确保已安装最新的 Android SDK Build Tools。

4. 如何获取已安装应用程序的 SHA1 指纹?

  • 使用 Package Manager 工具,如下所示:
packagemanager get package-name signatures

5. SHA1 指纹的用途是什么?

  • SHA1 指纹用于验证应用程序的身份,并确保与第三方 SDK 集成的安全性。

结论

获取 Android 应用程序的 SHA1 指纹对于确保应用程序的安全性和集成第三方 SDK 至关重要。本文提供了逐步指南,帮助你轻松获取调试版本和正式版本的 SHA1 指纹。