3

我以前張貼在這裏怎麼得到我的APK的簽名校驗一個問題: How do I get the signature checksum of my APK?如何獲得僅使用v2方案簽名的APK的簽名校驗和?

答案是完美的,如果一個應用程序與V1簽名方案或組合V1/V2簽名方案簽名。 (Jar and Full APK Signatures)

但是,由於我的應用只能在Android O或更高版本上運行(它是一種特定於設備的應用),因此我只會使用APK簽名方案v2(v2方案) 。

我將使用EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM。詳情請參閱:https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html

如何獲取我的應用的APK(v2)簽名校驗和,以便在我的密鑰/值對中使用NFC配置設備所有者應用?

回答

3

要建立在例如How do I get the signature checksum of my APK?你提到:

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

「簽名校驗」你指的是安全網址Base64編碼的APK的簽名證書的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

+1

剛剛驗證此方法適用於v1和/或v2方案!謝謝! –

+1

我的Mac有一個不支持-P標誌的grep版本。爲了解決這個問題,我不得不改變命令:我換了grep -Po「(?<= SHA-256 digest :)。*」with perl -nle'print $&if m {(?<= SHA- 256摘要:)。*}'(改編自:https://stackoverflow.com/a/16658690/3482621) –