Как снять логи при краше мобильного приложения?

Всем привет! Я Tech Lead QA в мобильной разработке. При тестировании приложений иногда сталкиваемся со сбоем приложения. И в таких ситуациях очень важно уметь собирать логи с устройства, чтобы максимально быстро пофиксить ошибки. В этой статье я хотел бы рассказать, как мы это делаем в Альфа-Банке.

Осторожно, в статье много картинок.

Как получить логи с Android?

Есть, как минимум, 3 способа, с помощью которых можно получить логи при краше приложения:

  • По USB из Android Studio.

  • По USB через утилиту adb.

  • Через приложение  Crash Log Viewer — Show App Cr.

Перед тем, как начать снимать логи одним из трех перечисленных способов, настраиваем и подключаем девайс по USB.

Подготовка девайса

№1. Включаем режим разработчика. У разных моделей и производителей этот режим включается по разному. Но тут нет ничего сложного, 5 минут погуглить, как включается этот режим у вашей модели и всё получится.

№2. Переходим в настройки и заходим в раздел «Для разработчика» и включаем «Отладку по USB».

Включение отладки по USB

Включение отладки по USB

№3. Подключаем девайс по USB к ПК и разрешаем отладку по USB.

adbconnect4

Отладка по USB

Девайс готов, теперь можно снимать логи. Рассмотрим первый способ.

Android Studio

Есть два способа установить Android Studio на ПК.

Я предпочитаю второй способ, потому как легко обновлять Android Studio и заодно можно установить другие продукты JetBrain.

№1. После установки Android Studio на ПК запускаем приложение, создаём любой проект и переходим в раздел «Logcat».

Снимок экрана 2021-12-16 в 13.46.58

Открываем LogCat

№2. Выбираем девайс, подключенный по USB, и уровень логирования error.

Снимок экрана 2024-01-10 в 16.11.27

Простая фильтрация логов

№2.1. Можно составить фильтр из нескольких условий. Например, уровень логирования и названия приложения, которое хотите отфильтровать. Тогда мы получим логи только по этим параметрам.

Снимок экрана 2024-01-10 в 16.14.42

Фильтрация логов по нескольким условиям

Готово. Чтобы получить логи краша приложения и передать их компетентным сотрудникам (или разобраться самому) этого достаточно. Если этого алгоритма недостаточно — есть другие способы фильтрации, описанные на официальном сайте Android Studio. 

Перейдем ко второму способу.

Android Debug Bridge (adb)

Сначала идем на официальный сайт Android по ссылке и устанавливаем на ПК утилиту adb.

№1. Открываем консоль и ищем ID девайса. 

adb devices

№2. Получаем ID девайса, подключенного по USB.

List of devices attached
8HVKGMRKN78TMZYH device

8HVKGMRKN78TMZYH — ID моего девайса. У вас он будет другим, но состоящим из подобного набора символов.

№3. Запускаем сбор логов с устройства в файл, командой.

adb 8HVKGMRKN78TMZYH logcat > log_crash_am.log

Теперь на смартфоне можно повторить действия, которые приводят к сбою приложения. 

Чтобы остановить сбор логов, достаточно в консоли нажать комбинацию CTRL+C.  Готово.

И последний способ получить логи с Android — через приложение… 

Crash Log Viewer — Show App Cr

С Google Play устанавливаем приложение на девайс.

Установка приложения Crash Log Viewer

Установка приложения Crash Log Viewer

№1. Запускаем приложение и выбираем Crash Log Viewer.

Главное окно приложения Crash Log Viewer

Главное окно приложения Crash Log Viewer

После чего должно открыться окно с двумя adb командами.

Требуемые разрешения для приложения

Требуемые разрешения для приложения

№2. Открываем терминал на ПК и последовательно выполняем 2 команды, которые были указаны в приложении.

adb shell pm grant com.arumcomm.crashlogviewer android.permission.PACKAGE_USAGE_STATS
adb shell pm grant com.arumcomm.crashlogviewer android.permission.READ_LOGS

№3. Отключаем девайс от ПК после выполнения команд.

Теперь мы готовы к сбору логов через Crash Log Viewer. При любом краше приложение будет автоматически их собирать. 

Чтобы получить или отправить логи запускаем приложение, переходим в раздел «Crash Log Viewer». Там появится список приложений, у которых был краш.

Список приложений, у которых случился сбой

Список приложений, у которых случился сбой

Логи приПереходим в интересующее приложение  и смотрим логи, когда приложение «крашнулось».

Логи приложения после сбоя

Логи приложения после сбоя

Логи можно скопировать или поделиться.

Поделиться логами

Поделиться логами

Мне нравится снимать логи краша приложения на Android при помощи приложения, потому что:

  • девайс не нужно каждый раз подключать по USB к ПК;

  • не нужно настраивать фильтрацию и потом искать нужные записи в логах.

Как получить логи с iOS?

Есть 2 способа:

Начнем с девайса.

Снять логи непосредственно с девайса iOS

№1. Переходим на iOS в «Настройки» «Конфиденциальность». 

Раздел Конфиденциональность в настройках iOS

Раздел Конфиденциональность в настройках iOS

№2. Идем в раздел «Аналитика и улучшения».

Раздел Аналитика и улучшения в настройках iOS

Раздел Аналитика и улучшения в настройках iOS

 №3. Открываем «Данные Аналитики».

Раздел Данные Аналитики в настройках iOS

Раздел Данные Аналитики в настройках iOS

И попадаем в список логов девайса.

Список логов в iOS

Список логов в iOS

№4. Чтобы отфильтровать логи интересующего приложения, вводим в строку поиска его название.

Фильтрация логов в iOS

Фильтрация логов в iOS

№5. Проваливаемся в запись и видим логи приложения.

Логи приложения в iOS

Логи приложения в iOS

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

Переходим ко второму способу.

Сбор из приложения XCode

Этот способ требует определённой подготовки.

Для начала устанавливаем XCode на Mac. Да, к сожалению iOS дружит только с себе подобными.

Apple Bro

Apple Bro

Из-за большого размера XCode может устанавливаться немного дольше, чем вы планировали, так что можно налить себе чаёк и посмотреть любимый сериальчик. 

Итак, XCode установлен, теперь можно приступать к сбору логов. 

№1. Подключаем девайс к Mac по USB и запускаем XCode

Если появился запрос «Доверять этому компьютеру?» жмём «Доверять».

trust-1

trust-1

№2. В XCode переходим «Window» → «Devices  and Simulators».

ksc10_12419_0114-444044

Запускаем управление девайсами в XCode

№3. Нажимаем «Open Console».

Снимок экрана 2024-01-10 в 17.52.29

Открываем консоль логов iOS в XCode

Откроется окно, в котором будут отображаться логи iOS. 

№4. Для начала вывода логов в консоль нажимаем «Начать».

Снимок экрана 2024-01-10 в 18.07.45

Запуск вывода логов iOS в XCode

После этого в консоль начнут «сыпаться» логи. 

№5. Для сбора логов только при краше приложения выбираем тип логов «Ошибки и сбои».

Снимок экрана 2024-01-10 в 18.17.44

Фильтрация Ошибок и сбоев

№6. Нажимаем на строку поиска, затем на клавиатуре нажимаем стрелку вправо —> и вводим название приложения, чтобы получилось примерно такое.

Снимок экрана 2024-01-10 в 18.18.36

Поиск логов в XCode

И нажимаем Enter.

Готово. 

Подведение итогов

Надеюсь моя статья облегчит процесс сбора логов и сделает вашу работу хоть чуточку, но интересней и приятней. Спасибо за внимание и отличного вам настроения. 

© Habrahabr.ru