Buka konsol

Memulai Performance Monitoring untuk Android

Sebelum memulai

Tambahkan Firebase ke project Android jika Anda belum melakukannya.

Langkah 1: Tambahkan Performance Monitoring ke aplikasi Anda

  1. Di file Gradle modul (tingkat aplikasi) Anda (biasanya app/build.gradle):

    apply plugin: 'com.android.application'
    // Apply the Performance Monitoring plugin to enable instrumentation
    apply plugin: 'com.google.firebase.firebase-perf'
    
    dependencies {
        // ...
    
        implementation 'com.google.firebase:firebase-core:16.0.9'
    
        // Add the dependency for the Performance Monitoring library
        implementation 'com.google.firebase:firebase-perf:17.0.2'
    }
    
  2. Di file Gradle tingkat root (tingkat project) (build.gradle), tambahkan aturan untuk menyertakan plugin Performance Monitoring.

    buildscript {
    
        repositories {
          // Add the following repositories:
          jcenter()  // Bintray's repository
          google()   // Google's Maven repository
        }
    
        dependencies {
          // ...
    
          classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
    
          // Add the dependency for the Performance Monitoring plugin
          classpath 'com.google.firebase:perf-plugin:1.2.1'  // Performance Monitoring plugin
        }
    }
    
  3. Kompilasi ulang aplikasi Anda.

Firebase kini memantau pelacakan otomatis dan permintaan jaringan HTTP/S.

Langkah 2: Periksa hasil Performance Monitoring di Firebase console

  1. Buat aplikasi Anda di Android Studio.

  2. Uji aplikasi Anda menggunakan salah satu hal berikut ini:

    • Emulator Android dengan gambar terbaru dan layanan Google Play 15.0.0 atau versi yang lebih baru

    • Perangkat uji dengan layanan Google Play 15.0.0 atau versi yang lebih baru.

  3. Pastikan bahwa hasil Performance Monitoring ditampilkan di Firebase console.

    Hasil biasanya ditampilkan dalam waktu 12 jam.

Langkah 3: (Opsional) Tambahkan pelacakan kustom dan metrik kustom

Pelacakan kustom adalah laporan data performa yang terkait dengan beberapa kode di aplikasi Anda. Untuk mempelajari pelacakan kustom lebih lanjut, 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 1 atau beberapa metrik untuk menghitung peristiwa terkait performa di aplikasi Anda, dan metrik tersebut terhubung dengan pelacakan yang membuatnya.

Perhatikan bahwa nama untuk pelacakan dan metrik kustom harus memenuhi persyaratan berikut: tidak boleh ada spasi kosong di awal atau akhir, tidak boleh diawali karakter garis bawah (_), dan panjang maksimal adalah 32 karakter.

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

    import com.google.firebase.perf.FirebasePerformance;
    import com.google.firebase.perf.metrics.Trace;
    
  2. Untuk memulai dan menghentikan pelacakan kustom, apit kode yang ingin Anda lacak dengan baris kode yang mirip dengan yang berikut (contoh ini menggunakan nama pelacakan kustom test_trace):

    Java

    Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
    myTrace.start();
    
    // code that you want to trace
    
    myTrace.stop();
    

    Kotlin

    val myTrace = FirebasePerformance.getInstance().newTrace("test_trace")
    myTrace.start()
    
    // code that you want to trace
    
    myTrace.stop()
    
  3. Untuk menambahkan metrik kustom, tambahkan baris kode yang mirip dengan yang berikut ini setiap kali peristiwa tersebut terjadi. Misalnya, metrik kustom ini menghitung peristiwa terkait performa yang terjadi di aplikasi Anda, seperti cache ditemukan dan cache tidak ditemukan (menggunakan contoh nama peristiwa item_cache_hit dan item_cache_miss dengan kenaikan 1).

    Java

    Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
    myTrace.start();
    // code that you want to trace (and log custom metrics)
    Item item = cache.fetch("item");
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1);
    } else {
        myTrace.incrementMetric("item_cache_miss", 1);
    }
    
    myTrace.stop();
    

    Kotlin

    val myTrace = FirebasePerformance.getInstance().newTrace("test_trace")
    myTrace.start()
    // code that you want to trace (and log custom metrics)
    val item = cache.fetch("item")
    if (item != null) {
        myTrace.incrementMetric("item_cache_hit", 1)
    } else {
        myTrace.incrementMetric("item_cache_miss", 1)
    }
    
    myTrace.stop()
    

Langkah 4: (Opsional) Lacak metode khusus menggunakan @AddTrace

Anda dapat menambahkan anotasi @AddTrace ke metode dalam aplikasi Anda dan memberikan string untuk mengidentifikasi pelacakan kustom yang dihasilkan. Tindakan ini akan membuat pelacakan dimulai pada awal metode dan berhenti saat metode selesai.

Namun, perlu diingat bahwa untuk pelacakan kustom yang dibuat dengan anotasi @AddTrace, Anda tidak dapat menambahkan metrik khusus.

Misalnya, untuk membuat pelacakan yang disebut onCreateTrace, yang dijalankan ketika metode onCreate() dipanggil, gunakan kode yang mirip dengan yang berikut ini:

Java

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

Kotlin

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

Langkah 5: (Opsional) Tambahkan 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 kustom dalam Performance Monitoring, tambahkan kode berikut ke aplikasi Anda:

Java

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

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

Jaringan HTTP/S meminta Anda menangkap cara yang muncul di Firebase console secara spesifik, beserta dengan permintaan jaringan yang ditangkap Performance Monitoring secara otomatis.

Langkah 6: Terapkan aplikasi Anda lalu tinjau hasilnya

Setelah memvalidasi Performance Monitoring menggunakan satu atau beberapa perangkat uji, Anda dapat menerapkan versi terbaru aplikasi kepada pengguna.

Anda dapat memantau data performa di Firebase console.

Masalah umum

  • Plugin Performance Monitoring Gradle 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 melihat pesan error ini, Anda dapat mencoba salah satu langkah berikut:

    • Mengupgrade plugin Performance Monitoring ke v1.1.1 atau versi yang lebih baru (yang terbaru adalah v1.2.1).

    • Mengganti baris dependensi plugin Performance Monitoring di file Grade (build.gradle) tingkat root (tingkat project), sebagai berikut:

      buildscript {
        // ...
      
        dependencies {
          // ...
      
          // Replace the standard Performance Monitoring plugin dependency line, as follows:
          classpath ('com.google.firebase:perf-plugin:1.1.0') {
                      exclude group: 'com.google.guava', module: 'guava-jdk5'
          }
        }
      }
      
  • Performance Monitoring hanya mendukung pemantauan permintaan jaringan HTTP/S yang dibuat menggunakan klien HTTP OkHttp v3.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 Performance Monitoring Gradle tidak kompatibel dengan hal berikut ini:

    • DexGuard, yang menonaktifkan pelacakan otomatis dan pemantauan permintaan jaringan HTTP/S. Namun, pelacakan kustom yang ditambahkan menggunakan Performance Monitoring SDK berfungsi normal jika aplikasi Anda menggunakan DexGuard.

    • Jack, yang tidak digunakan lagi.

Lakukan debug pada integrasi Anda

Anda dapat mengaktifkan logging debug untuk Performance Monitoring pada waktu pembuatan, dengan menambahkan elemen <meta-data> ke file AndroidManifest.xml aplikasi Anda, seperti:

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

Anda dapat melihat logging pelacakan dan permintaan jaringan HTTP/S menggunakan pemfilteran logcat. Pesan log Performance Monitoring diberi tag dengan FirebasePerformance, dan Anda dapat memfilternya menggunakan perintah berikut:

adb logcat -s FirebasePerformance

Langkah berikutnya