Diposting oleh Johan Bay – Insinyur Perangkat Lunak

Aplikasi kecil dan cepat adalah kunci untuk pengalaman pengguna yang fantastis. Itulah sebabnya kami membangun R8, pengoptimal aplikasi kami, yang merampingkan aplikasi Anda dengan menghapus kode dan sumber daya yang tidak digunakan, menulis ulang kode untuk mengoptimalkan kinerja runtime, dan banyak lagi.
Dengan rilis versi 8.12.0 dari Android Gradle Plugin (AGP), kami memperkenalkan penyusutan sumber daya yang dioptimalkan, cara yang lebih baik untuk mengecilkan aplikasi Anda dengan R8. Dengan memilih masuk, Anda dapat membuat aplikasi Anda lebih kecil, yang berarti unduhan yang lebih kecil, instalasi yang lebih cepat, dan lebih sedikit memori yang digunakan pada perangkat pengguna Anda. Hasilnya adalah startup yang lebih cepat, rendering yang lebih baik, dan lebih sedikit ANR.
Cara kerjanya
Penyusutan sumber daya untuk aplikasi Android telah ada sejak lama, dengan beberapa perbaikan dilakukan di sepanjang jalan – misalnya, menyusutnya tabel sumber daya (sumber daya.arsc) sekarang menjadi optimasi default.
Pendekatan baru meningkatkan penyusutan sumber daya dengan mengintegrasikannya sepenuhnya dengan pipa optimasi kode yang ada. Dalam pendekatan baru, R8 mengoptimalkan referensi kode dan sumber daya pada saat yang sama memastikan bahwa semua sumber daya yang dirujuk secara eksklusif dari kode yang tidak digunakan diidentifikasi sebagai tidak digunakan dan kemudian dihapus. Ini sepenuhnya menghilangkan kebutuhan akan aturan menjaga tanpa syarat yang dihasilkan oleh AAPT2 (alat pengemasan sumber daya untuk Android) dan memberikan informasi yang jauh lebih halus dan tepat untuk membuang kode dan sumber daya yang tidak digunakan
Ini adalah peningkatan dari pipa yang ada di mana kode dan optimasi sumber daya terpisah. Dalam pipa yang ada, AAPT2 menghasilkan aturan untuk menjaga kelas tanpa syarat direferensikan dari sumber daya. Kemudian, optimasi R8 berjalan dengan aturan Keep ini. Setelah R8 selesai mengoptimalkan dan menyusut kode, ia memindai kode yang tersisa untuk membangun grafik semua sumber daya yang dirujuk secara langsung atau tidak langsung. Namun, aturan AAPT2 tanpa syarat sering menyimpan kode yang tidak digunakan, yang pada gilirannya menyebabkan R8 menyimpan kode yang tidak digunakan dan sumber daya yang tidak digunakan yang dirujuk olehnya.
Cara menggunakannya
Pertama, nyalakan optimasi R8 dengan menyusutnya sumber daya, dengan menggunakan yang berikut di Anda build.gradle.kts mengajukan:
android { buildTypes { release { isMinifyEnabled = true isShrinkResources = true … } } }
Nyalakan pipa penyusutan sumber daya yang dioptimalkan baru dengan menambahkan yang berikut ini ke Anda Gradle.Properties mengajukan:
android.r8.optimizedResourceShrinking=true
Manfaat
Pipa menyusutnya sumber daya yang dioptimalkan telah menunjukkan peningkatan yang signifikan atas implementasi yang ada. Untuk aplikasi yang berbagi sumber daya dan kode yang signifikan di berbagai faktor bentuk vertikal, kami mengukur peningkatan lebih dari 50% dalam ukuran aplikasi. Aplikasi yang lebih kecil juga melihat perbaikan – misalnya, di Androidify kita melihat keuntungan berikut:

Tabel ini menunjukkan peningkatan ukuran progresif karena optimisasi tambahan diaktifkan, dari tidak menyusut hingga menyusutnya sumber daya yang dioptimalkan. Sel -sel ditandai dengan tanda bintang menunjukkan angka yang lebih baik dibandingkan dengan baris sebelumnya. Mengaktifkan R8 memangkas ukuran dex Anda, sambil memungkinkan sumber daya menyusut menghilangkan sumber daya yang tidak digunakan di kedua res
folder dan di tabel sumber daya, tetapi tidak mengubah ukuran DEX lebih lanjut, dan akhirnya, sumber daya yang dioptimalkan menyusut lebih lanjut mengurangi ukuran dengan menghapus sumber daya dan kode DEX karena dapat melacak referensi di seluruh DEX dan batas sumber daya.
Langkah selanjutnya
Dimulai dengan AGP 9.0.0, penyusutan sumber daya yang dioptimalkan menjadi perilaku standar untuk setiap proyek yang menyalakan sumber daya yang dihidupkan.
Lihatlah dokumentasi yang baru diperbarui untuk mencoba menyusutnya sumber daya yang dioptimalkan dan beri tahu kami jika Anda mengalami masalah pada pelacak masalah.
Tingkatkan kinerja aplikasi dengan penyusutan sumber daya yang dioptimalkan