Bagikan melalui


Ukuran Paket Aplikasi

Artikel ini memeriksa bagian konstituen dari paket aplikasi Xamarin.Android dan strategi terkait yang dapat digunakan untuk penyebaran paket yang efisien selama tahap debug dan rilis pengembangan.

Gambaran Umum

Xamarin.Android menggunakan berbagai mekanisme untuk meminimalkan ukuran paket sambil mempertahankan proses penyebaran debug dan rilis yang efisien. Dalam artikel ini, kita melihat alur kerja rilis Xamarin.Android dan penyebaran debug dan bagaimana platform Xamarin.Android memastikan bahwa kita membangun dan merilis paket aplikasi kecil.

Paket Rilis

Untuk mengirim aplikasi yang sepenuhnya terkandung, paket harus menyertakan aplikasi, pustaka terkait, konten, runtime Mono, dan rakitan Pustaka Kelas Dasar (BCL) yang diperlukan. Misalnya, jika kita mengambil templat "Halo Dunia" default, konten build paket lengkap akan terlihat seperti ini:

Package size before linker

15,8 MB adalah ukuran unduhan yang lebih besar dari yang kita inginkan. Masalahnya adalah pustaka BCL, karena mencakup mscorlib, System, dan Mono.Android, yang menyediakan banyak komponen yang diperlukan untuk menjalankan aplikasi Anda. Namun, mereka juga menyediakan fungsionalitas yang mungkin tidak Anda gunakan dalam aplikasi Anda, sehingga mungkin lebih baik untuk mengecualikan komponen-komponen ini.

Ketika kami membangun aplikasi untuk distribusi, kami menjalankan proses, yang dikenal sebagai Penautan, yang memeriksa aplikasi dan menghapus kode apa pun yang tidak digunakan secara langsung. Proses ini mirip dengan fungsionalitas yang disediakan Pengumpulan Sampah untuk memori yang dialokasikan tumpukan. Tetapi alih-alih mengoperasikan objek, penautan beroperasi melalui kode Anda. Misalnya, ada seluruh namespace di System.dll untuk mengirim dan menerima email, tetapi jika aplikasi Anda tidak menggunakan fungsionalitas ini, kode tersebut hanya membuang-buang ruang. Setelah menjalankan linker pada aplikasi Halo Dunia, paket kami sekarang terlihat seperti ini:

Package size after linker

Seperti yang kita lihat, ini menghapus sejumlah besar BCL yang tidak digunakan. Perhatikan bahwa ukuran BCL akhir tergantung pada apa yang sebenarnya digunakan aplikasi. Misalnya, jika kita melihat aplikasi sampel yang lebih substansial yang disebut ApiDemo, kita dapat melihat bahwa komponen BCL telah meningkat ukurannya karena ApiDemo menggunakan lebih banyak BCL daripada Halo, Dunia tidak:

ApiDemo package size after linking

Seperti yang diilustrasikan di sini, ukuran paket aplikasi Anda umumnya akan sekitar 2,9 MB lebih besar dari aplikasi Anda dan dependensinya.

Paket Debug

Hal-hal ditangani sedikit berbeda untuk build debug. Saat menyebarkan ulang berulang kali ke perangkat, aplikasi harus secepat mungkin, jadi kami mengoptimalkan paket debug untuk kecepatan penyebaran daripada ukuran.

Android relatif lambat untuk menyalin dan menginstal paket, jadi kami ingin ukuran paket sesempit mungkin. Seperti yang kita bahas di atas, salah satu cara yang mungkin untuk meminimalkan ukuran paket adalah melalui linker. Namun, penautan lambat dan kami umumnya hanya ingin menyebarkan bagian aplikasi yang telah berubah sejak penyebaran terakhir. Untuk mencapai hal ini, kami memisahkan aplikasi kami dari komponen inti Xamarin.Android.

Pertama kali melakukan debug pada perangkat, kami menyalin dua paket besar yang disebut Shared Runtime dan Shared Platform. Shared Runtime berisi Mono Runtime dan BCL, sementara Shared Platform berisi rakitan khusus tingkat Android API:

Shared runtime package size

Menyalin komponen inti ini hanya dilakukan sekali karena membutuhkan sedikit waktu, tetapi memungkinkan aplikasi berikutnya yang berjalan dalam mode debug untuk menggunakannya. Akhirnya, kami menyalin aplikasi aktual, yang kecil dan cepat:

The actual application is small

Penyebaran Perakitan Cepat

Opsi build Fast Assembly Deployment dapat digunakan untuk mengurangi ukuran paket penginstalan debug lebih lanjut dengan tidak menyertakan rakitan dalam paket aplikasi, menginstal rakitan langsung pada perangkat hanya sekali dan hanya menyalin file yang telah dimodifikasi sejak penyebaran terakhir.

Untuk mengaktifkan Penyebaran Rakitan Cepat, lakukan hal berikut:

  1. Klik kanan pada Proyek Android di Penjelajah Solusi dan pilih Opsi.

  2. Dari dialog Opsi Proyek pilih Android Build :

    Project Options Android Build

  3. Centang kotak centang Gunakan runtime Mono bersama dan kotak centang Penyebaran rakitan cepat:

    Checkboxes selected under Packaging tab

  4. Klik tombol OK untuk menyimpan perubahan dan menutup dialog Opsi Proyek.

Lain kali aplikasi dibangun untuk debug, rakitan akan diinstal langsung pada perangkat (jika belum) dan paket aplikasi yang lebih kecil (yang tidak termasuk rakitan) akan diinstal pada perangkat. Ini akan mempersingkat waktu yang diperlukan untuk mendapatkan perubahan pada aplikasi dan berjalan untuk pengujian.

Dengan bertahan lama penyebaran pertama runtime bersama dan platform bersama, setiap kali kita membuat perubahan pada aplikasi, kita dapat menyebarkan versi baru dengan cepat dan tanpa rasa sakit, sehingga kita dapat memiliki siklus perubahan/penyebaran/eksekusi yang cepat.

Ringkasan

Dalam artikel ini kami memeriksa faset kemasan profil Rilis Xamarin.Android dan Debug. Selain itu, kami melihat strategi yang digunakan platform Mono untuk Android untuk memfasilitasi penyebaran paket yang efisien selama tahap debug dan rilis pengembangan.