Android: как отладить процесс запуска приложения

Я изучаю некоторые проблемы, возникающие в процессе запуска моего приложения, но DDMS не запускает режим отладки до тех пор, пока процесс не запустится. Есть ли способ, которым я могу захватить события раньше?

4 ответа

Я знаю, что это на пару лет позже, но для любых будущих поисков:

Ввод WaitForDebugger в ваш код это один из способов.

Разблокировка параметров разработчика (путем нажатия на номер сборки в системной информации на устройстве Android) в настройках позволяет нам выбрать приложение для отладки, а затем выбрать ожидание отладчика при каждом запуске программы. Это позволяет нам сделать эквивалент добавления и удаления WaitForDebugger без изменения и переустановки кода каждый раз.

Для Android Studio вот что сработало для меня:

  1. добавлять

android.os.Debug.waitForDebugger();

Где вы хотите начать отладку.

  1. Затем добавьте точку останова сразу после нее в своем коде
  2. Скомпилируйте ваше приложение и передайте его на ваше устройство
  3. Перезагрузите ваше устройство
  4. Как только он подключен, подключите отладчик:

  5. Начать отладку

Android может дождаться, пока отладчик подключится к вашему приложению, прежде чем приложение будет запущено. Это опция разработчика под названием « Подождать отладчика» .

Шаги

  • Включите параметры разработчика (коснитесь версии сборки 7 раз)

  • Включить отладку по USB

  • Установите приложение на свое устройство в режиме отладки

  • В параметрах разработчика: нажмите Select debug appи выберите приложение

  • Включите Wait for debugger, как показано на скриншоте:

  • Запустите ваше приложение:

    • Например, если тестируемое приложение запускается из состояния завершения из 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 и т. Д. Этот класс будет отправной точкой вашего приложения.

также установите его как ваше приложение в манифесте.

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