Api-обновление Android-приложения, показывающее UPDATE_NOT_AVAILABLE во время тестирования на устройстве отладки

Я пытаюсь интегрировать новый API-интерфейс обновления IN-App, но не могу проверить его реализацию. Похоже, мой код в порядке, поэтому я читаю Устранение неполадок и не могу понять 2 пункта в этом документе

Убедитесь, что приложение, которое вы тестируете, подписано тем же ключом подписи, который доступен в Google Play.

  1. Как я могу подписаться тем же ключом подписи в режиме отладки при установке Apk на подключенное устройство?.

Если тестируемое приложение не отображается с доступным обновлением, убедитесь, что вы правильно настроили свои треки тестирования.

  1. Обязательно ли выпускать приложение во внутренних треках тестирования для тестирования реализации?

В любом случае, я просто хочу протестировать на своем устройстве, и я уменьшил код версии с версии магазина игр, но он всегда показывает UPDATE_NOT_AVAILABLE . Пожалуйста, помогите, если кто-нибудь знает.

Вот код:-

val appUpdateInfo: Task<AppUpdateInfo> = appUpdateManager.appUpdateInfo
appUpdateInfo.addOnSuccessListener {
    if (it.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE && it.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
        appUpdateManager.startUpdateFlowForResult(it, AppUpdateType.FLEXIBLE, this, 2);
    }else{
        toast("Not Available")
    }
}

12 ответов

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

Ссылка описывает правильную процедуру тестирования следующим образом:

  1. Убедитесь, что на вашем тестовом устройстве уже установлена ​​версия приложения, отвечающая следующим требованиям:

    • Приложение было установлено с использованием внутреннего URL-адреса для общего доступа к приложению.
    • Поддерживает обновления в приложении
    • Использует код версии ниже, чем обновленная версия вашего приложения.
  2. Следуйте инструкциям Play Console о том, как поделиться своим приложением внутри компании. Убедитесь, что вы загружаете версию своего приложения, в которой используется код версии выше, чем тот, который вы уже установили на тестовом устройстве.

  3. На тестовом устройстве нажимайте только внутреннюю ссылку общего доступа к обновленной версии вашего приложения. Не устанавливайте приложение со страницы Google Play Store, которую вы видите после нажатия на ссылку.
  4. Откройте приложение из панели приложений устройства или с главного экрана. Теперь обновление должно быть доступно для вашего приложения, и вы можете протестировать свою реализацию обновлений в приложении.

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

На сегодняшний день тестирование обновлений в приложении невозможно для отладочной сборки. Вам также не нужно помещать apk в PlayStore для тестирования. Лучший способ проверить - использовать.

Если вы выполните следующие шаги один за другим, вы сможете успешно протестировать.

  1. Чтобы протестировать приложение, тестировщик должен сначала включить общий доступ к внутреннему приложению в PlayStore, перейдите по этой ссылке, чтобы узнать, как включить общий доступ к внутреннему приложению для Android?
  2. Если вы достаточно смелы, чтобы понимать официальные документы, просто перейдите по этой ссылке, чтобы настроить in-app-updateтестирование на вашем устройстве, https://developer.android.com/guide/playcore/in-app-updates#internal-app-sharing

Здесь я напишу то же самое легкими словами.

Как только вы закончите настройку internal-app-sharing в Play-Store, убедитесь, что вам нужно загрузить 2 файла apks для внутреннего доступа к приложениям на Play-Consoleи, следовательно, сгенерируйте 2 ссылки. Оба apks будут подписаны с использованием одного и того же signing-key (не обязательно должен быть таким же, как тот, который вы используете для подписи в производственной среде, подойдет любой фиктивный ключ для подписи).

  1. Сначала вы загружаете apk с реализацией обновления в приложении с более низким VersionCode (скажем, 100) во внутренний общий доступ к приложению на игровой консоли.

Чтобы узнать, как загрузить apk для внутреннего совместного использования приложений на Play-Console, следуйте этому списку, https://support.google.com/googleplay/android-developer/answer/9844679?visit_id=637437125318137239-1277036129&amp;amp;rd=1

ПРИМЕЧАНИЕ: убедитесь, что вы удалили все предустановленные приложения с тем же именем пакета на вашем устройстве.

  1. Теперь вы копируете ссылку на приложение, которое вы загрузили, во внутренний доступ к приложению на игровой консоли и используете эту ссылку, чтобы установить приложение на свое устройство.

ПРИМЕЧАНИЕ. Перед установкой убедитесь, что адрес электронной почты, который вы используете в play-store, был добавлен в список рассылки при совместном использовании внутреннего приложения на игровой консоли.

  1. Теперь, когда вы установили приложение по ссылке. Теперь вам нужно снова создать новый подписанный apk с более высоким VersionCode (скажем, 101). И загрузите этот apk для внутреннего доступа к приложениям.

  2. Теперь скопируйте ссылку с более высоким VersionCode из внутреннего общего доступа к приложению. Нажмите на эту ссылку на своем устройстве, и вы перейдете в игровой магазин, но на этот раз update кнопка будет включена, а не install кнопку, поскольку приложение уже установлено на вашем устройстве с более низким VersionCode.

  3. Вам не нужно нажимать кнопку обновления в PlayStore. Вам просто нужно щелкнуть ссылку и, следовательно, открыть экран в PlayStore. Теперь закройте приложение PlayStore.

  4. Теперь вы можете запустить уже установленное приложение со своего устройства.

Если ваша реализация in-app-update в порядке, при запуске приложения появится диалоговое окно PlayStore для обновления.

Наконец, не забудьте проголосовать, если это вам хоть как-то поможет. Продолжайте кодировать!

У меня была аналогичная проблема с UPDATE_NOT_AVAILABLE. После нескольких часов исследований я решил следующее:

  1. используйте магазин Google Play, чтобы установить версию тестового приложения (я использовал внутренний тестовый выпуск)

  2. развернуть другую версию с более высоким КОДОМ ВЕРСИИ в Play Console (тот же внутренний тестовый трек)

  3. закройте приложение для тестирования и магазин Google Play (не только вернуться домой, используйте недавний ключ и смахните их)

  4. откройте магазин Google Play и убедитесь, что для тестируемого приложения доступно обновление (вы можете проверить его в разделе "Мои приложения и игра" > Установлено)

  5. теперь откройте приложение для тестирования и проверьте наличие UPDATE_AVAILABLE

У меня это работает почти сразу после развертывания

Основные требования для ручного тестирования

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

  • Исходная версия с более высоким номером должна быть опубликована в Google Play, это версия, которая будет определена Google Play как доступное обновление. На вашем устройстве должна быть установлена ​​целевая версия с меньшим номером версии и интегрированной функцией IAU(In-App Updates), это версия, которая будет обновляться. Дело в том, что когда приложение запрашивает Google Play для проверки наличия доступных обновлений, оно сравнивает номер версии установленного приложения с номером версии последней доступной сборки Google Play. Таким образом, функция IAUs будет срабатывать только в том случае, если номер версии в Google Play выше, чем фактическая версия приложения на устройстве.
  • И исходная, и целевая версии должны иметь одно и то же имя пакета и должны быть подписаны одним и тем же сертификатом выпуска.
  • Android 5.0 (уровень API 21) или выше.
  • Play Core library 1.5.0 или выше.

Обновление недоступно ОШИБКА

Прежде всего, внимательно проверьте требования, указанные выше. Если вы успешно выполнили перечисленные выше шаги с соблюдением всех требований, но по-прежнему получаете сообщение об ошибке, обратите внимание на следующий трюк. Наиболее вероятная причина в том, что приложение Google Play еще не знает об обновлении из-за внутреннего механизма кеширования. Чтобы убедиться, что у вас свежий кеш при тестировании вручную, вы можете обновить кешированную версию, перейдя на экран "Мои приложения и игры" в приложении Google Play. Другой вариант - просто очистить кеш приложения Google Play в настройках. Обратите внимание, что это просто проблема для тестирования и не влияет на конечных пользователей, так как кеш в любом случае обновляется ежедневно.

Примечание. Пакет приложений не является обязательным для IAU.

Я установил свое приложение из Google Play. Затем я удалил его и установил подписанный apk с более низким кодом версии.

"Обновления в приложении доступны только для учетных записей пользователей, которым принадлежит приложение. Поэтому убедитесь, что используемая учетная запись загрузила ваше приложение из Google Play хотя бы один раз, прежде чем использовать учетную запись для тестирования обновлений в приложении". https://developer.android.com/guide/app-bundle/in-app-updates

Поскольку Арпит Дж. Предложил основные основные требования для тестирования приложения, если вы все еще не можете успешно протестировать приложение, я хотел бы добавить еще один последний шаг, который поможет вам быстро протестировать приложение.

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

Также есть FakeAppUpdateManager, который был создан для таких целей. Вы можете использовать это.

Во-первых, вам нужно будет опубликовать свое приложение в Google Play. Удостоверься что:

  1. Код версии, который вы опубликовали, выше, чем тот, с которым вы собираетесь тестировать обновления, потому что в противном случае он не распознает его как обновление. Затем пусть Google Play достаточно долго обновляет свой кэш (в моем случае я ждал 12 часов, прежде чем смог заставить его работать впервые).
  2. Вы подписали оба apks с одной и той же подписью.

Если вы хотите иметь работающее демонстрационное приложение, я загрузил git-репозиторий с более низким кодом версии, чем тот, который я опубликовал в Google Play.

Наконец, решила эту проблему, удалив приложение из Play Store -> Мои приложения и игры -> Библиотека.

  • Вы должны установить выпускное приложение с тем же хранилищем ключей, которое вы использовали для предыдущей версии.

Это происходит, если вы ранее установили то же приложение с кодом более поздней версии на свое устройство или любое устройство с тем же адресом Gmail в Play Store. Надеюсь это поможет.

Когда внутренний общий доступ к приложениям не работает

Внутренний общий доступ к приложениям не работает на реальном устройстве. Я тестировал несколько часов и всегда получал последнюю версию Internal Test, а не Interal App Sharing, как я ожидал.

Решение - использовать эмулятор с Play Store.

Опишу пошагово:

  1. Создайте виртуальное устройство с Google Play выше или равным API Level 21 5.0.
  2. Откройте эмулятор и войдите в систему с учетной записью Google, которая находится в списке внутренних тестеров.
  3. Соберите 2 APK с разными версиями. Каждый из них с одинаковым versionCode и versionName временно для проверки при выполнении установки. Например:

APK 1: versionCode and versionName: 100

APK 2: versionCode and versionName: 101

  1. Загрузите APK 1 во internalappsharing, указав versionCode и versionName 100

  2. Скопируйте и вставьте общую ссылку APK 1 в веб-приложение Keep Notes.

  3. Установите APK 1 с кодом версии 100 по ссылке из приложения-эмулятора Keep Notes.
  4. Самое главное: убедитесь, что у установленного приложения versionName 100.
  5. Если мы откроем APK 1 на этом этапе, обновления не будут доступны, пока мы не загрузим APK 2 с более крупной версией.
  6. Загрузите APK 2 с кодом 101 во internalappsharing
  7. Скопируйте и вставьте ссылку APK 2 в веб-приложение Keep Notes.
  8. НЕ УСТАНАВЛИВАЙТЕ APK 2 по ссылке. Просто введите ссылку APK 2, чтобы убедиться, что Play Store описывает наличие обновления.
  9. Откройте приложение, установленное на эмуляторе с APK 1, и установите обновление в приложении.

Наконец, каждый раз, когда они вводят ссылку с кодом версии больше, чем последняя, ​​установленная из эмулятора, они будут видеть наличие нового обновления, которое должно быть установлено в приложении, а не из Play Store.


Стоит отметить, что Logcat совместим с Internal App Sharing.

GL

Источник

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

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

У вас есть ожидание после публикации, это занимает от 2 до 6 часов.

Другие вопросы по тегам