Acara & Program

Menggunakan R8 untuk menyusutkan, mengoptimalkan, dan mempercepat aplikasi Anda

Waktu baca: 5 menit
Ben Weiss
Developer Relations Engineer

Menggunakan R8 untuk menyusutkan, mengoptimalkan, dan mempercepat aplikasi Anda

Selamat datang di hari pertama Android Performance Spotlight Week.

Kami memulai dengan perubahan paling berdampak dan mudah yang dapat Anda lakukan untuk meningkatkan performa aplikasi: mengaktifkan pengoptimal R8 dalam mode penuh.

Anda mungkin sudah mengetahui R8 sebagai alat untuk mengecilkan ukuran aplikasi Anda. Fitur ini sangat efektif dalam menghapus kode dan resource yang tidak digunakan, sehingga mengurangi ukuran aplikasi Anda. Namun, kemampuan sebenarnya, yang benar-benar g-R8, adalah sebagai pengoptimal.

Saat Anda mengaktifkan mode penuh dan mengizinkan pengoptimalan, R8 akan melakukan pengoptimalan seluruh program yang mendalam, dengan menulis ulang kode Anda agar lebih efisien secara mendasar. Ini bukan hanya penyesuaian kecil.

Setelah membaca artikel ini, tonton pengantar Performance Spotlight Week untuk pengoptimal R8 di YouTube.

Cara R8 membuat aplikasi Anda berperforma lebih baik

image.png

Mari kita soroti langkah-langkah terbesar yang dilakukan pengoptimal R8 untuk meningkatkan performa aplikasi.

Penghilangan kode yang tidak terpakai (tree shaking) adalah langkah terpenting untuk mengurangi ukuran aplikasi. Selama fase ini, pengoptimal R8 menghapus kode yang tidak digunakan dari library yang menjadi dependensi aplikasi Anda serta kode tidak terpakai dari codebase Anda sendiri.

Penyisipan metode menggantikan panggilan metode dengan kode sebenarnya, yang meningkatkan performa runtime.

Penggabungan class, dan strategi lainnya diterapkan untuk membuat kode lebih ringkas. Semua abstraksi indah Anda, seperti hierarki antarmuka dan class, tidak penting pada saat ini dan kemungkinan akan dihapus.

Minifikasi kode digunakan untuk mengubah nama class, kolom, dan metode menjadi nama yang lebih pendek dan tidak bermakna. Jadi, alih-alih MyDataModel, Anda mungkin akan mendapatkan class yang disebut a. Hal inilah yang menyebabkan kebingungan saat membaca rekaman aktivitas dari aplikasi yang dioptimalkan R8. (Perhatikan bahwa kami telah meningkatkan hal ini di AGP 9.0!)

Penyusutan resource lebih lanjut mengurangi ukuran aplikasi dengan menghapus resource yang tidak digunakan seperti file xml dan drawable.

Dengan menerapkan langkah-langkah ini, pengoptimal R8 meningkatkan waktu startup aplikasi, memungkinkan rendering UI yang lebih lancar, dengan lebih sedikit frame lambat dan macet, serta meningkatkan penggunaan resource di perangkat secara keseluruhan.

Studi Kasus: Peningkatan performa Reddit dengan R8

Sebagai salah satu contoh peningkatan performa yang dapat diberikan R8, mari kita lihat contoh dari Reddit. Setelah mengaktifkan R8 dalam mode penuh, aplikasi Reddit untuk Android mengalami peningkatan performa yang signifikan di berbagai area.

image.png

Teks: Cara R8 meningkatkan performa aplikasi Reddit

Tim mengamati start-up dingin yang 40% lebih cepat, penurunan 30% pada error "Aplikasi Tidak Merespons" (ANR), peningkatan 25% dalam rendering frame, dan penurunan 14% dalam ukuran aplikasi.

Peningkatan ini sangat penting untuk kepuasan pengguna. Startup yang lebih cepat berarti lebih sedikit waktu menunggu dan akses yang lebih cepat ke konten. Lebih sedikit ANR menghasilkan aplikasi yang lebih stabil dan andal, sehingga mengurangi frustrasi pengguna. Rendering frame yang lebih lancar menghilangkan jank UI, sehingga membuat scrolling dan animasi terasa lancar dan responsif. Dampak teknis positif ini juga terlihat jelas dalam sentimen pengguna.

Anda dapat membaca lebih lanjut peningkatan yang mereka lakukan di blog kami.

Efek samping non-teknis penggunaan R8

Selama bekerja sama dengan partner, kami melihat bahwa peningkatan teknis ini berdampak langsung pada kepuasan pengguna dan dapat tercermin dalam retensi, engagement, dan durasi sesi pengguna. Loyalitas pengguna, yang dapat diukur dengan pengguna aktif harian, mingguan, atau bulanan, juga telah dipengaruhi secara positif oleh peningkatan performa teknis. Selain itu, kami melihat rating aplikasi di Play Store meningkat seiring dengan penggunaan R8. Membagikan informasi ini kepada pemilik produk, CTO, dan pengambil keputusan dapat membantu mempercepat performa aplikasi Anda.

image.png

Jadi, mari kita sebut apa adanya: Pengoptimalan performa yang disengaja adalah keunggulan.

Mengarahkan Anda ke aplikasi yang berperforma lebih baik

Kami mendengar bahwa panduan developer kami untuk R8 perlu ditingkatkan. Jadi, kami mulai bekerja. Panduan developer untuk pengoptimal R8 kini jauh lebih mudah ditindaklanjuti dan memberikan panduan komprehensif untuk mengaktifkan dan men-debug R8.

Dokumentasi ini memandu Anda dalam strategi tingkat tinggi untuk adopsi, dengan menekankan pentingnya memilih library yang kompatibel untuk pengoptimalan dan, yang paling penting, mengadopsi fitur R8 secara bertahap untuk memastikan stabilitas. Pendekatan bertahap ini memungkinkan Anda memanfaatkan manfaat R8 dengan aman sekaligus memberikan panduan tentang masalah yang sulit di-debug.

Kami telah memperluas panduan tentang Aturan Penyimpanan secara signifikan, yang merupakan mekanisme utama untuk mengontrol pengoptimal R8. Sekarang kami menyediakan bagian tentang apa itu Aturan Penyimpanan, cara menerapkannya, dan memandu Anda dengan praktik terbaik untuk menulis dan mempertahankannya. Kami juga memberikan contoh dan kasus penggunaan yang praktis dan dapat ditindaklanjuti, yang membantu Anda memahami cara mencegah R8 menghapus kode yang diperlukan saat runtime dengan benar, seperti kode yang diakses melalui refleksi atau penggunaan antarmuka native JNI.

Dokumentasi kini juga mencakup langkah-langkah lanjutan penting dan skenario lanjutan. Kami menambahkan bagian tentang pengujian dan pemecahan masalah, sehingga Anda dapat memverifikasi peningkatan performa dan men-debug potensi masalah yang muncul. Bagian konfigurasi lanjutan menjelaskan cara menargetkan varian build tertentu, menyesuaikan resource mana yang dipertahankan atau dihapus, dan menawarkan petunjuk pengoptimalan khusus untuk penulis library, sehingga Anda dapat menyediakan paket yang dioptimalkan dan kompatibel dengan R8 untuk digunakan oleh developer lain.

Mengaktifkan potensi penuh pengoptimal R8

Pengoptimal R8 secara default menggunakan "mode penuh" sejak versi 8.0 Plugin Android Gradle. Jika project Anda telah dikembangkan selama bertahun-tahun, project tersebut mungkin masih menyertakan tanda lama untuk menonaktifkannya. Periksa file gradle.properties Anda untuk menemukan baris ini dan hapus.

android.enableR8.fullMode=false // delete this line to enable R8's full potential

Sekarang periksa apakah Anda telah mengaktifkan R8 di file build.gradle.kts aplikasi untuk varian rilis. Penyusutan diaktifkan dengan menyetel isMinifyEnabled dan isShrinkResources ke benar. Anda juga dapat meneruskan file konfigurasi default dan kustom pada langkah ini.

  release {

   isMinifyEnabled = true

   isShrinkResources = true

   proguardFiles(

       getDefaultProguardFile("proguard-android-optimize.txt"),

       "keep-rules.pro"

   )

}

Studi Kasus: Peningkatan performa Disney+

Engineer di Disney+ berinvestasi dalam performa aplikasi dan mengoptimalkan pengalaman pengguna aplikasi. Terkadang, perubahan yang tampaknya kecil pun dapat memberikan dampak yang sangat besar. Saat memeriksa konfigurasi R8, tim menemukan bahwa tanda -dontoptimize sedang digunakan. File ini dibawa oleh file konfigurasi default, yang masih digunakan di banyak aplikasi hingga saat ini.

Setelah mengganti proguard-android.txt dengan proguard-android-optimize.txt, tim Disney+ melihat peningkatan signifikan dalam performa aplikasi mereka.

image.png

Setelah versi baru aplikasi yang berisi perubahan ini diluncurkan kepada pengguna, Disney+ melihat peningkatan kecepatan peluncuran aplikasi sebesar 30% dan penurunan ANR yang dirasakan pengguna sebesar 25%. 

Saat ini, banyak aplikasi masih menggunakan file proguard-android.txt yang berisi flag -dontoptimize. Di sinilah peningkatan alat kami berperan.

Dukungan alat

Mulai Android Studio Narwhal 3 Feature Drop, Anda akan melihat peringatan lint saat menggunakan proguard-android.txt 

image.png

Dan mulai AGP 9.0 dan seterusnya, kami sepenuhnya menghentikan dukungan untuk file tersebut. Artinya, Anda harus bermigrasi ke proguard-android-optimize.txt.

Kami juga telah berinvestasi dalam fitur Android Studio baru untuk mempermudah proses men-debug kode yang dioptimalkan R8. Mulai AGP 9.0, Anda kini dapat secara otomatis meng-deobfuscate stack trace dalam logcat Android Studio untuk build yang diproses R8, sehingga membantu Anda menunjukkan baris kode yang menyebabkan masalah, bahkan dalam aplikasi yang dioptimalkan sepenuhnya. Hal ini akan dibahas lebih mendalam dalam postingan blog besok tentang Minggu Sorotan Performa Android ini.

Langkah Berikutnya

Tonton pengantar Performance Spotlight Week untuk pengoptimal R8 di YouTube.

📣 Ikuti Tantangan Performa!

Sekarang saatnya Anda melihat sendiri manfaatnya.

Kami menantang Anda untuk mengaktifkan mode penuh R8 untuk aplikasi Anda hari ini.

  1. Ikuti panduan developer kami untuk memulai: Mengaktifkan pengoptimalan aplikasi.
  2. Periksa apakah Anda masih menggunakan proguard-android.txt dan ganti dengan proguard-android-optimize.txt.
  3. Kemudian, ukur dampaknya. Jangan hanya merasakan perbedaannya, verifikasi perbedaannya. Ukur peningkatan performa Anda dengan mengadaptasi kode dari aplikasi contoh Macrobenchmark kami di GitHub untuk mengukur waktu peluncuran Anda sebelum dan sesudah.

Kami yakin Anda akan melihat peningkatan yang berarti dalam performa aplikasi Anda. Gunakan #optimizationEnabled untuk pertanyaan apa pun tentang cara mengaktifkan atau memecahkan masalah R8. Kami siap membantu.

Sampaikan pertanyaan Anda untuk sesi Tanya Jawab Android pada hari Jumat

Gunakan tag sosial #AskAndroid untuk mengajukan pertanyaan terkait performa. Sepanjang minggu ini, kami memantau pertanyaan Anda dan akan menjawab beberapa pertanyaan dalam sesi Tanya Android tentang performa pada hari Jumat, 21 November. Nantikan besok, saat kita akan membahas lebih dalam tentang proses men-debug dan memecahkan masalah. Namun untuk saat ini, mulailah menggunakan R8 dan dapatkan aplikasi Anda di jalur cepat.

Ditulis oleh:

Lanjutkan membaca