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

Ste*_*etz 5 android provisioning device-policy-manager device-owner android-for-work

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

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

但是,由于我的应用只能在Android O或更高版本上运行(这是特定于设备的应用),因此我将仅使用APK签名方案v2(v2方案)对其进行签名。

我将使用EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM。有关详情,请参见:https//developer.android.com/reference/android/app/admin/DevicePolicyManager.html

如何获得我的应用程序的APK(v2)签名校验和,可在我的键/值对中用于NFC设置设备所有者应用程序?

Ale*_*bin 6

以示例为基础如何获取APK的签名校验和?您提到:

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

您所指的“签名校验和”是APK签名证书的URL安全Base64编码的SHA-256摘要。apksigner verify --print-certs打印APK签名证书的各种摘要,而不管APK是JAR签名,APK签名方案v2签名还是两者。

apksigner通过Android SDK Build Tools 24.0.3和更高版本分发(26.0.0意外丢失的除外apksigner)。https://developer.android.com/studio/command-line/apksigner.html

  • 刚刚验证此方法确实适用于 v1 和/或 v2 方案!谢谢! (2认同)
  • 我的Mac有一个不支持-P标志的grep版本。为了解决这个问题,我不得不稍微改变一下命令:我用perl -nle'g $-if m {(?? == SHA-替换了grep -Po“(?&lt;= SHA-256摘要:)。*” 256摘要:)。*}'(改编自:/sf/answers/1166108331/) (2认同)