Android Academy · Pelajaran

Penyahpepijatan & Pemprofilan

Kuasai alat penyahpepijatan dan pemprofilan Android Studio: titik henti, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector dan Layout Inspector.

Pelajaran 4 daripada 414 langkah

Penyahpepijatan & Pemprofilan ialah pelajaran Android Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Android Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Android Academy merangkumi sejumlah 4 pelajaran.

Gambaran Keseluruhan Penyahpepijatan

Penyahpepijatan ialah proses mencari dan membaiki pepijat. Android Studio menyediakan alat yang berkuasa:

  • Penyahpepijat — menjeda pelaksanaan, memeriksa pemboleh ubah dan melangkah melalui kod
  • Logcat — output log masa nyata daripada peranti
  • Pemeriksa Reka Letak — memeriksa hierarki UI secara langsung
  • Pemprofil CPU — analisis CPU, memori dan rangkaian
  • Pemeriksa Pangkalan Data — melihat dan membuat pertanyaan pada pangkalan data Room secara langsung

Logcat — Alat Penyahpepijatan Pertama Anda

Gunakan Log untuk mencetak mesej ke Logcat. Gunakan TAG untuk menapis log anda:

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 — Pengelogan yang Lebih Baik

Timber ialah pembalut nipis untuk Log yang membuang panggilan log daripada binaan keluaran dan menambahkan nama class sebagai TAG secara automatik:

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

Titik Henti dan Penyahpepijat

Langkah untuk menyahpepijat dengan titik henti dalam Android Studio:

  1. Tekan bahagian tepi (margin kiri) di sebelah baris kod — titik merah akan muncul
  2. Jalankan aplikasi dengan Debug (ikon pepijat), bukannya Run
  3. Apabila pelaksanaan mencapai titik henti, ia akan dijeda
  4. Periksa pemboleh ubah dalam panel Pemboleh ubah
  5. Gunakan Step Over (F8) untuk bergerak baris demi baris, dan Step Into (F7) untuk memasuki fungsi

Nilai Ungkapan

Semasa dijeda pada titik henti, gunakan Evaluate Expression (Alt+F8) untuk menjalankan kod Kotlin dalam skop semasa. Uji andaian tanpa memulakan semula:

  • Semak list.size, user.email.isNotBlank()
  • Panggil sebarang method dan lihat nilai yang dikembalikan
  • Periksa objek kompleks sebaris

Pemprofil Memori

Cari kebocoran memori dengan Pemprofil Memori (View → Tool Windows → Profiler):

  • Pantau saiz timbunan dari semasa ke semasa — pertumbuhan berterusan = kemungkinan kebocoran
  • Paksa GC dan perhatikan sama ada memori berkurang
  • Ambil longgokan timbunan untuk melihat objek yang masih hidup
  • Cari kejadian Activity atau Fragment yang sepatutnya telah dibersihkan oleh GC

LeakCanary — Pengesanan Kebocoran Automatik

LeakCanary mengesan dan melaporkan kebocoran memori secara automatik sebagai pemberitahuan dalam binaan nyahpepijat:

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

Pemprofil CPU

Cari kesesakan prestasi dengan Pemprofil CPU:

  • Rakam jejak semasa melakukan sesuatu tindakan
  • Lihat carta nyalaan untuk mengetahui method yang mengambil masa paling lama
  • Cari kerja yang berjalan lama pada urutan utama — ini menyebabkan UI tersentak
  • Pindahkan pengiraan berat ke Dispatchers.IO atau Dispatchers.Default

Pemeriksa Rangkaian

Pemeriksa Rangkaian menunjukkan semua panggilan HTTP yang dibuat oleh aplikasi anda dalam masa nyata:

  • Lihat URL permintaan, method, pengepala dan isi
  • Lihat kod respons, isi dan pemasaan
  • Kenal pasti permintaan yang lambat atau gagal
  • Berfungsi terus dengan OkHttp (yang digunakan oleh Retrofit)

Akses melalui View → Tool Windows → App Inspection → Network Inspector.

Pemeriksa Pangkalan Data

Periksa dan buat pertanyaan pada pangkalan data Room anda secara langsung pada peranti yang sedang berjalan:

  • Lihat jadual dan kandungannya
  • Jalankan pertanyaan SQL tersuai
  • Pantau perubahan data semasa anda menggunakan aplikasi

Akses melalui App Inspection → Database Inspector. Berfungsi untuk Room pada API 26+.

Pemeriksa Reka Letak

Pemeriksa Reka Letak menunjukkan paparan 3D langsung hierarki UI anda:

  • Pilih mana-mana paparan untuk melihat atributnya (margin, pengisi, teks dan warna)
  • Kesan paparan yang bertindih atau keterlihatan yang salah
  • Nyahpepijat isu reka letak tanpa membuat tekaan

Akses melalui View → Tool Windows → Layout Inspector. Sambungkan kepada aplikasi yang sedang berjalan pada peranti atau emulator.

StrictMode

StrictMode mengesan operasi yang tersilap menjadi perlahan pada urutan utama (bacaan cakera, panggilan rangkaian) serta merekodkan log atau menyebabkan aplikasi ranap dalam binaan nyahpepijat:

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

Semakan Pantas

Alat manakah yang mengesan kebocoran memori secara automatik dalam binaan nyahpepijat Android tanpa kod tambahan?

Imbas Kembali: Penyahpepijatan dan Pemprofilan

Cari dan baiki masalah dengan cekap:

  • Logcat + Timber — pengelogan ringan, dibuang secara automatik dalam keluaran
  • Titik Henti + Penyahpepijat — menjeda dan memeriksa pelaksanaan langsung
  • Pemprofil Memori — mengesan pertumbuhan timbunan dan kebocoran
  • LeakCanary — pengesanan kebocoran automatik dengan jejak tindanan
  • Pemprofil CPU — mencari method yang perlahan pada urutan utama
  • Pemeriksa Rangkaian — memantau panggilan HTTP
  • Pemeriksa Pangkalan Data — membuat pertanyaan Room secara langsung
  • StrictMode — mengesan IO tidak sengaja pada urutan utama

Tahniah — anda telah menamatkan kursus Pembangunan Android sepenuhnya!

Percuma untuk bermula

Pelajari Kotlin dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
36
Pelajaran
152

Soalan Lazim

Adakah pelajaran “Penyahpepijatan & Pemprofilan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Android Academy, termasuk “Penyahpepijatan & Pemprofilan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Android Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penyahpepijatan & Pemprofilan”?

Kuasai alat penyahpepijatan dan pemprofilan Android Studio: titik henti, Logcat, Timber, Memory Profiler, LeakCanary, CPU Profiler, Network Inspector dan Layout Inspector. Anda berlatih Android Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Android Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Android Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Penyahpepijatan & Pemprofilan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Ujian Unit dengan JUnit
  2. Mocking dengan Mockito
  3. Ujian UI dengan Espresso
  4. Penyahpepijatan & Pemprofilan
← Kembali ke Android Academy