RuStore и Google Play обновляют одно приложение: какой магазин победит и как убрать конфликт

769
RuStore и Google Play обновляют одно приложение: какой магазин победит и как убрать конфликт

Если на Android одновременно установлены RuStore и Google Play, оба магазина могут увидеть одно приложение и предложить для него обновление. Это не две копии программы. Обычно речь идёт об одном установленном пакете, а Android решает, можно ли заменить его новой сборкой.

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

Как Android решает, можно ли поставить обновление

Магазин только загружает новую сборку. Окончательное решение об установке принимает Android. В официальной документации Android указаны основные условия обновления:

  • Совпадает идентификатор приложения. Android использует служебный application ID, например com.example.app.
  • Совпадает цифровая подпись. Допустим также корректно оформленный переход на новый ключ подписи.
  • Внутренний номер версии не ниже установленного. Система ориентируется на versionCode, а не только на видимый номер вроде 5.4.1.
  • При необходимости пользователь подтверждает установку. Это зависит от версии Android и установщика.

Поэтому приложение из RuStore иногда действительно может получить обновление из Google Play. Для этого сборки должны быть совместимы, а Play должен считать программу доступной для обновления на данном устройстве. Как правило, это также означает, что приложение уже есть в библиотеке пользователя либо предустановлено производителем.

Как Android выбирает обновление приложения из RuStore и Google Play и проверяет подпись и versionCode.

Обратная ситуация тоже возможна. Если разработчик использует одну подпись в разных магазинах, Android в принципе допускает переход между ними без удаления. Разработчикам, которые хотят поддерживать совместимые обновления из нескольких магазинов, обычно рекомендуют использовать один ключ подписи.

Почему возникает конфликт подписи

Цифровая подпись подтверждает, кто имеет право выпускать продолжение установленного приложения. При обновлении Android проверяет сертификат новой сборки. Если он не соответствует сертификату текущей версии и нет допустимой ротации ключа, система не разрешает замену.

Такое возможно, если версии для RuStore и Google Play подписаны разными ключами. Для пользователя это обычно выглядит одинаково: магазин скачивает обновление, но установка завершается ошибкой.

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

Если RuStore прямо сообщает о конфликте подписей, повторное нажатие «Обновить» проблему не исправит. В официальной инструкции RuStore для такого случая указана полная переустановка приложения.

Ситуация Что делать
Оба магазина предлагают обновление, ошибок нет Выбрать один магазин и отключить автообновление программы во втором
RuStore сообщает о конфликте подписи Сохранить важные данные, удалить приложение и установить его из выбранного магазина
В одном магазине версия новее Использовать магазин, где разработчик поддерживает нужную вам ветку приложения
Номер версии выглядит одинаково, но обновление предлагается снова Проверить источник обновлений и состояние самого магазина, не удалять приложение сразу

Кто обновит приложение, если автообновление включено в двух магазинах

Заранее определить это по названию магазина нельзя. Если оба сервиса получили подходящую сборку и могут запустить установку, приложение обновит тот, который раньше скачал файл и первым успешно завершил установку, а не тот, который «главнее».

При этом Android защищает приложение от обычного отката. Если один магазин уже установил сборку с более высоким versionCode, второй не сможет просто заменить её версией с более низким внутренним номером.

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

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

Что означает конфликт подписи приложения в RuStore и Google Play и почему Android не устанавливает обновление.

Как выбрать один магазин для обновлений

Если ошибок установки нет, приложение удалять не нужно. Достаточно отключить его автообновление во втором магазине.

Если хотите обновлять приложение через RuStore:

  1. Откройте Google Play.
  2. Нажмите на фото профиля и выберите «Управление приложениями и устройством».
  3. Откройте «Управление» и выберите нужное приложение.
  4. На странице приложения нажмите значок «Ещё».
  5. Отключите параметр «Автообновление».
  6. В RuStore откройте профиль → «Настройки автообновлений» и убедитесь, что программа не находится в «Исключениях».

Названия пунктов Google Play соответствуют текущей официальной справке Google. В RuStore раздел «Исключения» используется для программ, которые не нужно обновлять автоматически.

Если хотите обновлять приложение через Google Play: включите для него «Автообновление» в Google Play, а в RuStore откройте профиль → «Настройки автообновлений» → «Исключения» и добавьте туда эту программу.

Если нужно полностью отключить автообновления Google Play, откройте «Настройки» → «Настройки подключения» → «Автообновление приложений» и выберите «Никогда». Google отдельно предупреждает, что обновления, исправляющие серьёзные уязвимости, в некоторых случаях могут устанавливаться независимо от этой настройки.

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

Почему RuStore предлагает обновить уже обновлённое приложение

Сначала стоит проверить, действительно ли обе сборки одинаковы. У Android есть два номера версии. versionName показывается пользователю, например 7.2.0. versionCode является внутренним числом, по которому система сравнивает сборки. Одинаковый видимый номер не гарантирует одинаковый внутренний.

Кроме того, версии в магазинах публикуются независимо. Google Play может уже раздавать более свежую сборку, пока в RuStore находится другая, или наоборот. Если после запуска само приложение отправляет пользователя в Google Play, это тоже не означает, что Android назначил Google главным магазином. Ссылку на обновление может показывать сама программа по логике разработчика.

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

Когда нужна переустановка и что проверить перед удалением

Удалять приложение стоит, когда новая сборка не проходит проверку подписи либо выбранный магазин прямо сообщает о несовместимости установленной версии. Перед этим нужно проверить данные, которые могут храниться только на телефоне. Резервное копирование и восстановление поддерживаются приложениями по-разному.

  • Банк. Убедитесь, что приложение доступно для повторной установки из выбранного официального источника, а у вас есть данные для входа и доступ к привязанному номеру. После переустановки могут потребоваться повторная авторизация и новая настройка биометрии.
  • Игра. Привяжите прогресс к аккаунту или поддерживаемому облачному сохранению. Локальные сохранения после удаления могут исчезнуть.
  • Приложение с локальными файлами. Экспортируйте документы, проекты, записи и другие данные, если программа предоставляет такую возможность.
  • Платные функции. Проверьте правила разработчика. Покупка или подписка, оформленная через один магазин, может зависеть от его учётной записи и системы оплаты.
  • Коды и ключи. Для аутентификаторов, сертификатов и других приложений с локальными секретами сначала используйте штатный экспорт или резервную копию.

После проверки удалите программу через системные «Настройки» → «Приложения» → нужное приложение → «Удалить» либо через меню значка, если такая команда есть в оболочке телефона. Затем установите приложение заново из выбранного магазина.

Не скачивайте случайный APK ради обхода ошибки. Если у него другая подпись, Android снова откажет в обновлении, а неизвестный источник добавит риск получить поддельную сборку.

После переустановки оставьте для программы только один источник автообновлений. Для версии из RuStore отключите автообновление в Google Play. Для версии из Google Play добавьте приложение в «Исключения» RuStore. Это самый понятный способ не допустить повторного конфликта.

Вопросы и ответы

Может ли Google Play обновить приложение, установленное из RuStore?

Да, если сборки совместимы по идентификатору и подписи, а Google Play считает приложение доступным для обновления на этом устройстве.

Почему RuStore не обновляет приложение из Google Play?

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

Как отключить обновление одного приложения в Google Play?

Откройте Google Play → фото профиля → «Управление приложениями и устройством» → «Управление» → приложение → «Ещё» и отключите «Автообновление».

Как запретить RuStore обновлять отдельное приложение?

Откройте профиль RuStore → «Настройки автообновлений» → «Исключения» и добавьте нужное приложение.

Нужно ли удалять приложение, если оба магазина предлагают обновление?

Нет. Если ошибок нет, обычно достаточно выбрать один магазин и отключить автообновление во втором. Удаление требуется при несовместимости, например при конфликте подписи.

Почему RuStore снова показывает кнопку «Обновить» после обновления в Google Play?

Магазины могут раздавать разные сборки, а одинаковый видимый номер не гарантирует одинаковый внутренний versionCode. Возможен и сбой данных RuStore.

Какой магазин лучше выбрать для обновлений?

Лучше использовать тот магазин, из которого установлена текущая версия и где разработчик поддерживает нужную вам сборку. Это снижает риск конфликтов подписи и версий.

RuStore Google Play обновления
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
тризтех
24 сентября · 10:30
Звезда родилась Первое онлайн-мероприятие ТризТеха
Регистрация
Реклама. АО «Позитив Текнолоджиз». ИНН 7718668887. 18+

Техно Леди

Технологии и наука для гуманитариев