Android Studio: Aplikasi Error! Apa yang harus dilakukan?

Gimana sih, cara mengatasi bug di Project Android Studio?

Eror atau masalah itu, makanan sehari-harinya seorang developer. Bahkan ada yang mengatakan bahwa 9/10 dari membuat program adalah googling error message, sedangkan sisanya adalah diam berjam-jam menatap layar, memikirkan bagaimana caranya agar kode yang ditulis tidak menimbulkan eror baru. Saya sendiri merasa kurang lengkap jika belum ada eror yang muncul. Bagaimana denganmu?

Sebelumnya, mari kita mengenal berbagai istilah proses testing dalam membuat sebuah aplikasi. Dikutip dari www.360logica.com,

💻 Mulai Belajar Pemrograman

Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.

Daftar Sekarang

“A mistake in coding is called Error, error found by tester is called Defect, defect accepted by development team then it is called Bug, build does not meet the requirements then it Is Failure.”

Perbedaan antara apa yang diharapkan dengan apa yang sebenarnya terjadi dalam aplikasi disebut defect. Bug adalah eror yang terjadi sebelum aplikasi mencapai proses produksi. Namun, apabila perbedaan ataupun permasalahan tersebut ditemukan setelah aplikasi diproduksi dan mencapai user, itu disebut failure.

Ada 2 macam eror dalam Android Studio. Yang pertama adalah apabila ada suatu komponen yang belum ada atau belum terbentuk, hasilnya kode akan berwarna merah. Sedangkan eror yang kedua yaitu apabila terdapat salah prosedur atau salah pemanggilan nama. Nah, eror yang kedua ini akan memberikan garis merah di bawah kode yang bermasalah. Apabila warna merah tersebut masih ada, maka proyek tidak akan bisa dikompilasi.

Syukurnya, Android Studio sudah dilengkapi dengan hint yang memberi tahu tentang apa yang terjadi pada baris merah tersebut. Selain itu, ada juga fitur quick fix yang akan menyarankan kepada developer tentang apa yang harus dilakukan untuk mengatasi eror tersebut. Cara menampilkannya cukup mudah, cukup dengan menekan Alt+Enter (untuk Windows) atau Option+Enter (untuk Mac). Selain itu, dapat pula dengan klik lampu merah yang ada di bagian kiri baris tersebut.

Eror dalam proses development dapat dengan sangat mudah ditemukan, karena ia terpampang secara nyata dan jelas. Namun, bagaimana bila project sudah berhasil dikompilasi lalu aplikasi tiba-tiba berhenti (force closed) atau Not Responding? Wah, ternyata ada bug dalam aplikasi kita. Untuk menemukan dan mengatasinya, memang agak sedikit tricky. Mari kita bahas secara sederhana cara mengatasi bug dalam Android Studio :

  1. Debug

    Debug adalah fitur resmi untuk menemukan dan mengatasi bug dalam Android Studio. Debugging dapat dimulai dengan menjalankan aplikasi dalam debug mode, atau dengan menambahkan debugger pada aplikasi yang sedang berjalan. Untuk penjelasan lebih lanjut mengenai proses debugging, kamu dapat melihat di Android Fundamentals Course dari Google.

    1. Pertama-tama, tambahkan breakpoint dalam kode. Breakpoint adalah titik dimana kamu ingin menghentikan sementara proses eksekusi aplikasi untuk melakukan tindakan seperti memeriksa variabel, mengevaluasi ekspresi, atau mengeksekusi kode baris per baris untuk memastikan penyebab dari runtime errors. Tentukan di mana kamu ingin menambahkan breakpoint, lalu klik pada gutter kiri dari editor, tepat di sebelah kanan nomor baris. Titik merah akan muncul yang mengindikasikan breakpoint.
    2. Menjalankan aplikasi dengan debug mode: klik Debug  yang ada di toolbar.
    3. Menambahkan debugger pada aplikasi yang sedang berjalan : Pilih Run > Attach debugger to Android process atau klik pada Attach ikon  pada toolbar.
    4. Debugger akan berhenti sementara dari mengeksekusi program pada breakpoint yang telah kamu tambahkan.
    5. Untuk melihat tahapan eksekusi per baris kode dari class dan method yang sama, klik  (Step Over).
    6. Klik  untuk melanjutkan eksekusi dalam debug mode. Apabila terdapat breakpoint pada baris selanjutnya, eksekusi akan berhenti kembali untuk sementara. Debug adalah fitur resmi untuk menemukan dan mengatasi bug dalam Android Studio. Debugging dapat dimulai dengan menjalankan aplikasi dalam debug mode, atau dengan menambahkan debugger pada aplikasi yang sedang berjalan.

      DEBUGGING

      Untuk penjelasan lebih lanjut mengenai proses debugging, kamu dapat melihat di Android Fundamentals Course dari Google.

  2. Temukan dimana Error Bug-nya

    Coba run dulu programnya menggunakan emulator atau device pribadi. Cobalah fitur-fitur yang ada, sampai bertemu bagian yang menyebabkan force close maupun not responding. Okay, sekarang kita cari di mana error-nya. Jangan lupa berdoa dahulu agar pencarian ini dimudahkan.

    1. Pastikan peranti masih terhubung dengan Android Studio.
    2. Lihat bagian logcat yang ada di tab android monitor di bagian bawah Android Studio. Scroll ke atas sampai bertemu teks berwarna biru yang dikelilingi teks berwarna merah. Klik pada teks tersebut, maka kita akan ditunjukkan titik di mana error itu terjadi. Contohnya pada gambar di atas. Wah, ternyata eror tersebut terletak di MainActivity.java baris ke 25, yang berisi kode yang ada di gambar di atas. Hmm, kira-kira ada masalah apa ya dengan btn.setOnClickListener()?
    3. Lihat dan perhatikan pesan eror yang ada. Baris pertama tersebut menjelaskan alasan mengapa eror terjadi:  “java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)’ on a null object reference

    Yay! Baru bertemu dengan letak eror saja kadang sudah bikin hati developer berbunga-bunga. Sampai sini, jika sudah langsung tahu bagaimana memperbaikinya maka tinggal utak-atik lagi bagian yang error tersebut. Tapi kalau belum tahu, jangan khawatir. Mari lanjut ke langkah berikutnya.

  3. Googling

    Googling adalah salah satu skill paling penting yang harus dimiliki oleh seorang developer. Langsung saja, kita masukkan kata kunci dari eror yang kita dapat di langkah pertama tadi ke laman pencarian Google.  

    Dimulailah perjalanan pencarian solusi.  Siapkan kesabaran ekstra ya. Selain itu, coba ikuti beberapa tips berikut ini :

    1. Jangan malu untuk klik sana-sini cari kasus yang paling mirip dengan yang kita miliki. Psst, tidak ada yang tahu kok kalau ada banyak tabs yang ada di browser kita.
    2. Klik pada search result pertama. Biasanya, itu yang paling relevan dengan pertanyaan kita. Scroll dan baca dengan teliti. Apabila berada di stackoverflow, bandingkan jawaban yang ada dengan kode yang kita miliki. Jawaban yang memiliki banyak votes dan diberi centang hijau patut mendapatkan perhatian lebih, karena biasanya jawaban tersebut valid dan telah menyelesaikan permasalahan yang ditanyakan. Di kasus ini, saya menemukan solusi atas error yang ada di jawaban kedua. Wow! Cepat kan?Wah, ternyata Saya lupa menginisialisasi view dari Button.
    3. Jangan takut mencoba beberapa solusi yang ada. Tidak perlu khawatir, selalu ada Ctrl+Z untuk kembali ke project semula.
    4. Usahakan menggunakan search keyword berbahasa Inggris, agar referensi yang didapatkan menjadi lebih banyak dan up-to-date. Tambahkan kata “How to resolve” , “How to fix”, “Why can’t I”, dan lain sebagainya sebelum kata pencarianmu. Dalam permasalahan di atas misalnya, saya dapat mencari dengan keyword :  “Why can’t I set onClickListener() on my Button?”.

    Bagaimana? Semoga erormu terpecahkan!  Saat mulai lelah berjuang mencari sendiri namun belum ketemu juga solusinya, tenang dan tarik nafas dulu. Masih ada langkah selanjutnya.

  4. Bertanya pada Forum atau Group Komunitas terkait

    Kan tadi sudah berjuang sendirian. Sekarang saatnya cari bantuan. Kita dapat berinteraksi dengan developer lain secara langsung melalui forum diskusi, contohnya di Konsultasi Materi MADE. Kalau mau pertanyaanmu cepat terjawab, ada beberapa hal yang harus dipastikan ada dalam pertanyaanmu. Hal ini sangat diperlukan agar calon penjawab dapat memahami permasalahan dengan baik.

    1. Jelaskan mana yang kamu pahami dan mana yang tidak kamu pahami. Dengan begini, calon penjawab dapat mengerti alur logika yang kamu miliki.
    2. Sertakan screenshot dari kodemu bukan foto. Ini sangat krusial karena dapat sangat membantu calon penjawab memahami apa yang sedang kamu hadapi. Lebih baik lagi jika hasil screenshot tersebut sudah memuat logcat yang menunjukkan pesan eror disertai baris letak eror berada seperti gambar di bawah.

      BENAR

      SALAH

    3. Selain itu, kamu bisa membagikan kodemu secara online salah satunya adalah pastebin.com. Lalu sertakan tautan yang dihasilkan ke pertanyaan yang kamu ajukan.
    4. Agar pencarianmu yang tadi lebih berguna, sertakan pula tautan dari solusi-solusi yang telah kamu coba.
    5. Bingung mau bertanya ke mana? Berikut adalah referensi grup di Telegram dan Facebook untuk bertanya tentang Android :
      1. Telegram :
        1. SANDEC (Semarang Android Developer Center)
        2. Kotlin Indonesia
        3. UI/UX Indonesia
        4. Flutter Indonesia
        5. ADB from Bandung for Indonesia
        6. Petani Kode Indonesia
        7. AndroidDev – Surabaya
        8. JVM User Group
      2. Facebook
        1. Android Studio User Indonesia
        2. Dicoding Developer
    6. Last but not least, perhatikan sopan-santun. Gunakan bahasa yang baik dan sesuai kaidah. Contoh pertanyaan :

Selamat siang, saya ingin bertanya. Saya sudah menambahkan Button dalam view saya lalu memberikan onClickListener() namun mendapatkan error: java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)’ on a null object reference. Saya tidak paham di mana letak Null nya.

Saya sudah mencoba https://stackoverflow.com/a/38683280/10865532 namun belum berhasil. Boleh dijelaskan? Untuk kodenya dapat dilihat di :

MainActivity.java : https://pastebin.com/g68HpTJ1

activity_main.xml : https://pastebin.com/UNh1yxFW

SCREENSHOT

Thanks in advance for all the responses.

Okay, sampai sini kamu sudah berjuang dengan sangat baik. Selagi menunggu jawaban, kamu dapat kembali lagi ke step dua dan tiga. Siapa tahu kali ini dapat pencerahan.

Anggaplah setiap bug dan eror sebagai tantangan untuk belajar lebih dalam mengenai materi yang sedang kamu pahami. Jika selesai, selamat! Kamu sudah selangkah lebih paham. Bila belum, tidak apa, tidak ada ruginya belajar lebih luas dan dalam. Semangat ya!


Belajar Pemrograman Gratis
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.