Перейти к основному содержимому

Подписи APK-файлов в RuStore: инструкции и рекомендации

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

Что такое подписи приложений Android?

RuStore поддерживает загрузку приложений в форматах APK и ААВ. Каждый APK-файл должен быть подписан цифровым сертификатом, который Android использует для идентификации автора приложения. Подпись необходимо хранить так же надёжно, как и личный пароль.

При загрузке файлов в формате ААВ, подпись приложения загружается отдельно в процессе загрузки приложения. Подробнее.

Как Android проверяет версии?

Android сравнивает цифровые отпечатки сертификатов каждого подписанного APK-файла.

Цифровой отпечаток — это последовательность байтов, которая создаётся путём применения криптографической хеш-функции к открытому ключу.

Цифровой отпечаток имеет примерно следующий вид.

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

Для чего нужна проверка подписей?

Этот процесс необходим, если приложение было размещено в Google Play. При загрузке такого приложения в RuStore нужно использовать ту же подпись, что и в Google Play. Тогда пользователи смогут без ошибок обновить установленные на устройстве приложения, для которых в RuStore доступна более новая версия.

Подписи в разных сторах

Обязательно ли использовать подпись с Google Play, если есть собственная?

Нет. Если ваше приложение есть в Google Play, но у вас есть собственная подпись, вам не нужно проходить проверку подписей. Вы можете сразу загрузить файлы с собственной подписью в RuStore. Процесс необходим только в том случае, если вы используете подпись Google Play. Также вы можете загрузить пакеты APK c двумя подписями.

Можно ли изменить подпись в Google Play?

Если вы утратили ключ подписи, который был создан много лет назад, или опасаетесь, что произошла утечка, измените его для новых установок. Обновлённую подпись затем можно загрузить в RuStore и другие магазины приложений. Использовать одну подпись в разных сторах удобно: у пользователей не возникнет проблем с обновлением приложения, вне зависимости от того, из какого магазина оно установлено.

Чтобы обновить подпись в Google Play отключите систему подписи Google App Signing и загрузите новый ключ, который будет работать для новых пользователей приложения. В то же время старые пользователи продолжат получать обновления из Google Play, подписанные их внутренним ключом, до полной переустановки приложения.

Как использовать подпись из Google Play в RuStore?

Вы можете использовать подпись Google App Signing для сборок RuStore.

Для этого:

  • настройте в консоли внутреннее тестирование;
  • создайте новый выпуск;
  • подпишите релизный APK сборки для RuStore локально своим ключом;
  • загрузите файл в консоль и нажмите «Сохранить как проект»;
  • перейдите в App Bundle Explorer и откройте последнюю загруженную версия приложения;
  • нажмите на кнопку загрузки APK распространения;
  • удалите выпуск из внутреннего тестирования;
  • удалите APK из App Bundle Explorer.

Подписанный APK сборки для магазина RuStore ключом Google App Signing готов.

Почему пользователи не могут обновить приложения?

Одна из распространённых ошибок паблишеров — это использование разных подписей для приложения, публикуемого в RuStore и других сторах.

Например, первоначально загружаемая версия приложения подписана одним сертификатом. А следующая версия подписана — другим. Из-за этих различий Android не позволяет установить обновления для этого приложения.

Почему так происходит:

  1. Разработчик мог утратить сертификат и сгенерировал новый для публикации приложения в сторе.

  2. Разработчики могут публиковать одно и то же приложение в разных магазинах. Например, изначально разработчик публиковал приложения в Google Play и использовал один сертификат. Но после перехода в RuStore начал использовать другой сертификат.

Таким образом, пользователи делятся на два типа:

  • установившие приложение из Google Play;
  • загрузившие из RuStore.

Для пользователей это удобно, если локально в приложении хранятся важные данные, которые нельзя потерять.

к сведению

В новой версии можно добавить краткую инструкцию по ручной миграции. Ннапример, описание способа сделать бэкап файла базы данных, настроек, и их восстановления.

Если пользователь установил RuStore и хочет обновить приложение, которое ранее было загружено из Google Play, — он не сможет этого сделать из-за разных сертификатов.

Как можно решить данную проблему?

  1. Рекомендуемый способ — использовать один сертификат на все версии приложения, чтобы избежать проблем с обновлениями версий из разных источников.

  2. Радикальный способ — просить пользователей удалить «старые» версии приложения, которые не удаётся обновить, и просить скачать новые. Но такой способ связан с риском потери части аудитории.

  3. Также с помощью технической поддержки RuStore можно обновить подпись приложения. Подробно описано в разделе ниже.

RuStore рекомендует использовать сертификат, сохранённый локально для большего контроля над выпусками приложений.

Если вы используете Google Play App Signing, позволяющая Google Play самостоятельно генерировать и хранить подпись, то можете столкнуться с отсутствием возможности использования сертификата вне Google Play.

Как решить проблему через поддержку RuStore?

Чтобы обновить подпись, напишите соответствующее письмо в техподдержку на support@rustore.ru.

Специалисты заведут обращение и проверят принадлежность приложения к обратившемуся разработчику.

Если идентификация пройдена успешно, то специалист запускает процесс деактивации старого сертификата.

После обновления сертификата все версии приложений уйдут в архив. Разработчику нужно будет заново загрузить и опубликовать все версии APK/AAB-файлов с новым сертификатом подписи.

Что делать, если нужно использовать разные подписи?

Если у вас выпущена отдельная подпись для RuStore, но приложение опубликовано в Google Play — загрузите APK-файлы с обеими подписями и выберите по умолчанию подпись, выпущенную вне сервисов Google. Это сократит число ошибок при обновлении у пользователей.