Diposting oleh Maru Ahues Bouza, Developer Relations Partner, Google Play
Android Instant Apps menyediakan pengalaman native yang kaya saat kita menge-tap link web. Pengguna bisa mencoba aplikasi Anda tanpa menginstall terlebih dahulu, yang memungkinkan tingkat dan kualitas interaksi yang lebih tinggi.
Namun, untuk memberi latensi yang berimbang dalam pemuatan halaman mobile web, instant app harus kecil dan terstruktur dengan baik, sehingga bisa didownload dan dijalankan dengan cepat saat merespons tap URL. Mengingat hal itu, kami menganjurkan agar binary yang dimuat dalam merespons URL titik-masuk dibuat sekecil mungkin, maksimum 4MB. Semakin kecil binary, semakin cepat instant app akan dimuat dan semakin halus pengalaman pengguna.
Dokumen ini akan menjelaskan praktik terbaik guna mengelola struktur aplikasi dan ukuran binary untuk memungkinkan pengalaman instant app yang mulus. Praktik ini juga menguntungkan buat aplikasi yang dapat diinstal.

Mengoptimalkan basis kode Anda

Keuntungan ukuran binary terbesar berasal dari pengoptimalan aplikasi Anda ke dalam beberapa modul fitur. Meskipun ukuran dan set fitur Anda saat ini tidak memerlukan banyak fitur, sebaiknya Anda merancangnya demikian, sehingga Anda bisa dengan cepat menambahkan lebih banyak fitur di masa mendatang tanpa memengaruhi ukuran binary dari fitur yang sudah ada. Kami juga sangat merekomendasikan penggunaan basis kode modular terpadu untuk menghasilkan binary aplikasi instan dan aplikasi yang diinstal, karena hal ini akan mengurangi beban pemeliharaan kode dan proyek yang terpisah dan menyediakan struktur proyek yang lebih bersih pada keduanya. Berdasarkan pengalaman mitra akses awal kami, kami yakin ini akan memiliki dampak terbesar terhadap ukuran binary saat mendownload. Namun, ini juga membutuhkan investasi paling banyak.
Untuk mencapai tujuan tersebut, Anda bisa memulai dengan modul (dasar) tunggal dan kemudian mengoptimalkan kode dengan memindahkan bagian yang relevan ke modul fitur. Perhatikan bahwa Anda tidak perlu khawatir tentang ukuran binary saat mengembangkan instant app, karena batas ukuran tidak diberlakukan untuk binary yang dibangun secara lokal. Anda juga bisa mempublikasikan binary melalui Play Developers Console ke jalur Development (jalur khusus untuk penerapan instant app secara cepat selama development), dengan batas ukuran 10MB. [1, 2] Pembatasan 4MB diterapkan setelah output binary Anda keluar dari jalur Development.
Setiap modul fitur bisa memiliki satu (atau beberapa) titik masuk – aktivitas – yang berhubungan dengan URL yang diberikan. Saat memecah basis kode tunggal menjadi beberapa modul, Anda akan memiliki titik masuk yang berbeda untuk fitur yang berbeda, dan platform tersebut akan memuat fitur yang relevan sesuai kebutuhan. Ingatlah, binary total yang akan didownload untuk titik masuk tertentu harus di bawah 4MB, jadi ukuran gabungan dari setiap modul fitur dan modul dasar harus di bawah 4MB.
Disarankan untuk menetapkan pemetaan fitur–aktivitas–titik masuk terlebih dahulu, kemudian menyusun upaya pengoptimalan untuk mengurangi ukuran binary bagi setiap titik masuk.
Pertimbangkan juga bagaimana pustaka Anda disertakan. Bila modul fitur spesifik memerlukan pustaka tertentu, pustaka tersebut sebaiknya hanya disertakan dalam modul fitur, bukannya ditambahkan dalam APK dasar. Ini akan mengurangi ukuran modul dasar. Misalnya, katakanlah Anda memiliki aplikasi yang bergantung pada pustaka X, Y, dan Z. Awalnya, Anda mungkin memasukkan semua pustaka dalam modul dasar dengan menempatkan semua dependensi di file gradle.build dasar. Tetapi kalau kode pada modul fitur memerlukan pustaka Z, bisa dimengerti bila dependensi dipindahkan dari modul dasar ke modul fitur. Ini dapat dilakukan asalkan tidak ada modul fitur lain yang bergantung pada pustaka yang sama. Bila beberapa modul fitur menggunakan pustaka yang sama, sebaiknya disimpan dalam modul dasar.

Pemeriksaan lint

Banyak aplikasi cenderung mendapatkan banyak sumber daya, dan selama periode waktu tertentu, sebagian dari sumber daya itu tidak lagi digunakan. Android Studio memiliki pemeriksaan lint bawaan berdaya guna untuk memeriksa sumber daya yang tidak terpakai. Tekan Alt+Ctrl+Shift+I (Cmd+Alt+Shift+I pada Mac OS), ketik "unused resources" dan jalankan pemeriksaan "Unused resources Android|Lint|Performance". Ini juga membantu mengurangi ukuran APK yang diinstal.

Sumber daya string

Serupa dengan sumber daya, perhatikan string, tidak semuanya dibutuhkan, dan biasanya ukuran aplikasi bisa dikurangi secara signifikan dengan menghapus sumber daya string yang tidak terpakai. Bila aplikasi mendukung banyak bahasa, Anda mungkin mau mengurangi jumlah sumber daya yang dilokalkan, karena ini biasanya menghapus sebagian besar aset sumber daya. Ini sangat penting jika aplikasi hanya mendukung beberapa bahasa tetapi menggunakan pustaka AppCompat, yang memuat pesan dalam banyak bahasa. Gunakan resConfig untuk memilih konfigurasi sumber daya tertentu saja. Petunjuk: biasanya Anda bisa menggunakan "auto" untuk membatasi konfigurasi yang diambil dari pustaka pihak ketiga agar cocok dengan set konfigurasi yang ditetapkan dalam proyek Anda.

Beralih ke WebP

Pengurangan signifikan dari ukuran sumber daya drawable bisa dicapai dengan beralih ke gambar WebP sebagai ganti PNG. Android Instant Apps mendukung semua fitur dalam format WebP (transparansi, lossless, dll.) sehingga tidak akan ada fungsionalitas yang hilang. Harap ingat bahwa ikon peluncur aplikasi harus menggunakan format PNG, tetapi seharusnya ini tidak menjadi masalah karena proyek biasanya menyimpannya di direktori mipmap-. Bila memerlukan solusi kompatibel mundur, Anda harus menyertakan gambar PNG asli dalam modul APK dan ia akan menggantikan sumber daya WebP secara otomatis (set sumber daya utama menggantikan semua sumber daya dari modul fitur/AAR). [4]
Tentu saja, menggunakan drawable vektor membuat Anda mempunyai lebih banyak ruang yang berharga, tetapi menggunakan drawable vektor memerlukan perubahan kode sedangkan trik dengan gambar WebP untuk instant app dan gambar PNG untuk APK dapat diinstal yang disebutkan di atas tidak memerlukan modifikasi kode.

Download aset pada waktu proses

Yang terakhir, ingatlah bahwa secara teknis tidak perlu memasukkan semua sumber daya di APK instant app, karena aplikasi tersebut bisa mendownload aset tambahan pada waktu proses. Pendekatan ini juga memungkinkan agar aplikasi hanya mendownload aset yang dibutuhkan. Modifikasi ini mungkin memerlukan perubahan yang signifikan pada basis kode, namun juga akan membantu Anda mengurangi ukuran APK dapat diinstal.
Bila penyusutan sumber daya tidak menyebabkan ukuran modul fitur aplikasi Anda di bawah batas, sekarang saatnya mencari cara untuk mengurangi ukuran kode.

Review native libraries

Beberapa library pihak ketiga mungkin menyertakan kode asli, yang mungkin sama sekali tidak digunakan dalam instant app. Jadi langkah pertama adalah meninjau pustaka asli yang dimasukkan ke dalam APK dan memastikan instant app hanya memuat kode yang benar-benar digunakan. Ingatlah untuk memeriksa ke dalam APK yang dikompilasi menggunakan APK Analyzer (Build -> APK Analyzer…) [5]

Review external libraries

Berikutnya adalah meninjau daftar semua pustaka eksternal yang terhubung dengan kode aplikasi. Anda mungkin menjumpai beberapa kejutan tak terduga dari dependensi transitif. Dependensi transitif terjadi ketika pustaka yang penting bagi proyek Anda bergantung pada pustaka lain, yang nantinya mungkin bergantung pada pustaka yang lainnya lagi. Terkadang dependensi transitif tersebut mungkin berisi kejutan tak terduga misalnya pustaka yang sama sekali tidak Anda butuhkan (yaitu pustaka pemrosesan JSON yang tidak digunakan dalam kode Anda.) Silakan lihat bagian "Meniadakan dependensi transitif" di Panduan Pengguna Gradle untuk informasi selengkapnya.
Android Studio memiliki beberapa fitur yang berguna untuk menganalisis dependensi eksternal bagi proyek. Selalu membantu bila memulai dengan tampilan Project:
Tampilan "Project" menunjukkan bagian yang disebut "External libraries", tempat Anda bisa melihat semua pustaka yang digunakan proyek, termasuk setiap dependensi transitif:
Untuk mengurangi ukuran fitur dasar lebih banyak lagi, Anda mungkin harus memerhatikan dependensi kode dan pustaka eksternal. Periksa tampilan "Project" dan cari pustaka tidak terpakai yang mungkin merupakan dependensi transitif yang tidak dibutuhkan proyek. Cari juga pustaka yang menyediakan fungsionalitas yang sama (misalnya beberapa pustaka untuk pemuatan/caching gambar). [4]
Anda juga bisa membandingkan versi-versi yang berbeda dengan alat APK Analyzer, dan ini dapat digunakan juga dengan APK instant.
Yang terakhir, tinjau kembali daftar dependensi transitif dan keluarkan yang tidak Anda butuhkan. Gunakan perintah berikut untuk meninjau grafik dependensi: gradle -q :MODULE:dependencies --configuration compile. Penjelasan lebih lanjut bisa ditemukan dalam dokumentasi Gradle.

Tips lainnya

Android Studio 3.0 menyertakan alat App Links Assistant, yang bisa membantu menghasilkan filter intent yang diperlukan, dan membantu memecah proyek menjadi beberapa modul. [3]
Setelah Anda berhasil mengecilkan bundel instant app di bawah batas ukuran, saatnya untuk memastikan bahwa proses pembangunan sudah mutakhir. Pastikan APK instant app dan paket aplikasi ditandatangani menggunakan "APK Signature Scheme v2". Jika Anda menandatangani APK menggunakan fitur SDK versi terbaru, semua harus dilakukan secara otomatis. Namun, jika Anda secara manual menandatangani artefak versi, Anda harus menghindari penggunaan jarsigner dan sebagai gantinya beralih ke apksigner.
Dan beberapa tips berguna untuk menyelaraskan kode aplikasi ke dalam lingkungan waktu proses instan. Harap ingat bahwa memiliki sedikit cabang kode untuk aplikasi dapat diinstal/instan, berdasarkan InstantApps.isInstantApp(...), seharusnya tidak bermasalah dan biasanya tidak membuat kode sumber tidak terbaca (kecuali jika Anda menyalahgunakannya). Selain itu, ketika menggunakan intent berbagi, pastikan kode tersebut tidak secara eksplisit menghitung aplikasi yang terinstal pada perangkat, model keamanan instant app tidak mengizinkannya. Cukup gunakan Intent.createChooser() reguler untuk menampilkan daftar semua tindakan yang dapat dilakukan pengguna.
Tingkat kesulitan pengembangan instant app untuk aplikasi Android yang ada bervariasi antar developer dan sangat bergantung pada bagaimana aplikasi Anda diatur saat ini. Bagi beberapa developer, ini memudahkan karena proyek Anda sudah diatur menjadi beberapa modul. Namun, bagi yang lain, fokusnya adalah mengurangi ukuran aset sumber daya dan kode, dan kami telah memperkenalkan alat dan fitur platform Android di atas untuk membantu Anda melakukannya.

Apa kata developer lain yang menggunakan Android Instant Apps

Yang terakhir, bacalah postingan sangat menarik berikut ini oleh developer yang telah membangun instant app:
Kunjungi situs Developer Android untuk memulai Android Instant Apps dan membaca lebih banyak kisah sukses instant app dari developer lain.