0Pricing
Android Academy · Lekcja

Debugowanie i profilowanie

Opanuj narzędzia debugowania i profilowania w Android Studio: punkty przerwania, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector i Layout Inspector.

Debugowanie i profilowanie to bezpłatna lekcja Android Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Android Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Android Academy zawiera 4 lekcji w sumie.

Przegląd debugowania

Debugowanie to proces znajdowania i naprawiania błędów. Android Studio udostępnia zaawansowane narzędzia:

  • Debugger — wstrzymywanie wykonywania, sprawdzanie zmiennych, przechodzenie przez kod krok po kroku
  • Logcat — wyświetlanie logów z urządzenia w czasie rzeczywistym
  • Layout Inspector — sprawdzanie hierarchii interfejsu użytkownika na żywo
  • Android Profiler — analiza procesora, pamięci i sieci
  • Database Inspector — wyświetlanie i wykonywanie zapytań w bazach Room na żywo

Logcat — pierwsze narzędzie do debugowania

Użyj Log, aby wyświetlać komunikaty w Logcat. Użyj TAG, aby filtrować logi:

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 — lepsze logowanie

Timber to cienka nakładka na Log, która usuwa wywołania logowania z kompilacji produkcyjnych i automatycznie dodaje nazwę klasy jako 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)

Punkty przerwania i debugger

Jak debugować za pomocą punktów przerwania w Android Studio:

  1. Kliknij obszar obok numerów wierszy, po lewej stronie kodu — pojawi się czerwona kropka
  2. Uruchom aplikację za pomocą opcji Debug (ikona robaka), a nie Run
  3. Gdy wykonywanie dotrze do punktu przerwania, zostanie wstrzymane
  4. Sprawdź zmienne w panelu Variables
  5. Użyj opcji Step Over (F8), aby przechodzić wiersz po wierszu, oraz Step Into (F7), aby wejść do funkcji

Ewaluacja wyrażenia

Po wstrzymaniu wykonywania w punkcie przerwania użyj opcji Evaluate Expression (Alt+F8), aby uruchomić kod Kotlin w bieżącym zakresie. Sprawdzaj założenia bez ponownego uruchamiania aplikacji:

  • Sprawdź list.size i user.email.isNotBlank()
  • Wywołaj dowolną metodę i zobacz zwracaną wartość
  • Sprawdzaj złożone obiekty bezpośrednio w kodzie

Profiler pamięci

Znajduj wycieki pamięci za pomocą Memory Profiler (View → Tool Windows → Profiler):

  • Obserwuj rozmiar sterty w czasie — stały wzrost prawdopodobnie oznacza wyciek
  • Wymuś działanie GC i sprawdź, czy ilość zajętej pamięci spadnie
  • Utwórz zrzut sterty, aby zobaczyć, które obiekty nadal istnieją
  • Poszukaj instancji Activity lub Fragment, które powinny zostać usunięte przez GC

LeakCanary — automatyczne wykrywanie wycieków

LeakCanary automatycznie wykrywa wycieki pamięci i zgłasza je jako powiadomienia w kompilacjach debugujących:

// 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

Profiler procesora

Znajduj wąskie gardła wydajności za pomocą CPU Profiler:

  • Nagraj ślad podczas wykonywania działania
  • Wyświetl wykres płomieniowy, aby sprawdzić, które metody zajmują najwięcej czasu
  • Poszukaj długo wykonywanych operacji w main thread — powodują one zacinanie interfejsu
  • Przenieś intensywne obliczenia do Dispatchers.IO lub Dispatchers.Default

Inspektor sieci

Network Inspector pokazuje w czasie rzeczywistym wszystkie wywołania HTTP wykonywane przez aplikację:

  • Wyświetl adres URL żądania, metodę, nagłówki i treść
  • Wyświetl kod odpowiedzi, treść i czas wykonania
  • Znajduj powolne lub kończące się niepowodzeniem żądania
  • Działa od razu z OkHttp (używanym przez Retrofit)

Otwórz go przez View → Tool Windows → App Inspection → Network Inspector.

Inspektor bazy danych

Sprawdzaj bazę danych Room i wykonuj na niej zapytania na żywo, gdy aplikacja działa na urządzeniu:

  • Wyświetlaj tabele i ich zawartość
  • Wykonuj niestandardowe zapytania SQL
  • Obserwuj zmiany danych podczas korzystania z aplikacji

Otwórz narzędzie przez App Inspection → Database Inspector. Działa z Room na API 26 i nowszym.

Inspektor układu

Layout Inspector pokazuje na żywo trójwymiarowy widok hierarchii interfejsu użytkownika:

  • Wybierz dowolny widok, aby zobaczyć jego atrybuty (marginesy, wypełnienie, tekst, kolor)
  • Znajduj nakładające się widoki lub nieprawidłową widoczność
  • Debuguj problemy z układem bez zgadywania

Otwórz narzędzie przez View → Tool Windows → Layout Inspector. Połącz je z działającą aplikacją na urządzeniu lub emulatorze.

StrictMode

StrictMode wykrywa przypadkowo wolne operacje w głównym wątku (odczyty z dysku, wywołania sieciowe), a następnie zapisuje je w logu lub powoduje awarię aplikacji w kompilacjach debugujących:

// In Application.onCreate() — debug builds only:
if (BuildConfig.DEBUG) {
    StrictMode.setThreadPolicy(
        StrictMode.ThreadPolicy.Builder()
            .detectDiskReads()
            .detectDiskWrites()
            .detectNetwork()
            .penaltyLog()      // log violations instead of crashing
            .build()
    )
}

Szybkie sprawdzenie

Jakie narzędzie automatycznie wykrywa wycieki pamięci w kompilacjach debugujących Androida bez konieczności dodawania kodu?

Podsumowanie: debugowanie i profilowanie

Znajduj i naprawiaj problemy skutecznie:

  • Logcat + Timber — lekkie logowanie, automatycznie usuwane w kompilacji produkcyjnej
  • Breakpoints + Debugger — wstrzymywanie i sprawdzanie wykonywania na żywo
  • Memory Profiler — wykrywanie wzrostu rozmiaru sterty i wycieków
  • LeakCanary — automatyczne wykrywanie wycieków wraz ze śladem stosu
  • CPU Profiler — znajdowanie wolnych metod w głównym wątku
  • Network Inspector — monitorowanie wywołań HTTP
  • Database Inspector — wykonywanie zapytań w Room na żywo
  • StrictMode — wykrywanie przypadkowych operacji wejścia-wyjścia w głównym wątku

Gratulacje — ukończyli Państwo cały kurs programowania na Androida!

Często zadawane pytania

Czy lekcja „Debugowanie i profilowanie” jest bezpłatna?

Tak — pełny tekst „Debugowanie i profilowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Android Academy, przejdź na CoddyKit PRO. Kurs Android Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Debugowanie i profilowanie”?

Opanuj narzędzia debugowania i profilowania w Android Studio: punkty przerwania, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector i Layout Inspector. Ćwiczysz Android Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Android Academy?

Nie wymagamy żadnego doświadczenia. Android Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Debugowanie i profilowanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Android Academy?

Tak. Każda lekcja Android Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Testy jednostkowe z JUnit
  2. Mockowanie za pomocą Mockito
  3. Testowanie interfejsu z Espresso
  4. Debugowanie i profilowanie
← Powrót do Android Academy