Mengurangi ukuran aplikasi

Ukuran aplikasi yang kecil secara langsung berkaitan dengan keberhasilan download, terutama di pasar negara berkembang yang memiliki koneksi perangkat jaringan yang buruk atau kecepatan jaringan yang rendah. Hal ini dapat mengakibatkan tingkat penggunaan aplikasi yang lebih rendah, yang pada akhirnya menurunkan cakupan dan jangkauan audiens Anda. Namun, ada beberapa cara untuk membantu mengurangi ukuran aplikasi Anda.

Praktik terbaik

Mengupload aplikasi sebagai Android App Bundle

Cara termudah untuk langsung mendapatkan penghematan ukuran aplikasi saat memublikasikan ke Google Play adalah dengan mengupload aplikasi sebagai Android App Bundle, yang merupakan format publikasi baru yang menyertakan semua kode dan resource yang dikompilasi aplikasi Anda, serta menyerahkan pembuatan dan penandatanganan APK kepada Google Play.

Mengurangi ukuran kode runtime

Periksa kode yang tidak digunakan aplikasi Anda pada runtime, misalnya class besar atau kode yang dihasilkan secara otomatis. Pengoptimal kode seperti R8 dapat membantu mengoptimalkan dan mengurangi ukuran kode, tetapi tidak dapat menangani kode yang dilindungi oleh konstanta runtime. Ganti flag pemeriksaan dengan konstanta waktu kompilasi untuk memaksimalkan penggunaan berbagai alat pengoptimalan. Anda dapat mengaktifkan penyingkatan kode dan resource di file konfigurasi gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Menghapus tata letak yang tidak perlu

Gabungkan tata letak yang tidak digunakan dengan perubahan kecil pada UI dan hapus tata letak yang tidak diperlukan untuk mengurangi ukuran kode aplikasi secara keseluruhan. Selain itu, Anda dapat merender tata letak dan tampilan secara dinamis jika memungkinkan. Hal ini memungkinkan Anda untuk menghindari menggambar template statis dan menerapkan tata letak alternatif tanpa overhead teknis.

Mengevaluasi kembali fitur yang jarang digunakan

Dioptimalkan secara khusus untuk Android (edisi Go) dengan menonaktifkan fitur yang memiliki metrik pengguna aktif harian (DAU) rendah. Contohnya mencakup penghapusan animasi yang rumit, file GIF berukuran besar, atau tambahan estetik lainnya yang tidak diperlukan untuk kesuksesan aplikasi.

Menggunakan pengiriman dinamis

Play Feature Delivery menggunakan kemampuan app bundle tingkat lanjut, sehingga memungkinkan fitur tertentu aplikasi Anda untuk dikirim secara kondisional atau didownload secara on demand. Anda dapat menggunakan modul fitur untuk pengiriman kustom. Manfaat unik dari modul fitur adalah kemampuan untuk menyesuaikan bagaimana dan kapan berbagai fitur aplikasi didownload ke perangkat yang menjalankan Android 5.0 (API level 21) atau yang lebih tinggi.

Mengurangi ukuran string yang dapat diterjemahkan

Anda dapat menggunakan properti resConfigs Android Gradle untuk menghapus file resource alternatif yang tidak diperlukan aplikasi. Jika Anda menggunakan library yang menyertakan resource bahasa (seperti AppCompat atau Layanan Google Play), aplikasi Anda akan menyertakan semua string bahasa yang diterjemahkan untuk pesan library, bagaimanapun terjemahan aplikasinya. Jika hanya ingin mempertahankan bahasa yang resmi didukung aplikasi, Anda dapat menentukannya menggunakan properti resConfig. Setiap resource bahasa yang tidak ditentukan akan dihapus.

Untuk membatasi resource bahasa hanya ke bahasa Inggris dan Prancis, Anda dapat mengedit defaultConfig seperti yang ditunjukkan di bawah ini:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Menggunakan terjemahan selektif

Jika string tertentu tidak terlihat di UI aplikasi, Anda tidak perlu menerjemahkannya. String untuk tujuan proses debug, pesan pengecualian, atau URL harus berupa string literal dalam kode, bukan resource.

Misalnya, Anda tidak perlu repot menerjemahkan URL.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Anda mungkin mengenali &lt; dan &gt, karena keduanya adalah karakter escape untuk < dan >. Keduanya diperlukan di sini karena jika Anda menempatkan tag <a> di dalam tag <string>, compiler resource Android akan menghapusnya karena tidak mengenali tag tersebut. Namun, hal ini berarti Anda menerjemahkan tag HTML dan URL ke 78 bahasa. Sebagai gantinya, Anda dapat menghapus HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Menggabungkan biner native dengan dependensi umum

Jika aplikasi Anda memiliki implementasi Java Native Interface (JNI) yang berbeda dengan dependensi dasar umum, berbagai biner akan meningkatkan ukuran APK dengan komponen yang redundan. Anda dapat menggabungkan beberapa biner JNI ke dalam satu file biner JNI dengan tetap memisahkan file Java dan JNI. Hal ini dapat mengurangi ukuran APK Anda secara drastis.