Как отладить обновление приложения в Android Studio на устройстве, подключенном через USB - PullRequest
0 голосов
/ 08 ноября 2018

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

Чтобы получить «чистую» установку, я могу зайти в настройки моего телефона Backup & reset > Automatic restore, отключить его, затем удалить приложение и установить его из Play Store. Кроме того, я мог бы загрузить производственный APK и установить его из командной строки adb (подробности ниже). В результате мое устройство должно быть таким же, как обычный пользователь.

Непосредственно к вопросу, но для понимания моей мотивации наблюдать за процессом обновления является то, что приложение имеет базу данных SQLite, и я расширяю SQLiteOpenHelper, поэтому вызывается onUpgrade(), и выполняется некоторая работа со схемой базы данных. ,

Обновление несовместимо

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

Установка не удалась с сообщением Не удалось завершить сеанс: INSTALL_FAILED_UPDATE_INCOMPATIBLE

Очевидно, я могу удалить, но , который не будет тестировать процесс обновления!

Создание подписанного APK

Я создал «релиз» APK, используя Generate Signed APK..., который является тем же процессом, который я использую при создании релиза для загрузки в Play Store. Это позволяет обойти проблему управления версиями, но вызывает проблему видимости журнала. Конфигурация релиза использовалась в прошлом и теперь выглядит следующим образом:

Release build type used for production apk

Установка APK на устройство из командной строки

«C: \ Program Files (x86) \ HTC \ HTC Sync Manager \ HTC Sync \ adb» install -r app-release.apk

Приведенное выше обновило без удаления. Процесс, который я использовал, состоял в том, чтобы открыть Terminal в Android Studio, сменить каталог на тот, где хранился сгенерированный APK, затем введите команду выше.

Проблемы с ведением журнала / отладкой

Командная строка adb запустила процесс обновления, но не сразу заполнила окно Logcat отладочной информацией. Я мог подключиться к Logcat для всех процессов, но не смог получить отладочную информацию только для своего процесса и не имел доступа к инструментам отладки.

Logcat window shows No Debuggable Processes

Вопрос

Как запустить устройство с подписанным рабочим выпуском, а затем запустить обновленную версию, содержащуюся в Android Studio, без деинсталляции и с возможностью просмотра результатов отладки в процессе обновления? Или как я могу изменить подписанный производственный выпуск так, чтобы он позволял обновлять новую версию и разрешать отладку?

1 Ответ

0 голосов
/ 09 ноября 2018

Поскольку вы начинаете с APK, равным Debuggable=false, ваш обходной путь, включающий создание обновления приложения с использованием того же процесса, что и процесс выпуска продукта, и получение Logcat со всеми процессами, вероятно, является лучшим для вас. можно сделать.

Восстановление из предыдущей версии Source Control

Один из вариантов - вытащить конкретную версию приложения из вашей системы управления версиями и собрать ее с Debuggable=true и использовать этот сгенерированный APK в качестве отправной точки вместо использования APK из Play Store.

Для Будущего

Вместо создания только одной версии APK и загрузки ее в Play Store создайте две версии. Одна версия будет подписана и загружена как обычно. И с точно таким же исходным кодом создайте еще один APK с Debuggable=true. Переименуйте каждый файл с номером версии. Затем, если вы когда-нибудь захотите попробовать обновление с любой версии до любой версии, вы можете сделать это, и при этом у вас останется возможность отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...