In-App Update API показывает UPDATE_NOT_AVAILABLE во время тестирования на отладочном устройстве

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

Make sure that the app that you are testing is signed with the same signing key as the one available from Google Play.

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

If the app you are testing doesn’t appear with an available update, check that you’ve properly set up your testing tracks.

  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")
    }
}

Я столкнулся с той же проблемой. Вы смогли разобраться?

Manas Dadheech 17.05.2019 11:33

Нет, не сейчас, если вам случится разобраться в этом в будущем, поделитесь им.

gautam 17.05.2019 12:04

Какое-нибудь решение найдено?

Moorthy 22.05.2019 11:34

Пока нет.)

gautam 23.05.2019 22:02

Работает на меня. Создайте подписанный apk с более низкой версией. Это будет работать!!

Dmarp 11.07.2019 12:48

Используете ли вы Android App Bundle в магазине Play?

gautam 12.07.2019 23:17

@gautamkumar да, я использую App Bundle. Это не будет работать с App Bundle?

Ishaan 25.07.2019 11:57

@gautamkumar вы нашли приемлемое решение?

Arbaz.in 20.02.2020 14:43

@Arbaz.in developer.android.com/guide/app-bundle/…

gautam 20.02.2020 16:33
stackoverflow.com/questions/56863431/…
Chandrakanth 28.10.2020 16:00
14
10
23 527
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

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

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

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

Спасибо за помощь, все еще не могу показать пользовательский интерфейс из него, он написан в документе «Эта реализация полностью автономна в библиотеке и не взаимодействует с Play Store. По этой причине пользовательский интерфейс не отображается и не обновляется. действительно исполняется»

gautam 14.05.2019 18:58

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

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

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

Working in-app updates UI

Я попробовал ваш проект GitHub, но он выдает ошибку AppUpdateService : Failed to bind to the service.

Magesh Pandian 27.05.2019 13:55

Ой. Это потому что ты не подписал приложение моими ключами. Репозиторий предназначен только для исходного кода рабочего демо-приложения, ключи подписи не публикуются. Тем не менее, я уже загрузил в репозиторий подписанный демо-apk, готовый к установке. Пожалуйста, проверьте это.

kevintresuelo 28.05.2019 05:17

Спасибо за ответ. если я пытаюсь с моим проектом, могу ли я проверить отладочную сборку или только подписанный apk, он работает?

Magesh Pandian 28.05.2019 06:52

Если вы пробуете это со своим проектом, вам, вероятно, следует попробовать реализовать его в своем собственном приложении, подписанном и опубликованном в Google Play. Публикация через каналы альфа- или бета-тестирования может помочь вам в этом, поэтому она не повлияет на ваше рабочее приложение. Для демонстрации будет работать только подписанный apk, так как для библиотеки Play Core требуется подписанный apk. К сожалению, из-за проблем с безопасностью я не могу поделиться ключами, которые я использовал для подписи этого приложения.

kevintresuelo 28.05.2019 07:00

Хорошо, но как во время разработки мы проверяем отладочную сборку?

Magesh Pandian 28.05.2019 08:26

Вы должны подпишите свой отладочный apk с той же подписью, которую вы использовали в своей версии Play Store.

kevintresuelo 28.05.2019 11:26

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

ViramP 30.05.2019 13:59

@kevintresuelo Попробовал ваш apk по ссылке github, но по-прежнему не показывает никаких обновлений.

gautam 15.06.2019 13:13

А как насчет приложения, которое выбрало Google Signing-In? Мы используем ключ загрузки для подписи и загрузки APK, но Google Play использует свой собственный ключ подписи, уникальный для нашего приложения, для распространения. У нас нет доступа к этому ключу подписи.

nitinkumarp 24.06.2019 08:57

Я столкнулся с той же проблемой, и после двойной проверки всего остального это может быть связано с тем, что я выбрал вход в Google. @nitinkumarp вам удалось обойти это?

Filippo Vigani 15.01.2020 12:35

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

"In-app updates are available only to user accounts that own the app. So, make sure the account you’re using has downloaded your app from Google Play at least once before using the account to test in-app updates." developer.android.com/guide/app-bundle/in-app-updates

Вы используете Android App Bundle или Apk? . После установки apk с более низким значением я получаю сообщение «Это приложение не было установлено Google без обновления».

gautam 12.07.2019 23:15

Apk. Это работает для меня: 1. Установите мое приложение из Google Play. 2. Удалите это приложение с моего смартфона. 3. Установите подписанный apk с более низким кодом версии.

Oleg 14.07.2019 14:13
«Обновления в приложении доступны только для учетных записей пользователей, которым принадлежит приложение» - Что именно это означает? У меня есть идентификатор электронной почты x, которому принадлежит мое приложение в магазине игр, и у меня есть идентификатор электронной почты y на каком-то другом устройстве. Я устанавливаю более раннюю версию подписанного APK (не из Play Store) на устройство с идентификатором электронной почты. Я не получаю диалоговое окно обновления. Нужно ли загружать более раннюю версию APK в магазин игр? Заранее спасибо@Олег
Maulik Dodia 24.09.2019 12:25

Сначала попробуйте установить приложение из Google Play на свое устройство электронной почты. Затем удалите свое приложение и установите apk напрямую (не из Google Play).

Oleg 25.09.2019 13:18

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

Если вы публикуете на внутреннюю дорожку, это происходит практически мгновенно.

Vadim Kotov 21.11.2019 17:11

я публикую приложения во внутреннем тесте, это занимает несколько часов :/ например, 1+ час

Bawa 28.11.2019 12:01

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

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

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

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

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

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

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

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

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

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

Update is Not Available ERROR

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

Примечание — App Bundle не является обязательным для IAU.

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

Maulik Dodia 24.09.2019 12:21

@MaulikDodia APK более высокой версии должен быть опубликован в Google Play, затем установите APK более низкой версии с функцией IAU на свое устройство. Таким образом, функция IAUs будет активирована только в том случае, если номер версии в Google Play выше, чем фактическая версия приложения на устройстве.

Arpit J. 24.09.2019 14:34

Я сделал то же самое. Но не повезло. Я всегда получаю UPDATE_NOT_AVAILABLE на addOnSuccessListener. Можете ли вы помочь мне? Не могли бы вы проверить мой комментарий к ответу @Oleg?@Arpit

Maulik Dodia 24.09.2019 14:54

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

Anuj Vaish 13.08.2020 09:01

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

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

иногда это настоящая причина, это случилось со мной

dicarlomagnus 08.07.2021 19:53
Ответ принят как подходящий

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

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

  1. On your test device, make sure you've already installed a version of your app that meets the following requirements:
  • Приложение было установлено с использованием внутреннего URL-адреса общего доступа к приложению.
  • Поддерживает обновления в приложении
  • Использует код версии ниже обновленной версии вашего приложения.
  1. Follow the Play Console instructions on how to share your app internally. Make sure you upload a version of your app that uses a version code that's higher than the one you have already installed on the test device.
  2. On the test device, only click the internal app-sharing link for the updated version of your app. Do not install the app from the Google Play Store page you see after clicking the link.
  3. Open the app from the device's app drawer or home screen. The update should now be available to your app, and you can test your implementation of in-app updates.

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

Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавить контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно существует, а затем процитируйте наиболее важную часть страницы, на которую вы ссылаетесь, в если целевая страница недоступна. Ответы, которые представляют собой чуть больше ссылки, могут быть удалены.

ChrisMM 23.12.2019 15:19

@ChrisMM Спасибо за рекомендацию, я соответственно обновил ответ.

Johan Ferreira 26.12.2019 11:09

Спасибо, это решение сработало для меня. Что я хочу добавить, так это то, что после того, как вы добавите новое обновление в Google Play, обязательно наберитесь терпения и подождите некоторое время (IDK, сколько именно, для меня это заняло 5 минут), пока API Google Play не начнет отправлять информацию о новом обновлении в старое приложение. версии.

Tomas Maksimavicius 21.01.2021 09:00

документация изменилась, поэтому правильная ссылка developer.android.com/guide/playcore/in-app-updates/тест

om252345 27.09.2021 08:35

Спасибо @om252345, я обновил свою ссылку в ответе.

Johan Ferreira 27.09.2021 14:00

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

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

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

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

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

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

Описываю пошагово:

  1. Создайте виртуальное устройство с Google Play выше или равен уровню API 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 в внутреннее совместное использование приложений с кодом версии и названием версии 100.

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

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

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


Стоит отметить, что Логкэт совместим с внутренним общим доступом к приложениям.

ГЛ

Источник

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

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

  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 apk для внутреннего обмена приложениями на Play-Console и, следовательно, сгенерировать 2 ссылки. Оба apk будут подписаны с использованием одного и того же signing-key (не обязательно совпадать с тем, который вы используете для подписи для производства, подойдет любой фиктивный ключ подписи).

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

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

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

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

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

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

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

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

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

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

Lastly, don't forget to upvote if it helps you in any way. Keep Coding!

Один момент, который работает, так и не был упомянут в Documented. пункт 6, спасибо за помощь

Khalid Saeed 10.02.2021 13:02

Я выполнил шаги и, наконец, во время отладки, используя ссылку из внутреннего общего доступа к приложениям, он был перенаправлен в магазин игр с открытым моим приложением, но в нем отсутствует кнопка «Установить»! Мое приложение поддерживается только в США. Пробую из другой страны. Может ли это быть причиной? Пожалуйста, уточните, спасибо.

Divya 01.07.2021 14:54

@ Абхишек Кумар, ты спас мой день. Спасибо.

Strider 08.12.2021 12:21

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