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

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

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

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

  • По USB из Android Studio.

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

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

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

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

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

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

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

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

Отладка по USB

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

Android Studio

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

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

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

Открываем LogCat

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

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

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

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

Готово. Чтобы получить логи краша приложения и передать их компетентным сотрудникам (или разобраться самому) этого достаточно. Если этого алгоритма недостаточно — есть другие способы фильтрации, описанные на официальном сайте 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 logcat -b crash > log_crash_am.log

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

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

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

Crash Log Viewer — Show App Cr

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

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

№1. Запускаем приложение и выбираем 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 способа:

  • Непосредственно на самом девайсе.

  • Через Xcode.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Apple Bro

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И нажимаем Enter.

Готово. 

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

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