Android: как отладить процесс запуска приложения
Я изучаю некоторые проблемы, возникающие в процессе запуска моего приложения, но DDMS не запускает режим отладки до тех пор, пока процесс не запустится. Есть ли способ, которым я могу захватить события раньше?
4 ответа
Я знаю, что это на пару лет позже, но для любых будущих поисков:
Ввод WaitForDebugger
в ваш код это один из способов.
Разблокировка параметров разработчика (путем нажатия на номер сборки в системной информации на устройстве Android) в настройках позволяет нам выбрать приложение для отладки, а затем выбрать ожидание отладчика при каждом запуске программы. Это позволяет нам сделать эквивалент добавления и удаления WaitForDebugger
без изменения и переустановки кода каждый раз.
Для Android Studio вот что сработало для меня:
- добавлять
android.os.Debug.waitForDebugger();
Где вы хотите начать отладку.
Android может дождаться, пока отладчик подключится к вашему приложению, прежде чем приложение будет запущено. Это опция разработчика под названием « Подождать отладчика» .
Шаги
Включите параметры разработчика (коснитесь версии сборки 7 раз)
Включить отладку по USB
Установите приложение на свое устройство в режиме отладки
В параметрах разработчика: нажмите Select debug appи выберите приложение
Запустите ваше приложение:
- Например, если тестируемое приложение запускается из состояния завершения из push-уведомления, отправьте это push-уведомление на устройство.
- например, если тестируемое приложение запускается из Google Assistant, используйте Google Assistant, чтобы вызвать это.
Приложение еще не запускалось, вместо этого появлялось диалоговое окно:
Прикрепите отладчик, нажав Attach Debugger to Android Processкнопку
Моя ситуация
Для всех, кто интересуется / для справки в будущем: я хотел отладить свое приложение Android, получая сообщение push-уведомления, когда приложение было в состоянии завершения . На самом деле это было приложение Flutter, работающее на Android, так что это актуально как для Android, так и для Flutter.
Я отозвал ключ API, показанный в этой гифке.
Кончик
Если Wait for debuggerон включен, иногда вам нужно отсоединить или закрыть отладчик Android Studio и повторно подключить его, если вы хотите успешно обработать последующий запуск приложения. В противном случае приложение никогда не запустится.
Обратите внимание, я отправляю push-уведомление с устройства (левое устройство, iOS), и push-уведомление вызывает запуск приложения на (правое устройство, Android). Затем я подключаю отладчик, и программа останавливается на точке останова, которую я установил внутри
FirebaseMessagingReceiver
.
Я написал еще одну версию этих шагов здесь .
Вы должны реализовать свой собственный класс Application, который расширяет Application и переопределяет методы onCreate и т. Д. Этот класс будет отправной точкой вашего приложения.
также установите его как ваше приложение в манифесте.