Как получить контрольную сумму подписи моего APK?

Я хотел бы использовать контрольную сумму подписи вместо контрольной суммы пакета при подготовке устройства с помощью приложения владельца устройства. Приложение будет загружено с http-сервера.

Этот пост полезен при использовании EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM: Ошибка контрольной суммы при подготовке Android Lollipop

Но я хотел бы использовать EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM. См.: https://developer.android.com/reference/android/app/admin/DevicePolicyManager.htm

Приложение для подготовки и приложение для владельца устройства будут работать на Android O.

Как получить контрольную сумму подписи моего приложения, которую я могу использовать в своей паре ключ/значение для NFC?


person Steve Miskovetz    schedule 30.06.2017    source источник


Ответы (1)


Попробуй это

keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA256:) .*" | xxd -r -p | openssl base64 | tr -d '=' | tr -- '+/=' '-_'

Подробно:

  • keytool -list -printcert -jarfile [path_to_your_apk] извлекает информацию о сертификате APK,
  • grep -Po "(?<=SHA256:) .*" | xxd -r -p берет хэш SHA256 и преобразует его в двоичный файл,
  • openssl base64 кодирует его с помощью base64,
  • tr -d '=' | tr -- '+/=' '-_' делает его безопасным для URL-адресов (+ кодируется как -, / кодируется как _, а символ заполнения = удаляется).
person Fred    schedule 30.06.2017
comment
Ваш первый шаг возвращается, а не подписанный файл jar. - person Steve Miskovetz; 01.07.2017
comment
Я подписываю свой APK со схемой подписи V2, так как эти приложения будут работать только на Android O или более поздней версии. Если я подпишу их с помощью схемы подписи V1, этот метод отлично работает! Я думаю, что это хороший и правильный ответ для схемы V1. Я открою новый вопрос, более конкретный для схемы V2. - person Steve Miskovetz; 01.07.2017
comment
Для справки, вот новый вопрос о подписи V2, на который уже дан ответ. - person Fred; 02.07.2017
comment
Когда я запускаю эту команду, она запускается и не выдает никаких ошибок, но в результате ничего не отображается C:\Program Files\Java\jdk-11.0.1\bin›keytool -list -printcert -jarfile TestDPC_4005.apk | C:\Program Files\Git\usr\bin\grep.exe -Po (?‹=SHA256:) .* | C:\Program Files\Git\usr\bin\xxd.exe -r -p | C:\Program Files\Git\usr\bin\openssl.exe base64 | C:\Program Files\Git\usr\bin\tr.exe -d '=' | C:\Program Files\Git\usr\bin\tr.exe -- '+/=' '-_' - person Mudassir Khan; 22.02.2019
comment
Требуется ли URL-адрес, https или http в порядке. - person Krunal Shah; 04.09.2020