0Pricing
Android Academy · Урок

Отладка и профилирование

Освойте инструменты отладки и профилирования 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:

  1. Щёлкните на поле слева от строки кода — появится красная точка
  2. Запустите приложение с помощью команды Отладка (значок жука), а не команды «Запуск»
  3. Когда выполнение достигнет точки останова, оно приостановится
  4. Просмотрите переменные на панели Переменные
  5. Используйте Перейти через (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 — локальная установка не требуется.

Все уроки этого курса

  1. Модульное тестирование с JUnit
  2. Имитация объектов с Mockito
  3. Тестирование интерфейса с Espresso
  4. Отладка и профилирование
← Назад к Android Academy