Проверка подписи приложений
Одна из частых ошибок разработчиков — использование разных подписей для приложения, которое публикуется в RuStore. Изначально загруженная версия приложения может быть подписана одним сертификатом, а следующая — другим.
Подписи проверяются в Android, а также при верификации в RuStore SDK.
Как Android проверяет версии приложения?
Android сравнивает цифровые отпечатки сертификатов каждого подписанного APK-файла.
Цифровой отпечаток — это последовательность байтов, которая создаётся путём применения криптографической хэш-функции к открытому ключу.
Пример цифрового отпечатка: 43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8
.
Как приложение верифицируется в RuStore SDK?
Подпись первого загруженного APK используется для верификации приложения в некоторых RuStore SDK.
На сервер RuStore передается хэш подписи APK, которая установлена у пользователя.
Он сравнивается со всеми подписями, которые есть базе данных для packageName
этого APK.
Если подписи не совпадают, SDK не будут работать.
На сервере поддерживаются подписи с HMS, GMS и собственная подпись разработчика.
Для разных SDK верификация запускается в разные моменты:
- SDK отзывов и оценок — при запуске методов
requestReviewFlow
иlaunchReviewFlow
. - SDK платежей in-app и подписок — при запуске методов
checkPurchaseAvailability
,getProducts
,getPurchases
. - SDK обновления приложения — система запускает проверку при установке обновления. Если подписи не совпадают, будет предложено удалить приложение и установить заново, либо обновление завершится с ошибкой.
- SDK push-уведомлений — при подключении SDK. Отпечаток подписи должен совпадать с отпечатком, который указан в проекте push-уведомлений в RuStore Консоль — поле «Отпечаток подписи SHA-256».
Чтобы верификация приложения прошла без ошибок, перед подключением RuStore SDK проверьте подписи приложения.
Как проверить подпись приложения?
Выполните следующие шаги, чтобы сравнить подпись в приложении с подписью на сервере RuStore.
- Проверьте отпечаток подписи в приложении.
- Проверьте отпечаток подписи в RuStore Консоль.
- Сравните отпечатки.
Шаг 1. Проверьте отпечаток подписи в приложении
Информация о подписи указана в файле build.gradle
.
Если не указать подпись явно, используется подпись по умолчанию ~/.android/debug.keystore
.
Чтобы узнать, какой подписью подписан файл APK, воспользуйтесь дополнительными инструментами, которые покажут отпечаток подписи. Ниже рассмотрены способы, с помощью которых можно узнать подпись.
- Android Studio
- apksigner
- keytool
gradle signingreport
Результат выполнения команды:
Отпечаток подписи указан в строке SHA-256
.
apksigner verify --print-certs -v example.apk
example.apk
— ваше приложение.
Результат выполнения команды Mac OS:
Значение Signer #1 certificate SHA-256 digest
— это нужный отпечаток подписи.
keytool -printcert -jarfile example.apk
example.apk
— ваше приложение.
Результат выполнения команды Mac OS:
Отпечаток подписи указан в строке SHA256
.
Шаг 2. Проверьте отпечаток подписи в RuStore Консоль
Отпечаток подписи, который используется для верификации приложения, указан в RuStore Консоль в проекте push-уведомлений (вкладка Инструменты — выберите приложение — Push-уведомления — поле Отпечаток подписи SHA-256).
Шаг 3. Сравните отпечатки
-
Если отпечатки совпадают, верификация пройдёт успешно, вы можете подключать любые SDK в ваше приложение.
-
Если отпечатки не совпадают, SDK работать не будут и вы увидите ошибку «Application is not verified yet», либо «Application signature not correct».
Рекомендуем использовать первоначальную подпись, отпечаток которой отображается в RuStore Консоль. Если это невозможно, обратитесь в support@rustore.ru, чтобы заменить подпись для верификации приложения в RuStore SDK.