Mengurangi ukuran aplikasi instan

Hanya dengan mengetuk link web, Anda bisa mendapatkan pengalaman native yang kaya dari Google Play Instan Pengguna dapat mencoba aplikasi tanpa menginstal terlebih dahulu, sehingga menciptakan tingkat dan kualitas interaksi yang lebih tinggi. Agar aplikasi instan dapat dimuat secepat halaman web seluler biasa, Anda perlu membuat aplikasi instan yang terstruktur baik dan efisien. Semakin kecil biner aplikasi instan Anda, semakin cepat aplikasi instan dimuat dan semakin lancar pengalaman penggunanya.

Dokumen ini menunjukkan praktik terbaik untuk mengelola struktur dan ukuran biner aplikasi untuk memungkinkan pengalaman aplikasi instan yang lancar. Anda juga dapat menerapkan praktik yang sama ini untuk menguntungkan aplikasi yang dapat diinstal.

Memfaktorkan ulang menjadi beberapa modul fitur

Peningkatan terbesar pada ukuran biner aplikasi terjadi saat Anda memfaktor ulang aplikasi menjadi beberapa modul fitur. Mulai dengan modul fitur dasar, lalu ekstrak alur kerja yang temanya terkait menjadi modul fiturnya sendiri. Tetapkan aktivitas awal dan URL unik ke tiap modul agar pengguna dapat berhasil menyelesaikan alur kerja modul.

Saat Anda membuat modul fitur, pertahankan agar modul fitur dasar tetap sekecil mungkin. Secara khusus perhatikan bagian-bagian aplikasi yang memerlukan akses ke library dependen. Jika hanya satu modul menggunakan library yang disediakan, impor library tersebut dalam modul fitur itu sendiri, bukan modul fitur dasar. Perlu diingat bahwa, untuk merilis aplikasi instan bagi modul fitur tertentu, ukuran total modul fitur tersebut dan modul fitur dasar harus kurang dari 15 MB.

Praktik terbaik

Saat memfaktor ulang aplikasi, ingat praktik terbaik berikut:

Gunakan codebase yang sama untuk kedua jenis aplikasi
Anda dapat menyederhanakan proses pengelolaan project dengan menggunakan codebase modular yang sama untuk membuat kedua aplikasi yang diinstal dan aplikasi instan Anda.
Desain untuk beberapa modul fitur
Meski aplikasi hanya memiliki satu alur kerja dan hanya memerlukan satu modul fitur untuk sekarang, sebaiknya desain aplikasi Anda untuk beberapa modul fitur. Dengan demikian, Anda dapat menambahkan modul yang sudah ada ke aplikasi tanpa memengaruhi ukuran modul fitur asal.
Jangan berfokus pada batas ukuran modul fitur di awal
Batas ukuran modul fitur tidak berlaku untuk biner yang dibuat secara lokal. Anda juga dapat merilis aplikasi instan melalui track pengujian internal, yang menerapkan batas 15 MB pada ukuran modul fitur. Hanya track alfa dan produksi yang menerapkan batas 15 MB.

Update resource aplikasi

Beberapa aplikasi, terutama aplikasi yang memiliki histori codebase yang lebih lama, berisi resource yang tidak digunakan lagi oleh biner aplikasi. Saat mencari cara untuk membuat modul aplikasi lebih kecil, pertimbangkan sumber-sumber umum kode yang tidak diperlukan berikut.

Mengurangi ukuran file gambar

Anda dapat mengurangi secara signifikan ukuran total drawable aplikasi dengan menggunakan format file WebP, bukan PNG. Google Play Instan memberikan dukungan lengkap untuk WebP, termasuk transparansi dan kompresi lossless, sehingga kualitas gambar tetap sama.

Jika memungkinkan, hapus semua persyaratan kompatibilitas mundur untuk menggunakan gambar PNG lainnya. Jika gambar PNG harus digunakan, tempatkan dalam modul yang digunakan untuk membuat dan menginstal aplikasi.

Menghapus bahasa yang tidak digunakan

Jika aplikasi mendukung beberapa bahasa, kurangi resource yang dilokalkan sebanyak mungkin. Langkah ini sangat berguna untuk diselesaikan jika Anda menggunakan library "app compat", seperti android.support.v7.appcompat. Library ini mencakup pesan dalam banyak bahasa, beberapa di antaranya mungkin tidak didukung oleh aplikasi Anda.

Untuk mempelajari lebih lanjut, lihat cara menghapus resource alternatif yang tidak digunakan, terutama bahasa yang tidak digunakan.

Hapus file ekstra

Aplikasi mungkin tidak lagi menggunakan beberapa resource yang telah diimpor ke project. Guna membantu menghapus resource ini, Android Studio memiliki pemeriksaan Lint untuk situasi khusus ini. Untuk menggunakan alat ini, selesaikan langkah-langkah berikut:

  1. Tekan Control+Alt+Shift+I (Command+Alt+Shift+I di Mac OS).
  2. Pada dialog yang muncul, ketik "unused resources".
  3. Pilih opsi Resource yang tidak digunakan untuk memulai proses pemeriksaan penggunaan resource.

Jika resource besar tetap ada di aplikasi Anda, pertimbangkan apakah memungkinkan untuk membuka paketnya dari aplikasi dan mendownloadnya sebagai file mandiri setelah pengguna mulai berinteraksi dengan aplikasi Anda. Penundaan pemuatan gambar semacam ini biasanya memerlukan perubahan kode, tetapi dapat mengurangi ukuran file aplikasi instan Anda secara substansial dengan hanya mendownload resource yang secara eksplisit diminta oleh pengguna.

Hapus library yang tidak digunakan

Seiring bertambahnya cakupan aplikasi, aplikasi dapat berisi dependensi dalam jumlah yang mengejutkan, terutama salah satu jenis berikut:

  • Library native: Library yang berisi kode native yang tidak pernah dijalankan oleh aplikasi.
  • Dependensi transitif: Library yang diandalkan oleh library yang diimpor oleh aplikasi.

Android Studio memiliki beberapa alat yang berguna untuk mengidentifikasi dependensi yang tidak terkait dalam project aplikasi:

Library eksternal

Tampilan Project Android Studio mencakup bagian Library Eksternal.

Bagian ini berisi setiap library yang digunakan oleh aplikasi, termasuk kode native dan semua dependensi transitif. Dalam tampilan ini, cari library yang tidak digunakan atau duplikat yang tidak diperlukan oleh aplikasi.

APK Analyzer

Anda dapat menggunakan alat Penganalisis APK untuk membandingkan build yang berbeda, termasuk build aplikasi instan.

Setelah Anda menentukan library mana yang tidak diperlukan oleh aplikasi, keluarkan library tersebut dengan menambahkan baris yang serupa dengan berikut ke file build Gradle:

<feature_module>/build.gradle

Groovy

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

Kotlin

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

Untuk informasi selengkapnya tentang cara mengurangi ukuran impor total dependensi aplikasi Anda, lihat panduan Gradle untuk Pengelolaan Dependensi.

Menerapkan pengiriman cloud pada aset

Jika Anda perlu menyingkatkan ukuran lebih lanjut, Anda mungkin perlu mengandalkan pengiriman cloud pada aset.