如何获取仅使用 v2 方案签名的 APK 的签名校验和?

How do I get the signature checksum of my APK that is signed with only the v2 scheme?

我之前在这里发布了一个关于如何获取我的 APK 的签名校验和的问题:

如果应用程序使用 v1 签名方案或组合 v1/v2 签名方案进行签名,则答案是完美的。 (Jar 和完整的 APK 签名)

但是,由于我的应用只会 运行 Android O 或更高版本(它是特定于设备的应用),我将只使用 APK 签名方案 v2 (v2计划)。

我将使用 EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM。参见:https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html 了解详情。

如何获取我的应用程序的 APK (v2) 签名校验和,我可以在我的 key/value 对中使用它来配置设备所有者应用程序的 NFC?

以您提到的示例 为基础:

apksigner verify -print-certs [path to your apk] | grep -Po "(?<=SHA-256 digest:) .*" | xxd -r -p | openssl base64 | tr -d '=' | tr -- '+/=' '-_'

您指的 "signature checksum" 是 APK 签名证书的 URL-安全 Base64 编码 SHA-256 摘要。 apksigner verify --print-certs 打印 APK 签名证书的各种摘要,无论 APK 是 JAR 签名的、APK 签名方案 v2 签名的还是两者都有。

apksigner 通过 Android SDK 构建工具 24.0.3 和更新版本分发(26.0.0 意外丢失 apksigner 除外)。 https://developer.android.com/studio/command-line/apksigner.html