Buka konsol

Memulai Firebase Performance Monitoring untuk Android

Panduan ini berisi penjelasan mengenai cara menggunakan Firebase Performance Monitoring di aplikasi Anda dengan mengikuti langkah-langkah berikut:

  1. Prasyarat
  2. Menambahkan Firebase ke project Android Anda
  3. Menambahkan Performance Monitoring ke aplikasi Anda
  4. (Opsional) Menentukan pelacakan kustom dan satu atau beberapa metrik di aplikasi Anda
  5. (Opsional) Menambahkan anotasi @AddTrace untuk melacak metode tertentu
  6. Memeriksa hasil Performance Monitoring di Firebase console
  7. Menerapkan aplikasi dan meninjau hasilnya di Firebase console

Prasyarat

Sebelum mulai, ada beberapa hal perlu yang disiapkan di lingkungan Anda:

  • Perangkat yang menjalankan Android 4.1 (Jelly Bean) atau yang lebih baru dan layanan Google Play 16.2.4 atau yang lebih tinggi
  • SDK layanan Google Play dari Google Repository yang tersedia di Android SDK Manager
  • Android Studio versi terbaru, versi 2.2 atau yang lebih tinggi

Menambahkan Firebase ke project Android Anda

Jika Anda menggunakan fitur Firebase lainnya, Anda dapat menambahkan Firebase ke aplikasi dari Android Studio menggunakan Firebase Assistant.

Untuk membuka Firebase Assistant di Android Studio:

  1. Klik Tools > Firebase untuk membuka jendela Assistant.
  2. Klik untuk memperluas salah satu fitur yang tertera (misalnya, Analytics), kemudian klik link tutorial yang tersedia (misalnya, Membuat log peristiwa Analytics).
  3. Klik tombol Connect to Firebase untuk menghubungkan ke Firebase dan tambahkan kode yang diperlukan untuk aplikasi Anda.

Jika Anda tidak menggunakan fitur Firebase lain di aplikasi, tambahkan Firebase ke aplikasi secara manual.

Menambahkan Performance Monitoring ke aplikasi Anda

  1. Buka file build.gradle tingkat project dan tambahkan hal berikut ini:
    1. Di bagian buildscript -> repositories:
      jcenter()
    2. Di bagian buildscript -> dependencies, tambahkan dependensi Firebase:
      • Untuk Android Studio 2.x:
        classpath 'com.google.firebase:firebase-plugins:1.1.1'
      • Untuk Android Studio 3.x:
        classpath 'com.google.firebase:firebase-plugins:1.1.5'
  2. Buka file build.gradle level aplikasi dan tambahkan baris berikut ini:
    1. Di bawah apply plugin: 'com.android.application', tambahkan baris berikut:
      apply plugin: 'com.google.firebase.firebase-perf'
    2. Tambahkan hal berikut ke bagian dependencies:
      implementation 'com.google.firebase:firebase-perf:16.2.4'
  3. Kompilasi ulang aplikasi Anda. Pelacakan otomatis dan permintaan jaringan HTTP/S kini dipantau.

(Opsional) Menentukan pelacakan kustom dan satu atau beberapa metrik di aplikasi Anda

Pelacakan kustom adalah laporan data performa yang terkait dengan beberapa kode di aplikasi Anda. Untuk mempelajari lebih lanjut tentang pelacakan kustom, baca ringkasan Performance Monitoring. Anda dapat memiliki beberapa pelacakan kustom di aplikasi, dan lebih dari satu pelacakan kustom dapat dijalankan pada satu waktu. Setiap pelacakan kustom dapat memiliki satu atau beberapa metrik untuk menghitung peristiwa terkait performa di aplikasi Anda, dan metrik tersebut terhubung dengan pelacakan yang membuatnya.

  1. Impor kelas Performance Monitoring ini di bagian atas file .java atau .kt:

    Android

    import com.google.firebase.perf.FirebasePerformance;
    import com.google.firebase.perf.metrics.Trace;
  2. Persis sebelum kode tempat Anda ingin memulai pelacakan di aplikasi, tambahkan baris kode berikut untuk memulai pelacakan yang disebut test_trace:

    Java
    Android

    Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
    myTrace.start();

    Kotlin
    Android

    val myTrace = FirebasePerformance.getInstance().newTrace("test_trace")
    myTrace.start()
  3. Untuk menghitung peristiwa terkait performa yang terjadi di aplikasi (seperti cache ditemukan dan cache tidak ditemukan), tambahkan baris kode yang serupa dengan kode berikut setiap kali peristiwa terjadi dengan menggunakan string selain item_cache_hit atau item_cache_miss untuk memberi nama peristiwa tersebut jika Anda sedang menghitung jenis peristiwa yang berbeda:

    Java
    Android

    Item item = cache.fetch("item");
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1);
    } else {
        myTrace.incrementMetric("item_cache_miss", 1);
    }

    Kotlin
    Android

    val item = cache.fetch("item")
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1)
    } else {
        myTrace.incrementMetric("item_cache_miss", 1)
    }
  4. Persis setelah kode tempat Anda ingin menghentikan pelacakan, tambahkan baris kode berikut:

    Java
    Android

    myTrace.stop();

    Kotlin
    Android

    myTrace.stop()

(Opsional) Menambahkan anotasi @AddTrace untuk melacak metode tertentu

Anda dapat menambahkan anotasi @AddTrace ke metode di aplikasi Anda dan menyediakan string untuk mengidentifikasi pelacakan yang dihasilkan. Tindakan ini akan membuat pelacakan dimulai pada awal metode dan berhenti saat metode selesai. Metrik tidak tersedia pada pelacakan yang dibuat dengan cara ini.

Misalnya, untuk membuat pelacakan bernama onCreateTrace yang berjalan saat metode onCreate() dipanggil, Anda harus menggunakan kode yang serupa dengan kode berikut:

Java
Android

@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Kotlin
Android

@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

Memeriksa hasil Performance Monitoring di Firebase console

  1. Buat aplikasi Anda di Android Studio.
  2. Uji aplikasi Anda menggunakan emulator Android dengan gambar terbaru dan layanan Google Play versi 15.0.0 atau yang lebih baru. Selain itu, Anda bisa menggunakan perangkat pengujian dengan layanan Google Play versi 15.0.0 atau yang lebih baru.
  3. Pastikan bahwa hasil Performance Monitoring muncul di Firebase console. Hasilnya akan muncul dalam waktu 12 jam.

Menerapkan aplikasi dan meninjau hasil di Firebase console

Setelah Anda memvalidasi Performance Monitoring menggunakan satu perangkat uji atau lebih, Anda dapat menerapkan versi terbaru aplikasi kepada pengguna dan menggunakan Firebase console untuk memantau data performa.

(Opsional) Menambahkan pemantauan untuk permintaan jaringan tertentu

Performance Monitoring mengumpulkan permintaan jaringan secara otomatis. Meskipun ini mencakup sebagian besar permintaan jaringan untuk aplikasi Anda, beberapa mungkin tidak akan dilaporkan. Untuk menyertakan permintaan jaringan tertentu dalam Performance Monitoring, tambahkan kode berikut ke aplikasi Anda:

Java
Android

HttpMetric metric =
        FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
                FirebasePerformance.HttpMethod.GET);
final URL url = new URL("https://www.google.com");
metric.start();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json");
try {
    DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
    outputStream.write(data);
} catch (IOException ignored) {
}
metric.setRequestPayloadSize(data.length);
metric.setHttpResponseCode(conn.getResponseCode());
printStreamContent(conn.getInputStream());

conn.disconnect();
metric.stop();

Kotlin
Android

val metric = FirebasePerformance.getInstance().newHttpMetric("https://www.google.com",
        FirebasePerformance.HttpMethod.GET)
val url = URL("https://www.google.com")
metric.start()
val conn = url.openConnection() as HttpURLConnection
conn.doOutput = true
conn.setRequestProperty("Content-Type", "application/json")
try {
    val outputStream = DataOutputStream(conn.outputStream)
    outputStream.write(data)
} catch (ignored: IOException) {
}

metric.setRequestPayloadSize(data.size.toLong())
metric.setHttpResponseCode(conn.responseCode)
printStreamContent(conn.inputStream)

conn.disconnect()
metric.stop()

Permintaan jaringan HTTP/s yang secara spesifik Anda tangkap dengan cara ini akan ditampilkan di Firebase console beserta permintaan jaringan yang ditangkap Performance Monitoring secara otomatis.

(Opsional) Meninjau sampel permintaan jaringan dan pelacakan

Anda dapat mendalami segmen permintaan jaringan atau pelacakan tertentu di Firebase console. Pengambilan sampel acak dari sesi yang terekam menunjukkan informasi berikut:

gambar halaman sesi Firebase Performance Monitoring

  • CPU: Performance Monitoring SDK merekam jumlah waktu pengguna dan waktu sistem yang dipakai oleh aplikasi Anda.
  • Memori: Performance Monitoring SDK merekam jumlah memori heap yang digunakan oleh aplikasi Anda. Memori heap adalah memori yang digunakan untuk alokasi dinamis, termasuk objek yang dibuat, objek yang dibatalkan alokasinya, dan objek yang aktif digunakan oleh aplikasi.
  • Informasi individual: Informasi terperinci tentang satu instance permintaan jaringan atau pelacakan, termasuk waktu mulai, waktu berakhir, durasi, ukuran permintaan, dan ukuran respons.
  • Instance serentak: Informasi tentang permintaan jaringan atau pelacakan yang terjadi pada saat yang bersamaan.
  • Atribut perangkat: Informasi tentang perangkat, termasuk versi aplikasi, model, versi OS, radio, dan atribut khusus.

Untuk melihat sampel terperinci ini di Firebase console, buka salah satu permintaan jaringan atau pelacakan di aplikasi Anda, lalu klik Lihat sesi. Atau, klik link sesi atribut dari atribut tertentu.

gambar pelacakan Firebase Performance Monitoring dengan link ke sesi

Kumpulan Performance Monitoring sesi didistribusikan ke dalam persentil untuk setiap metrik. Sesi pada rentang persentil lebih rendah memiliki nilai lebih rendah untuk metrik tersebut daripada sesi pada rentang persentil lebih tinggi. Untuk memfilter sesi yang tersedia berdasarkan persentil, gunakan drop-down persentil di atas detail sesi.

gambar halaman sesi Firebase Performance Monitoring

Masalah Umum

  • Firebase Plugin versi 1.1.0 dapat menyebabkan ketidakcocokan pada dependensi Guava, sehingga menghasilkan error berikut:

    Error:Execution failed for task ':app:packageInstantRunResourcesDebug'.
    > com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

    Jika Anda melihat error ini, upgrade ke 1.1.1 atau ganti pernyataan classpath yang ditunjukkan di atas dengan yang berikut ini di bagian buildscript -> dependencies pada file build.gradle tingkat project Anda:

    classpath ('com.google.firebase:firebase-plugins:1.1.0') {
                exclude group: 'com.google.guava', module: 'guava-jdk5'
    }
  • Performance Monitoring hanya mendukung pemantauan permintaan jaringan HTTP/S yang dibuat dengan menggunakan klien HTTP OkHttp versi 3.x.x.
  • Performance Monitoring melaporkan jumlah ukuran payload terhadap permintaan jaringan HTTP/S berdasarkan nilai yang ditetapkan pada header HTTP content-length. Nilai ini mungkin tidak selalu akurat.
  • Performance Monitoring hanya mendukung proses utama dalam aplikasi Android multiproses.
  • Plugin gradle com.google.firebase.firebase-perf tidak kompatibel dengan DexGuard yang menonaktifkan pelacakan otomatis dan pemantauan permintaan jaringan HTTP/S. Pelacakan kustom yang ditambahkan menggunakan SDK akan berfungsi normal jika aplikasi Anda menggunakan DexGuard.
  • Plugin gradle com.google.firebase.firebase-perf tidak kompatibel dengan Jack yang sudah tidak digunakan lagi.

Integrasi proses debug

Anda dapat mengaktifkan pencatatan log debug untuk Performance Monitoring pada waktu pembuatan, dengan menambahkan elemen <meta-data> ke elemen <application> di file AndroidManifest.xml aplikasi Anda, seperti berikut ini:

<meta-data
  android:name="firebase_performance_logcat_enabled"
  android:value="true" />

Anda dapat melihat pencatatan log permintaan jaringan Trace dan HTTP/S menggunakan pemfilteran logcat. Pesan log Performance Monitoring ditandai dengan FirebasePerformance dan dapat difilter menggunakan perintah berikut:

adb logcat -s FirebasePerformance

Langkah berikutnya