Mengaktifkan pengoptimalan aplikasi dengan R8

Untuk pengalaman pengguna terbaik, Anda harus mengoptimalkan aplikasi agar berukuran sekecil dan secepat mungkin. Pengoptimal aplikasi kami, yang disebut R8, menyederhanakan aplikasi Anda dengan menghapus kode dan resource yang tidak digunakan, menulis ulang kode untuk mengoptimalkan performa runtime, dan lainnya. Bagi pengguna, hal ini berarti:

  • Waktu mulai lebih cepat
  • Pengurangan penggunaan memori
  • Peningkatan performa rendering dan runtime
  • Lebih sedikit ANR

Ringkasan pengoptimalan R8

R8 menggunakan proses multi-fase untuk mengoptimalkan ukuran dan kecepatan aplikasi Anda. Operasi utama mencakup hal berikut:

  • Penyingkatan kode (disebut juga tree shaking): R8 mengidentifikasi dan menghapus kode yang tidak dapat dijangkau dari aplikasi Anda dan dependensi library-nya. Dengan menganalisis titik entri aplikasi Anda (seperti Activities atau Services yang ditentukan dalam manifes), R8 membuat grafik kode yang direferensikan dan menghapus semua yang tetap tidak direferensikan.

  • Pengoptimalan logis: R8 menulis ulang kode Anda untuk meningkatkan efisiensi eksekusi dan mengurangi overhead. Teknik utama mencakup:

    • Inlining metode: R8 mengganti situs panggilan metode dengan isi sebenarnya dari metode yang dipanggil. Hal ini menghilangkan overhead panggilan fungsi dan memungkinkan R8 melakukan pengoptimalan lebih lanjut.

    • Penggabungan class: R8 menggabungkan kumpulan class dan antarmuka menjadi satu class. Hal ini mengurangi jumlah class dalam aplikasi, menurunkan tekanan memori, dan meningkatkan kecepatan startup.

  • Obfuscation (disebut juga minifikasi): Untuk mengurangi ukuran file DEX file, R8 mempersingkat nama class, kolom, dan metode (misalnya, com.example.MyActivity dapat menjadi a.b.a).

Sejak versi 8.12.0 plugin Android Gradle (AGP), R8 juga mengoptimalkan resource sebagai bagian dari fase pengoptimalannya. Untuk mengetahui informasi selengkapnya, lihat Penyingkatan resource yang dioptimalkan.

Mengaktifkan pengoptimalan

Untuk mengaktifkan pengoptimalan aplikasi, gunakan DSL yang sesuai berdasarkan versi AGP project Anda. Sebaiknya aktifkan pengoptimalan aplikasi hanya di versi final aplikasi yang Anda uji sebelum dipublikasikan—biasanya build rilis—karena pengoptimalan meningkatkan waktu build project Anda dan dapat membuat proses debug lebih sulit karena cara pengoptimalan mengubah kode.

Untuk AGP versi 9.3 dan yang lebih tinggi

Untuk mengaktifkan pengoptimalan aplikasi untuk AGP 9.3 dan yang lebih tinggi:

  • Tetapkan enable = true di blok optimization dalam skrip build tingkat aplikasi build rilis Anda.
  • Tambahkan aturan keep Anda ke file dengan akhiran .keep di src/<variant>/keepRules set sumber. Misalnya, src/main/keepRules/custom-rules.keep.

Kotlin

android {
    buildTypes {
        release {
            optimization {
                enable = true // Enables code and resource optimizations.
            }
        }
    }
}

Groovy

android {
    buildTypes {
        release {
            optimization {
                enable