Android Error Reporting Otomatis Menggunakan ACRA dan ACRALYZER

Seandainya kamu adalah Android developer yang membuat aplikasi yang digunakan oleh banyak orang. Pasti kamu ingin mempunyai suatu cara dimana kamu bisa merekam error yang terjadi di tiap-tiap pengguna. Karena seiring waktu berjalan para pengguna aplikasimu biasanya akan menemukan bug, dan mulai protes. Mereka akan berkata aplikasi buatanmu sering force close, error, dan lain sebagainya. Bagi pengguna mungkin dengan bilang, “Eh, aplikasinya force close saat buka fitur A, aplikasinya error saat coba fitur B,” begitu saja sudah cukup. 😀 Tapi informasi itu sebenarnya hampir tidak ada gunanya untuk developer, karena bagi developer yang penting adalah error yang terekam pada LogCat. LogCat-lah yang membantu kita untuk memperbaiki bugs. 🙂

Developer hanya peduli error yang terekam di LogCat

Nah, sekarang pertanyaannya, bagaimana caranya untuk menangkap semua error yang terjadi pada saat aplikasi force close di suatu tempat yang bisa diakses dengan mudah oleh developer, sehingga apabila pengguna melaporkan error, kita bisa dengan mudah melacaknya?

Setelah melakukan sedikit research, akhirnya saya menemukan sistem yang secara otomatis akan melaporkan error yang terjadi pada saat aplikasi force close ke developer. Perkenalkan.

ACRA

ACRA, kepanjangan dari Application Crash Reporting for Android, merupakan suatu library yang secara otomatis akan melaporkan error ketika aplikasi mengalami crash atau force close. Error yang dilaporkan bisa dikustomisasi, namun yang paling penting adalah ACRA juga melaporkan output error yang dikeluarkan oleh LogCat.

ACRA library terbagi menjadi dua sistem, yang sebenarnya kedua-duanya adalah back-end. Namun yang satu berada di sisi klien (di aplikasi Android kita) dan yang satu lagi ada di sisi server.

Library yang berada di sisi klien adalah ACRA sendiri, yang berfungsi sebagai pengirim error ketika aplikasi kita mengalami crash. Sedangkan untuk back-end, tersedia beberapa alternatif yang hampir semuanya gratis, bahkan kalian juga bisa membuat back-end sendiri.  Namun yang pernah saya coba adalah back-end resmi dari ACRA, yaitu Acralyzer.

Acralyzer

Dashboard Acralyzer

Dashboard Acralyzer

Acralyzer adalah sebuah aplikasi web (terdiri dari back-end dan front-end) yang akan meng-handle error reporting yang dikirimkan oleh ACRA. Front-end-nya berupa web application yang ditulis menggunakan JavaScript, dan back-end nya adalah sebuah storage NoSQL berbasiskan couchDB. Aplikasi ini berjalan di sisi server.

Integrating ACRA

Sisi klien :

  1. Download ACRA library (berupa .jar) di link ini, kemudian masukkan ke dalam folder /libs pada project aplikasi Android buatanmu.
  2. Kemudian, buatlah custom Application class pada Android, contohnya seperti yang ada di bawah ini : 
    import org.acra.*;
    import org.acra.annotation.*;
    
    @ReportsCrashes(
    	httpMethod = org.acra.sender.HttpSender.Method.PUT,
    	reportType = org.acra.sender.HttpSender.Type.JSON,
    	formUri = "http://your-acra-backend-server.com",
    	formUriBasicAuthLogin = "your-username",
    	formUriBasicAuthPassword = "your-password",
            formKey = "",
            // Konfigurasi ACRA pada aplikasi
            mode = ReportingInteractionMode.TOAST,
            resToastText = R.string.crash_toast_text
            )
    public class MyApplication extends Application {
      @Override
      public void onCreate() {
        //triggers the initialization of ACRA
        super.onCreate();
        ACRA.init(this);
      }
    }
    

    ACRA bekerja dengan menggunakan java annotation, yang ditandai dengan simbol @ReportCrashes(). Di dalamnya, kalian bisa mengatur bagaimana cara ACRA bekerja, seperti mendefinisikan url back-end server, HTTP method yang digunakan, dan juga tipe laporan yang dikirim. Pada contoh di atas, saya menggunakan HTTP method PUT untuk mengirim data laporan error yang berbentuk JSON. Jika server Acralyzer kalian membutuhkan autentifikasi, maka kalian bisa menuliskan username dan password yang digunakan di situ.

    Kemudian ACRA akan meng-override interaksi default aplikasi ketika force close, yang biasanya memunculkan dialog bertuliskan “Sorry application has stopped unexpectedly” dengan metode interaksi lain yang bisa kita pilih. Yaitu berupa, Notification, Toast, Dialog, atau Silent (tidak memberikan interaksi apa-apa). Pada contoh di atas metode interaksi yang dipakai adalah dengan memunculkan Toast ketika aplikasi mengalami force close. Tulisan atau string yang ada di dalam Toast tersebut sudah didefinisikan pada resource R.string.crash_toast_text. Kalian bisa menambahkan resource tersebut pada strings.xml seperti berikut :

    <string name="crash_toast_text">Application has crashed. Error log has been sent to developer.</string>
    

    Inisialisasi ACRA terjadi pada method onCreate() dengan cara memanggil ACRA.init().

  3. Langkah selanjutnya adalah mendefinisikan custom application class yang kalian buat pada Android Manifest. Hapus saja default application class yang ada di sana, dan ganti dengan kode berikut :
    <manifest ...>
      <application ... android:name="MyApplication">
        ...
      </application>
      <uses-permission android:name="android.permission.INTERNET">
      </uses-permission>
    </manifest>
    

    Jangan lupa untuk menambahkan INTERNET permission, karena diperlukan koneksi internet untuk mengirimkan data ke server.

Untuk sisi klien sudah berhasil kita set, sekarang saatnya kita men-setting sisi server.





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

Leave a Reply

Do NOT follow this link or you will be banned from the site!