Почему происходит сбой обновления в приложении с кодом результата 0?

При тестировании обновлений в приложении обновление загружается, но не выполняется. установить с кодом результата 0 (RESULT_CANCELED) в onActivityResult.

Кроме того, версия обновления - это не самая последняя версия, обновленная для дорожки (с использованием внутренней дорожки). У меня есть эти версии, выпущенные на внутреннем треке: 1 2 3

При создании сборки с кодом версии 1 выполняется попытка обновления до 2, но безуспешно. При создании сборки с кодом версии 2 говорится, что приложение обновлено.

Я попытался загрузить новые сборки с той же ошибкой. Я ждал 2 дня и снова протестировал с теми же результатами.

Приложение публикуется с пакетами приложений.

Также сообщается, что приложение обновлено, когда я установил версию 3 магазина воспроизведения (внутренняя дорожка), а затем опубликовал версию 4. Магазин воспроизведения показывает кнопку обновления, но обновления в приложении не сообщают о доступных обновлениях.


person Patrick    schedule 14.10.2019    source источник
comment
Извините, у меня когда-либо было только onActivityResult RESULT_OK или RESULT_CANCELED. Мое приложение не использует наборы приложений. Во время тестирования я изменил свой versionCode в Android Studio на более раннюю версию, чем та, которая была доступна в магазине воспроизведения, а затем я запустил приложение и увидел, что доступно обновление. Я также смог установить с моего личного альфа-трека, используя обновления в приложении.   -  person Heath Borders    schedule 14.10.2019
comment
resultCode of 1 - это первый результат действия, определяемый пользователем, поэтому не уверен, откуда он взялся. Я ловлю RESULT_OK, RESULT_CANCELED и ELSE. Если все в порядке, я выдаю .completeUpdate и во всех случаях заканчиваю .unregisterListener. В методе onResume я выдаю .checkForStalledUpdate, где я добавляю appUpdateInfoTask.addOnFailureListener для прослушивания исключения onFailure для задержанных обновлений. Я добавляю appUpdateInfoTask.addOnSuccessListener, где вы проверяете, доступно ли обновление и разрешено ли обновление. Проверьте все возможные результаты.   -  person Michael Dougan    schedule 14.10.2019
comment
@MichaelDougan это resultCode 0. Я обновил вопросы с правильным кодом.   -  person Patrick    schedule 14.10.2019
comment
К сожалению, нет разрешения на это. В итоге мы обработали это с помощью настраиваемого диалогового окна обновления, которое отправляет пользователя в игровой магазин при возникновении этой ошибки.   -  person Patrick    schedule 10.12.2019


Ответы (1)


Я протестировал свое автоматическое обновление с помощью внутреннего тестового трека, и я открыл магазин приложений Google Play на эмуляторе AVD, на котором я тестировал, открытый на странице моего приложения. Я загрузил первую тестовую сборку из внутреннего тестового трека в эмулятор через приложение Google Play на эмуляторе, чтобы настроить тест в первый раз. Затем, когда я загружал другую сборку на внутреннюю тестовую дорожку, я обновлял страницу приложения в приложении Google Play на эмуляторе до тех пор, пока не увидел, что номер новой сборки доступен - что было довольно скоро после того, как я ее загрузил, затем я запустил мои тесты. Так что это не займет несколько дней. App Store на устройстве должен распознать, запускаете ли вы сборку из внутренней тестовой дорожки, если вы это сделали, и почти сразу же должен показать новую внутреннюю тестовую сборку в приложении App Store на AVD.

Тем не менее, довольно легко запутать App Store, и он может проверять вашу опубликованную версию приложения вместо версии вашей внутренней тестовой версии, если вы переходите туда и обратно с разными версиями на устройстве, на котором тестируете.

Я также обнаружил, что обновление FLEXIBLE было более ошибочным, чем обновление IMMEDIATE, и поэтому я использовал его для производства.

person Michael Dougan    schedule 14.10.2019
comment
Эти шаги - то, что я делал. Я вижу обновление в игровом магазине, но в обновлении приложения говорится, что приложение обновлено. Это происходит, когда я устанавливаю из магазина приложений (внутренняя дорожка), но все еще находится на внутренней дорожке. здесь нет трек-джампинга. Кажется, он проверяет, меньше ли versionCode, чем предыдущее обновление, которое я опубликовал. Если я сделаю сборку с версией ниже этой конкретной версии, она попытается обновить, но не удастся. - person Patrick; 14.10.2019
comment
Я не думаю, что вы можете сделать сборку с кодом более низкой версии для тестирования. Есть что-то в сборке, возможно, потому, что она подписана другим хранилищем ключей, что сбивает ее с толку. Я всегда оставлял версию, установленную на AVD или тестовом устройстве, которая была последней загруженной через Google Play App Store на этом устройстве, затем я загружал новую сборку с увеличенным номером версии, затем запускал старую версию который был загружен через Google Play, а не свежая сборка с меньшим номером для тестирования. Я провел достаточно тестов, чтобы дойти до номера сборки 90-х годов, прежде чем я закончил! - person Michael Dougan; 14.10.2019
comment
Я читал другие сообщения людей, создающих сборки с более низким versionCode и устанавливающих через adb для тестирования. Я согласен, что подписание может быть проблемой при подписании приложения, т. К. У меня нет ключа подписи. Это единственный раз, когда он запускал обновление - хотя оно было для неправильной версии и не удалось. Установка из магазина приложений и публикация новой версии просто не запускают обновление, поэтому я в растерянности. - person Patrick; 14.10.2019
comment
Мне пришлось повсюду помещать сообщения журнала, потому что вы не можете устанавливать точки останова и выполнять код, как вы хотели бы. Я регистрировал каждый введенный мной метод, поэтому я мог видеть, когда я нажимаю на прослушиватели onSuccess и onFail, и регистрировать каждый возвращенный код результата, чтобы узнать, доступно ли обновление, или нет, или доступно, но не разрешено. Посмотрите, когда изменяется состояние, и посмотрите, какое состояние установки при вызове. Я встречал довольно много случаев «зависания» обновлений. Когда я его получу, мне придется удалить приложение с устройства и повторно загрузить, а затем загрузить еще одну новую сборку, чтобы возобновить тестирование. - person Michael Dougan; 14.10.2019
comment
У меня тоже везде тосты. Он успешно проверяет наличие обновлений и сообщает, что доступных обновлений нет - если я не установлю версию с adb и low versionCode. Playstore видит обновление и показывает кнопку «обновить». Пробовал несколько устройств с одинаковым результатом. - person Patrick; 14.10.2019