Отладка и профилирование
Освойте инструменты отладки и профилирования Android Studio: точки останова, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector и Layout Inspector.
«Отладка и профилирование» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Обзор отладки
Отладка — это процесс поиска и исправления ошибок. Android Studio предоставляет мощные инструменты:
- Отладчик — приостановка выполнения, проверка переменных, пошаговое выполнение кода
- Logcat — вывод журнала с устройства в реальном времени
- Инспектор макета — просмотр иерархии пользовательского интерфейса в работающем приложении
- Профилировщик Android — анализ CPU, памяти и сети
- Инспектор базы данных — просмотр и выполнение запросов к базам данных Room в реальном времени
Logcat — ваш первый инструмент отладки
Используйте Log, чтобы выводить сообщения в Logcat. Используйте TAG для фильтрации журналов:
import android.util.Log
class UserRepository {
companion object {
private const val TAG = "UserRepo"
}
fun fetchUsers() {
Log.d(TAG, "fetchUsers() called") // Debug
Log.i(TAG, "Fetching ${users.size} users") // Info
Log.w(TAG, "Cache is empty") // Warning
Log.e(TAG, "Network error: $exception") // Error
}
}Timber — улучшенное ведение журналов
Timber — это тонкая оболочка над Log, которая удаляет вызовы журнала из сборок для выпуска и автоматически добавляет имя класса в качестве TAG:
// app/build.gradle:
// implementation 'com.jakewharton.timber:timber:5.0.1'
// In Application.onCreate():
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
// Usage anywhere in the app (no TAG needed):
Timber.d("User loaded: %s", user.name)
Timber.e(exception, "Failed to fetch data")
Timber.w("Cache miss for key: %s", key)Точки останова и отладчик
Шаги для отладки с помощью точек останова в Android Studio:
- Щёлкните на поле слева от строки кода — появится красная точка
- Запустите приложение с помощью команды Отладка (значок жука), а не команды «Запуск»
- Когда выполнение достигнет точки останова, оно приостановится
- Просмотрите переменные на панели Переменные
- Используйте Перейти через (F8), чтобы выполнять код построчно, и Перейти внутрь (F7), чтобы войти в функцию
Вычисление выражения
При остановке на точке останова используйте Вычисление выражения (Alt+F8), чтобы выполнить код Kotlin в текущей области видимости. Проверяйте предположения без перезапуска:
- Проверьте
list.size,user.email.isNotBlank() - Вызовите любой метод и посмотрите возвращаемое значение
- Просматривайте сложные объекты прямо в строке кода
Профилировщик памяти
Находите утечки памяти с помощью профилировщика памяти (Вид → Окна инструментов → Профилировщик):
- Наблюдайте за размером кучи во времени — постоянный рост, скорее всего, означает утечку
- Принудительно запустите сборку мусора и проверьте, уменьшился ли объём памяти
- Создайте дамп кучи, чтобы увидеть, какие объекты остаются активными
- Ищите экземпляры Activity или Fragment, которые уже должны были быть удалены сборщиком мусора
LeakCanary — автоматическое обнаружение утечек
LeakCanary автоматически обнаруживает утечки памяти и сообщает о них в виде уведомлений в отладочных сборках:
// app/build.gradle:
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
// That's it — no code changes needed!
// LeakCanary auto-installs via ContentProvider.
// When a leak is detected, it shows a notification with the leak trace.
// Common causes to watch for:
// - Static references to Context/Activity
// - Not releasing ViewBinding in onDestroyView()
// - Listeners registered to singletons but not unregisteredПрофилировщик CPU
Находите узкие места производительности с помощью профилировщика CPU:
- Запишите трассировку во время выполнения действия
- Просмотрите пламенную диаграмму, чтобы узнать, какие методы занимают больше всего времени
- Ищите длительные операции в главном потоке — они приводят к рывкам в интерфейсе
- Переносите ресурсоёмкие вычисления в
Dispatchers.IOилиDispatchers.Default
Инспектор сети
Инспектор сети показывает все HTTP-вызовы, выполняемые приложением, в реальном времени:
- Просматривайте URL запроса, метод, заголовки и тело
- Просматривайте код ответа, тело и время выполнения
- Находите медленные запросы и запросы с ошибками
- Из коробки работает с OkHttp (который используется Retrofit)
Откройте его через Вид → Окна инструментов → Проверка приложения → Инспектор сети.
Инспектор базы данных
Просматривайте базу данных Room и выполняйте запросы к ней в реальном времени на работающем устройстве:
- Просматривайте таблицы и их содержимое
- Выполняйте собственные SQL-запросы
- Наблюдайте за изменением данных во время использования приложения
Откройте его через Проверка приложения → Инспектор базы данных. Работает с Room на API 26 и выше.
Инспектор макета
Инспектор макета показывает интерактивное трёхмерное представление иерархии пользовательского интерфейса:
- Выберите любое представление, чтобы увидеть его атрибуты (отступы, внутренние поля, текст, цвет)
- Находите перекрывающиеся представления и неправильную видимость
- Отлаживайте проблемы макета без догадок
Откройте его через Вид → Окна инструментов → Инспектор макета. Подключитесь к работающему приложению на устройстве или эмуляторе.
StrictMode
StrictMode обнаруживает случайно медленные операции в главном потоке (чтение с диска, сетевые вызовы) и записывает их в журнал или аварийно завершает приложение в отладочных сборках:
// In Application.onCreate() — debug builds only:
if (BuildConfig.DEBUG) {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog() // log violations instead of crashing
.build()
)
}Быстрая проверка
Какой инструмент автоматически обнаруживает утечки памяти в отладочных сборках Android без дополнительного кода?
Итоги: отладка и профилирование
Эффективно находите и исправляйте проблемы:
- Logcat + Timber — лёгкое ведение журналов, автоматически удаляемое из сборок для выпуска
- Точки останова + отладчик — приостановка и проверка выполнения в реальном времени
- Профилировщик памяти — обнаружение роста кучи и утечек
- LeakCanary — автоматическое обнаружение утечек с трассировкой стека
- Профилировщик CPU — поиск медленных методов в главном потоке
- Инспектор сети — мониторинг HTTP-вызовов
- Инспектор базы данных — выполнение запросов к Room в реальном времени
- StrictMode — обнаружение случайных операций ввода-вывода в главном потоке
Поздравляем — вы завершили полный курс по разработке под Android!
Часто задаваемые вопросы
Урок «Отладка и профилирование» бесплатный?
Да — полный текст урока «Отладка и профилирование» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Отладка и профилирование»?
Освойте инструменты отладки и профилирования Android Studio: точки останова, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector и Layout Inspector. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Отладка и профилирование»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модульное тестирование с JUnit
- Имитация объектов с Mockito
- Тестирование интерфейса с Espresso
- Отладка и профилирование