跳到主要内容

Проверка подписи приложений

Одна из частых ошибок разработчиков — использование разных подписей для приложения, которое публикуется в 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.

  1. Проверьте отпечаток подписи в приложении.
  2. Проверьте отпечаток подписи в RuStore Консоль.
  3. Сравните отпечатки.

Шаг 1. Проверьте отпечаток подписи в приложении

Информация о подписи указана в файле build.gradle. Если не указать подпись явно, используется подпись по умолчанию ~/.android/debug.keystore.

Чтобы узнать, какой подписью подписан файл APK, воспользуйтесь дополнительными инструментами, которые покажут отпечаток подписи. Ниже рассмотрены способы, с помощью которых можно узнать подпись.

gradle signingreport

Результат выполнения команды:

img

Отпечаток подписи указан в строке SHA-256.

Шаг 2. Проверьте отпечаток подписи в RuStore Консоль

Отпечаток подписи, который используется для верификации приложения, указан в RuStore Консоль в проекте push-уведомлений (вкладка Инструменты — выберите приложение — Push-уведомления — поле Отпечаток подписи SHA-256).

img

Шаг 3. Сравните отпечатки

  • Если отпечатки совпадают, верификация пройдёт успешно, вы можете подключать любые SDK в ваше приложение.

  • Если отпечатки не совпадают, SDK работать не будут и вы увидите ошибку «Application is not verified yet», либо «Application signature not correct».

    Рекомендуем использовать первоначальную подпись, отпечаток которой отображается в RuStore Консоль. Если это невозможно, обратитесь в support@rustore.ru, чтобы заменить подпись для верификации приложения в RuStore SDK.