Aracılığıyla paylaş


Uygulama Paketi Boyutu

Bu makalede, Xamarin.Android uygulama paketinin bileşenleri ve geliştirmenin hata ayıklama ve sürüm aşamalarında verimli paket dağıtımı için kullanılabilecek ilişkili stratejiler incelenmiştir.

Genel bakış

Xamarin.Android, verimli bir hata ayıklama ve sürüm dağıtma işlemini korurken paket boyutunu en aza indirmek için çeşitli mekanizmalar kullanır. Bu makalede, Xamarin.Android sürüm ve hata ayıklama dağıtım iş akışına ve Xamarin.Android platformunun küçük uygulama paketleri derlememizi ve yayımlamamızı nasıl sağladığına bakacağız.

Yayın Paketleri

Tam olarak kapsanan bir uygulamayı göndermek için paketin uygulamayı, ilişkili kitaplıkları, içeriği, Mono çalışma zamanını ve gerekli Temel Sınıf Kitaplığı (BCL) derlemelerini içermesi gerekir. Örneğin, varsayılan "Merhaba Dünya" şablonunu alırsak, eksiksiz bir paket derlemesinin içeriği şöyle görünür:

Package size before linker

15,8 MB, istediğimizden daha büyük bir indirme boyutudur. Sorun, uygulamanızı çalıştırmak için gerekli bileşenlerin çoğunu sağlayan mscorlib, System ve Mono.Android'i içeren BCL kitaplıklarıdır. Bununla birlikte, uygulamanızda kullanmayabileceğiniz işlevler de sağlar, bu nedenle bu bileşenleri dışlamak tercih edilebilir.

Dağıtım için bir uygulama oluşturduğunuzda, uygulamayı inceleyen ve doğrudan kullanılmayan tüm kodları kaldıran Bağlama olarak bilinen bir işlemi yürütüriz. Bu işlem, Atık Toplama'nın yığınla ayrılmış bellek için sağladığı işlevlere benzer. Ancak bağlama, nesneler üzerinde çalışmak yerine kodunuz üzerinde çalışır. Örneğin, e-posta göndermek ve almak için System.dll'de tam bir ad alanı vardır, ancak uygulamanız bu işlevi kullanmazsa, bu kod yalnızca alan israfıdır. bağlayıcıyı Merhaba Dünya uygulamasında çalıştırdıktan sonra paketimiz şu şekilde görünür:

Package size after linker

Gördüğümüz gibi, bu işlem kullanılmayan önemli miktarda BCL'yi kaldırır. Son BCL boyutunun uygulamanın gerçekte ne kullandığına bağlı olduğunu unutmayın. Örneğin, ApiDemo adlı daha önemli bir örnek uygulamaya göz atabilirsek, ApiDemo'nun BCL'nin Hello'dan daha fazlasını kullandığından BCL bileşeninin boyutunun arttığını görebiliriz:

ApiDemo package size after linking

Burada gösterildiği gibi, uygulama paketi boyutunuz genellikle uygulamanızdan ve bağımlılıklarından yaklaşık 2,9 MB daha büyük olacaktır.

Hata Ayıklama Paketleri

Hata ayıklama derlemeleri için işler biraz farklı işlenir. Bir cihaza tekrar tekrar yeniden dağıtıldığında uygulamanın mümkün olduğunca hızlı olması gerekir, bu nedenle hata ayıklama paketlerini boyut yerine dağıtım hızı için iyileştiriyoruz.

Android bir paketi kopyalama ve yükleme işlemi nispeten yavaş olduğundan paket boyutunun mümkün olduğunca küçük olmasını istiyoruz. Yukarıda da belirttiğimiz gibi, paket boyutunu en aza indirmenin olası yollarından biri bağlayıcı üzerindendir. Ancak, bağlantı yavaştır ve genellikle uygulamanın yalnızca son dağıtımdan bu yana değişen bölümlerini dağıtmak istiyoruz. Bunu başarmak için uygulamamızı çekirdek Xamarin.Android bileşenlerinden ayırırız.

Cihazda ilk kez hata ayıklayacağız, Paylaşılan Çalışma Zamanı ve Paylaşılan Platform adlı iki büyük paketi kopyalarız. Paylaşılan Çalışma Zamanı Mono Çalışma Zamanı ve BCL'yi, Paylaşılan Platform ise Android API düzeyine özgü derlemeleri içerir:

Shared runtime package size

Bu temel bileşenlerin kopyalanması yalnızca biraz zaman aldığından bir kez yapılır, ancak hata ayıklama modunda çalışan sonraki uygulamaların bunları kullanmasına izin verir. Son olarak, küçük ve hızlı olan gerçek uygulamayı kopyalarız:

The actual application is small

Hızlı Derleme Dağıtımı

Hızlı Derleme Dağıtımı derleme seçeneği, derlemeleri uygulamanın paketine eklemeyerek, derlemeleri doğrudan cihaza yalnızca bir kez yükleyerek ve yalnızca son dağıtımdan bu yana değiştirilmiş dosyalar üzerinden kopyalayarak hata ayıklama yükleme paketinin boyutunu daha da azaltmak için kullanılabilir.

Hızlı Derleme Dağıtımını etkinleştirmek için aşağıdakileri yapın:

  1. Çözüm Gezgini Android Projesi'ne sağ tıklayın ve Seçenekler'i seçin.

  2. Proje Seçenekleri iletişim kutusunda Android Derleme'yi seçin:

    Project Options Android Build

  3. Paylaşılan Mono çalışma zamanı kullan onay kutusunu ve Hızlı derleme dağıtımı onay kutularını işaretleyin:

    Checkboxes selected under Packaging tab

  4. Tamam düğmesine tıklayarak değişiklikleri kaydedin ve Proje Seçenekleri iletişim kutusunu kapatın.

Uygulama bir sonraki hata ayıklama için derlendiğinde derlemeler doğrudan cihaza yüklenir (henüz yüklenmemişlerse) ve cihaza daha küçük bir uygulama paketi (derlemeleri içermez) yüklenir. Bu, uygulamada yapılan değişikliklerin test için çalışır duruma gelmesi için gereken süreyi kısaltır.

Paylaşılan çalışma zamanının ve paylaşılan platformun uzun süredir ilk dağıtımına devam ederek, uygulamada her değişiklik yaptığımızda, hızlı bir değişiklik/dağıtım/çalıştırma döngüsü elde edebilmemiz için yeni sürümü hızlı ve sorunsuz bir şekilde dağıtabiliriz.

Özet

Bu makalede Xamarin.Android Yayın ve Hata Ayıklama profili paketleme modellerini inceledik. Ayrıca, Android için Mono platformunun geliştirmenin hata ayıklama ve sürüm aşamalarında verimli paket dağıtımını kolaylaştırmak için kullandığı stratejileri inceledik.