Peristiwa &Program
Menggunakan R8 untuk menyusutkan, mengoptimalkan, dan mempercepat aplikasi Anda
Waktu baca: 5 menit
Menggunakan R8 untuk menyusutkan, mengoptimalkan, dan mempercepat aplikasi Anda
Selamat datang di hari pertama Android Performance Spotlight Week.
Kita akan memulai dengan satu perubahan yang paling berdampak dan tidak memerlukan banyak upaya untuk meningkatkan performa aplikasi Anda: mengaktifkan pengoptimal R8 dalam mode penuh.
Anda mungkin sudah mengetahui R8 sebagai alat untuk menyusutkan ukuran aplikasi. Alat ini sangat baik dalam menghapus kode dan resource yang tidak digunakan, sehingga mengurangi ukuran aplikasi Anda. Namun, kekuatan sebenarnya, yang membuat alat ini g-R8 , adalah sebagai pengoptimal.
Saat Anda mengaktifkan mode penuh dan mengizinkan pengoptimalan, R8 akan melakukan pengoptimalan program secara mendalam dan menyeluruh, serta menulis ulang kode Anda agar pada dasarnya lebih efisien. Ini bukan hanya penyesuaian kecil.
Setelah membaca artikel ini, lihat pengantar Performance Spotlight Week ke pengoptimal R8 di YouTube.
Cara R8 membuat aplikasi Anda lebih berperforma
Mari kita lihat langkah-langkah terbesar yang dilakukan pengoptimal R8 untuk meningkatkan performa aplikasi.
Tree shaking adalah langkah terpenting untuk mengurangi ukuran aplikasi. Selama fase ini, pengoptimal R8 akan menghapus kode yang tidak digunakan dari library yang digunakan aplikasi Anda serta kode yang tidak digunakan dari codebase Anda sendiri.
Method inlining mengganti panggilan metode dengan kode sebenarnya, yang meningkatkan performa runtime.
Class merging, dan strategi lainnya diterapkan untuk membuat kode lebih ringkas. Semua abstraksi indah Anda, seperti antarmuka dan hierarki class tidak relevan pada tahap ini dan kemungkinan akan dihapus.
Code minification digunakan untuk mengubah nama class, kolom, dan metode menjadi nama yang lebih pendek dan tidak bermakna. Jadi, bukan MyDataModel, Anda mungkin akan mendapatkan class bernama a. Hal inilah yang menyebabkan kebingungan terbesar saat membaca stack trace dari aplikasi yang dioptimalkan R8. (Perhatikan bahwa kami telah meningkatkan hal ini di AGP 9.0!)
Resource shrinking 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 yang lambat dan terhenti, 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.
Keterangan: Cara R8 meningkatkan performa aplikasi Reddit
Tim mengamati startup dingin 40% lebih cepat, pengurangan 30% pada error "Aplikasi Tidak Merespons" (ANR), peningkatan 25% pada rendering frame, dan pengurangan 14% pada ukuran aplikasi.
Peningkatan ini sangat penting untuk kepuasan pengguna. Startup yang lebih cepat berarti waktu tunggu yang lebih singkat dan akses yang lebih cepat ke konten. ANR yang lebih sedikit 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 tentang peningkatan ini di blog kami.
Efek samping non-teknis dari penggunaan R8
Selama bekerja dengan partner, kami melihat bahwa peningkatan teknis ini memiliki dampak 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 dipengaruhi secara positif oleh peningkatan performa teknis. Selain itu, kami melihat rating aplikasi di Play Store meningkat seiring dengan adopsi R8. Membagikan hal ini kepada pemilik produk, CTO, dan pengambil keputusan dapat membantu mempercepat performa aplikasi Anda.
Jadi, mari kita sebut apa adanya: Pengoptimalan performa yang disengaja adalah keutamaan.
Memandu Anda ke aplikasi yang lebih berperforma
Kami mendengar bahwa panduan developer untuk R8 perlu ditingkatkan. Jadi, kami mulai bekerja. Panduan developer untuk pengoptimal R8 kini jauh lebih dapat ditindaklanjuti dan memberikan panduan komprehensif untuk mengaktifkan dan men-debug R8.
Dokumentasi ini memandu Anda tentang strategi tingkat tinggi untuk adopsi, menekankan pentingnya memilih library yang ramah pengoptimalan dan, yang terpenting, mengadopsi fitur R8 secara bertahap untuk memastikan stabilitas. Pendekatan bertahap ini memungkinkan Anda membuka 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 menyediakan contoh dan kasus penggunaan 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 ini kini juga mencakup langkah-langkah tindak lanjut 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 disimpan atau dihapus, dan menawarkan petunjuk pengoptimalan khusus untuk penulis library, sehingga memastikan Anda dapat menyediakan paket yang dioptimalkan dan ramah R8 untuk digunakan developer lain.
Mengaktifkan potensi penuh pengoptimal R8
Pengoptimal R8 secara default menggunakan "mode penuh" sejak Android Gradle Plugin versi 8.0. Jika project Anda telah dikembangkan selama bertahun-tahun, project tersebut mungkin masih menyertakan flag 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. Fitur ini diaktifkan dengan menetapkan isMinifyEnabled dan isShrinkResources ke true. 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 besar. Saat memeriksa konfigurasi R8, tim menemukan bahwa flag -dontoptimize sedang digunakan. Flag ini disertakan oleh file konfigurasi default, yang masih digunakan di banyak aplikasi saat ini.
Setelah mengganti proguard-android.txt dengan proguard-android-optimize.txt, tim Disney+ melihat peningkatan signifikan dalam performa aplikasi mereka.
Setelah versi baru aplikasi yang berisi perubahan ini diluncurkan kepada pengguna, Disney+ melihat startup aplikasi 30% lebih cepat dan ANR yang dirasakan pengguna 25% lebih sedikit.
Saat ini, banyak aplikasi masih menggunakan file proguard-android.txt yang berisi flag -dontoptimize. Di sinilah peningkatan alat kami berperan.
Dukungan alat
Mulai dari Android Studio Narwhal 3 Feature Drop, Anda akan melihat peringatan lint saat menggunakan proguard-android.txt
Dan mulai AGP 9.0, 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 membuat proses men-debug kode yang dioptimalkan R8 menjadi lebih mudah. Mulai AGP 9.0, Anda kini dapat otomatis meng-deobfuscate stack trace dalam logcat Android Studio untuk build yang diproses R8, sehingga membantu Anda menentukan baris kode yang menyebabkan masalah, bahkan dalam aplikasi yang sepenuhnya dioptimalkan. Hal ini akan dibahas lebih mendalam dalam postingan blog besok di Android Performance Spotlight Week ini.
Langkah Berikutnya
Lihat pengantar Performance Spotlight Week ke pengoptimal R8 di YouTube.
📣 Ikuti Performance Challenge!
Sekarang saatnya melihat manfaatnya sendiri.
Kami menantang Anda untuk mengaktifkan mode penuh R8 untuk aplikasi Anda hari ini.
- Ikuti panduan developer kami untuk memulai: Mengaktifkan pengoptimalan aplikasi.
- Periksa apakah Anda masih menggunakan
proguard-android.txtdan ganti denganproguard-android-optimize.txt. - Kemudian, ukur dampaknya. Jangan hanya merasakan perbedaannya, verifikasi. Ukur peningkatan performa Anda dengan mengadaptasi kode dari aplikasi contoh Macrobenchmark kami di GitHub untuk mengukur waktu startup Anda sebelum dan sesudah.
Kami yakin Anda akan melihat peningkatan yang berarti dalam performa aplikasi Anda. Gunakan #optimizationEnabled untuk pertanyaan apa pun tentang mengaktifkan atau memecahkan masalah R8. Kami selalu siap membantu.
Ajukan pertanyaan Anda untuk sesi Ask Android pada hari Jumat
Gunakan tag sosial #AskAndroid untuk mengajukan pertanyaan terkait performa. Sepanjang minggu ini, kami akan memantau pertanyaan Anda dan akan menjawab beberapa pertanyaan dalam sesi Ask Android tentang performa pada hari Jumat, 21 November. Nantikan postingan besok, tempat kami akan membahas lebih mendalam tentang proses men-debug dan pemecahan masalah. Namun untuk saat ini, mulailah menggunakan R8 dan percepat aplikasi Anda.
Lanjutkan membaca
-
Peristiwa &Program
Mulai dari kemampuan dasar pengoptimal R8 dan Pengoptimalan yang Dipandu Profil, hingga peningkatan performa dengan Jetpack Compose, hingga panduan baru tentang cara meningkatkan performa aplikasi, kami telah membahas alat yang tidak memerlukan banyak upaya dan berdampak besar yang Anda butuhkan untuk membuat aplikasi berperforma.
Ben Weiss, Sara Hamilton • Waktu baca: 3 menit
-
Peristiwa &Program
Kami membuka pendaftaran untuk Android XR Developer Catalyst Program, sebuah inisiatif khusus untuk mempercepat pengembangan aplikasi Android XR yang siap diluncurkan dalam satu tahun ke depan.
Waktu baca: 1 menit
-
Peristiwa &Program
Jadwal Google I/O telah hadir!
Waktu baca: 1 menit
Terus dapatkan informasi
Dapatkan insight pengembangan Android terbaru yang dikirim ke kotak masuk Anda setiap minggu.