Mengurangi ukuran APK menggunakan R8 dan ProGuard

  • Implementasi R8 dan ProGuard untuk penghapusan kode mati dan pengaburan kelas.
  • Menggunakan Android App Bundles untuk mengoptimalkan pengiriman sumber daya berdasarkan perangkat pengguna.
  • Mengganti aset berukuran besar dengan format yang efisien seperti WebP dan Vector Drawables.
  • Konfigurasi modul dinamis untuk mengunduh fungsionalitas sesuai permintaan.

Mengurangi ukuran APK menggunakan R8 dan ProGuard

Seiring bertambahnya fitur dan semakin kompleksnya aplikasi kita, ukuran file akhirnya akan meningkat secara signifikan. Ini adalah masalah serius, karena jika sebuah aplikasi terlalu besar, Banyak pengguna berpikir dua kali sebelum melakukannya. Bahkan sebelum menekan tombol instal, atau lebih buruk lagi, mereka menghentikan pengunduhan di tengah jalan. Selain itu, aplikasi berukuran besar akan menghabiskan lebih banyak ruang penyimpanan di ponsel dan dapat memengaruhi responsivitas sistem.

Untuk mencegah proyek Anda menjadi "monster" digital, ada beberapa strategi, mulai dari pembersihan kode hingga optimasi gambar. Dalam artikel ini, kita akan membahas secara mendalam cara menggunakan alat-alat seperti... R8 dan ProGuard...serta keajaiban App Bundles, untuk membuat aplikasi Anda seringan dan secepat mungkin, memastikan aplikasi tersebut berfungsi sempurna bahkan pada perangkat kelas bawah.

Memahami apa yang benar-benar penting dalam aplikasi Anda

Sebelum kita mulai, kita perlu mengetahui di mana letak pelumasnya. Biasanya, ukuran aplikasi dibagi menjadi empat bagian utama. Pertama, kita memiliki Kode biner Java atau Kotlin dan perpustakaan mereka, yang biasanya menempati antara 30% dan 40%. Kemudian ada Sumber daya seperti tata letak dan animasidengan berat yang serupa. Kami juga memiliki pustaka asli (C/C++) disusun untuk berbagai arsitektur (15-25%) dan, akhirnya, aset atau file mentah (5-15%).

Untuk menghindari tindakan yang tidak terarah, hal ideal yang harus dilakukan adalah menggunakan... Android Studio Analyzer APK (dengan masuk ke Build > Analyze APK). Alat ini memungkinkan Anda melihat dengan tepat berapa berat kelas DEX, folder sumber daya, dan pustaka asli, sehingga memungkinkan Anda untuk Bandingkan versi saat ini dengan versi sebelumnya. untuk mendeteksi perubahan apa yang memicu peningkatan ukuran file. Untuk mendalami topik ini, akan sangat membantu jika kita memahami hal berikut: hierarki file di android dan bagaimana mereka diorganisir.

Pembersihan Kode: Lompatan dari ProGuard ke R8

Pengurangan kode tidak diragukan lagi merupakan cara paling efektif untuk mengurangi ukuran file. Di sinilah ProGuard dan penerusnya yang modern, R8, berperan. ProGuard telah menjadi standar selama bertahun-tahun, menangani Hapus kelas, field, dan metode yang tidak digunakan., mengoptimalkan bytecode dan mengaburkan nama-nama agar lebih pendek (dan lebih sulit dibaca oleh siapa pun yang ingin meretas kode Anda).

APK, AAB dan APKM
Artikel terkait:
Panduan Lanjutan tentang Perbedaan Antara Format APK, AAB, dan APKM di Android: Semua yang Perlu Anda Ketahui untuk Menginstal Aplikasi Seperti Seorang Profesional

Hari ini, R8 adalah kompiler default. dan melakukan semua yang dilakukan ProGuard, tetapi jauh lebih baik dan lebih cepat. R8 mengimplementasikan sebuah "Mengguncang pohon" lebih agresifFitur ini menggabungkan kelas-kelas dengan fungsi serupa dan mengoptimalkan enumerasi dengan mengonversinya menjadi bilangan bulat. Selain itu, fitur ini memungkinkan desugaring untuk memungkinkan penggunaan fungsi Java 8 modern pada versi Android yang lebih lama.

Konfigurasi teknis di build.gradle

Untuk mengaktifkan optimasi ini di versi rilis, Anda harus mengkonfigurasi file build dengan mengatur minifyEnabled bernilai true dan menghubungkan berkas aturan. Sangat penting untuk menggunakan proguard-android-optimize.txt untuk memanfaatkan sepenuhnya optimasi yang ada. Contoh konfigurasi dasar meliputi: memelihara kelas aplikasi atau mereka yang tercatat dengan @Keep untuk mencegah R8 menghapusnya secara tidak sengaja.

Manajemen aturan untuk pustaka eksternal

Terkadang, R8 terlalu efisien dan menghapus kode yang digunakan melalui refleksi, menyebabkan kesalahan seperti ClassNotFoundExceptionItulah mengapa toko buku seperti Retrofit, OkHttp, atau Gson memerlukan aturan khusus.Sebagai contoh, dengan Gson, sangat penting untuk mempertahankan nama field dalam model data agar deserialisasi JSON tidak gagal. Jika Anda menemukan kesalahan setelah pengaburan, file tersebut pemetaan.txt Ini adalah sekutu terbaik Anda untuk menerjemahkan jejak tumpukan (stack trace) dan mengetahui di mana kegagalan terjadi.

Apakah mungkin membuat APK tanpa menjadi programmer?
Artikel terkait:
Perbedaan antara APKM, APKS, dan XAPK: Panduan lengkap untuk format instalasi Android

Optimalisasi sumber daya yang cerdas

Sumber daya seringkali menjadi area di mana ruang paling banyak terbuang. Teknik sederhana namun ampuh adalah dengan mengaktifkannya. menyusutkanSumber Daya di dalam file build.gradle. Ini menghapus file yang tidak memiliki referensi dalam kode, meskipun penting untuk diketahui bahwa jika Anda memanggil sumber daya secara dinamis menggunakan getIdentifierAnda perlu mendeklarasikannya dalam sebuah file. simpan.xml agar tidak hilang.

Gambar dan Grafik: Less is More (Sederhana Itu Lebih Baik)

Format PNG menyumbang banyak megabyte yang tidak perlu. Rekomendasi saat ini adalah migrasikan semuanya ke format WebPyang menawarkan kompresi jauh lebih unggul sambil mempertahankan kualitas. Anda dapat melakukan konversi ini langsung di Android Studio dengan mengklik kanan pada gambar. Untuk ikon dan bentuk sederhana, sebaiknya gunakan Gambar VektorSatu file XML tunggal menggantikan lima versi dengan kepadatan berbeda, menyederhanakan pemeliharaan dan mengurangi bobot.

Mengurangi bahasa dan kepadatan

Banyak pustaka eksternal dilengkapi dengan terjemahan ke dalam 50 bahasa yang mungkin tidak didukung oleh aplikasi Anda. Untuk mengatasi hal ini, gunakan properti tersebut. resConfigs di defaultConfighanya menentukan bahasa yang benar-benar Anda gunakan (misalnya, "es", "en"Demikian pula, Anda dapat membatasi kepadatan layar yang disertakan jika Anda tahu audiens target Anda menggunakan perangkat modern, dengan menghapus sumber daya. ldpi atau mdpi yang sudah tidak digunakan siapa pun lagi.

Ekstrak APK dari aplikasi
Artikel terkait:
Panduan Lengkap untuk Mengekstrak APK dari Aplikasi Android Apa Pun: Opsi, Keamanan, dan Tutorial

Strategi Distribusi Tingkat Lanjut

Jika Anda ingin mengurangi ukuran APK secara permanen, Anda harus berhenti menggunakan APK universal dan beralih ke... Bundel Aplikasi Android (.aab)Alih-alih mengirimkan file besar berisi semua kemungkinan, Google Play menghasilkan APK yang dioptimalkan untuk setiap perangkat. Jadi, pengguna dengan ponsel ARM64 dan layar xxhdpi... Unduh hanya apa yang dibutuhkan perangkat keras Anda.Mengurangi ukuran unduhan hingga 40%.

Modul Fungsi Dinamis dan Aplikasi Instan

Tidak semua kode harus tersedia sejak detik pertama. Melalui Modul Fitur DinamisAnda dapat memisahkan bagian-bagian aplikasi (seperti editor foto tingkat lanjut atau mode offline) sehingga hanya diunduh saat pengguna mengakses fitur tersebut. Di sisi lain, Aplikasi Instan Mereka memungkinkan orang untuk mencoba aplikasi Anda tanpa menginstalnya, dengan memuat modul dasar yang sangat ringan melalui URL atau tombol Google Play.

Audit ketergantungan dan detail akhir

Terkadang masalahnya bukan pada kode Anda, tetapi pada apa yang Anda impor dari luar. Pustaka seperti Guava atau Jackson bisa sangat memakan sumber daya; pertimbangkan untuk menggantinya dengan... Alternatif yang lebih ringan seperti kotlinx.serialization atau GsonDisarankan juga untuk menggunakan font yang dapat diunduh dari Google Fonts daripada mengemas file TTF yang besar dalam aset, yang dapat menghemat beberapa megabyte jika Anda menggunakan beberapa varian jenis huruf.

Untuk menutup siklus optimasi, ingatlah bahwa Android Go Ini adalah pasar yang berkembang. Jika Anda ingin aplikasi Anda berfungsi optimal pada perangkat dengan RAM kurang dari 1GB, usahakan ukuran file tetap di bawah 40MB. Gunakan Android Lint Mendeteksi sumber daya yang tidak terpakai dan menjaga pembersihan yang konsisten akan memungkinkan aplikasi Anda menjadi efisien, terinstal dengan cepat, dan memberikan pengalaman pengguna yang lancar, terlepas dari kemampuan perangkat.

Pembaruan keamanan Android
Artikel terkait:
Cara mempercepat dan mengoptimalkan Android secara maksimal: panduan lengkap, tips, dan rekomendasi penting

Tambahkan sebagai sumber pilihan di Google