Sdílet prostřednictvím


Velikost balíčku aplikace

Tento článek se zabývá základními částmi balíčku aplikace Xamarin.Android a přidruženými strategiemi, které lze použít k efektivnímu nasazení balíčků během fází vývoje ladění a vydání.

Přehled

Xamarin.Android používá různé mechanismy, které minimalizují velikost balíčku a současně udržují efektivní proces nasazení ladění a vydávání. V tomto článku se podíváme na pracovní postup nasazení verze Xamarin.Android a ladění a na to, jak platforma Xamarin.Android zajišťuje sestavování a vydávání malých balíčků aplikací.

Balíčky vydaných verzí

Chcete-li odeslat plně obsaženou aplikaci, musí balíček obsahovat aplikaci, přidružené knihovny, obsah, modul runtime Mono a požadovaná sestavení BCL (Base Class Library). Pokud například vezmeme výchozí šablonu "Hello World", bude obsah kompletního sestavení balíčku vypadat takto:

Package size before linker

15,8 MB je větší velikost stahování, než bychom chtěli. Problémem jsou knihovny BCL, protože zahrnují mscorlib, System a Mono.Android, které poskytují mnoho nezbytných komponent pro spuštění vaší aplikace. Poskytují ale také funkce, které možná ve vaší aplikaci nepoužíváte, takže je vhodné tyto komponenty vyloučit.

Když sestavíme aplikaci pro distribuci, spustíme proces označovaný jako Propojení, který aplikaci prozkoumá a odebere veškerý kód, který se přímo nepoužívá. Tento proces se podobá funkci, kterou uvolňování paměti poskytuje pro paměť přidělenou haldou. Místo provozu nad objekty ale propojení funguje přes váš kód. Například v System.dll existuje celý obor názvů pro odesílání a přijímání e-mailů, ale pokud vaše aplikace tuto funkci nepoužívá, znamená to, že tento kód právě plýtvá mezerou. Po spuštění linkeru v aplikaci Hello World teď náš balíček vypadá takto:

Package size after linker

Jak je vidět, odebere se tím značné množství seznamu BCL, který se nepoužíval. Všimněte si, že konečná velikost seznamu BCL závisí na tom, co aplikace skutečně používá. Pokud se například podíváme na podstatnější ukázkovou aplikaci s názvem ApiDemo, vidíme, že se komponenta BCL zvětšila, protože ApiDemo používá více seznamu BCL než Hello, World:

ApiDemo package size after linking

Jak je znázorněno zde, velikost balíčku vaší aplikace bude obecně asi 2,9 MB větší než vaše aplikace a její závislosti.

Ladění balíčků

U sestavení ladění se věci zpracovávají trochu jinak. Při opakovaném nasazení zařízení musí být aplikace co nejrychleji, takže optimalizujeme ladicí balíčky pro rychlost nasazení místo velikosti.

Android je poměrně pomalý ke kopírování a instalaci balíčku, takže chceme, aby velikost balíčku byla co nejmenší. Jak jsme si probrali výše, jedním z možných způsobů, jak minimalizovat velikost balíčku, je prostřednictvím linkeru. Propojení je ale pomalé a obecně chceme nasadit jenom části aplikace, které se od posledního nasazení změnily. Abychom toho dosáhli, oddělujeme aplikaci od základních komponent Xamarin.Android.

Při prvním ladění na zařízení zkopírujeme dva velké balíčky s názvem Shared Runtime a Shared Platform. Sdílený modul runtime obsahuje mono runtime a seznam BCL, zatímco sdílená platforma obsahuje specifická sestavení na úrovni rozhraní Android API:

Shared runtime package size

Kopírovánítěchtoch zařízení se provádí jen jednou, protože trvá poměrně dlouho, ale umožňuje, aby je všechny následné aplikace spuštěné v režimu ladění využívaly. Nakonec zkopírujeme skutečnou aplikaci, která je malá a rychlá:

The actual application is small

Rychlé nasazení sestavení

Možnost sestavení nasazení rychlého sestavení lze použít k dalšímu zmenšení velikosti instalačního balíčku ladění tak, že do balíčku aplikace nezačte sestavení, přičemž sestavení se instalují přímo do zařízení pouze jednou a kopírují pouze soubory, které byly změněny od posledního nasazení.

Pokud chcete povolit rychlé nasazení sestavení, postupujte takto:

  1. V Průzkumník řešení klikněte pravým tlačítkem na Projekt Androidu a vyberte Možnosti.

  2. V dialogovém okně Možnosti projektu vyberte Build androidu:

    Project Options Android Build

  3. Zaškrtněte políčko Použít sdílený modul runtime Mono a zaškrtávací políčka Rychlé nasazení sestavení:

    Checkboxes selected under Packaging tab

  4. Kliknutím na tlačítko OK uložte změny a zavřete dialogové okno Možnosti projektu.

Při příštím sestavení aplikace pro ladění se sestavení nainstalují přímo do zařízení (pokud ještě nebyly) a na zařízení se nainstaluje menší balíček aplikace (který neobsahuje sestavení). Tím se zkracuje doba potřebnou k tomu, aby se změny aplikace zprovozněly a spustily pro testování.

Díky trvalému dlouhému prvnímu nasazení sdíleného modulu runtime a sdílené platformy můžeme při každé změně aplikace rychle a bezbolestně nasadit novou verzi, abychom mohli mít rychlý cyklus změn/nasazení/spuštění.

Shrnutí

V tomto článku jsme prozkoumali omezující vlastnosti balení profilů Xamarin.Android Release a Debug. Dále jsme se podívali na strategie, které platforma Mono pro Android používá k usnadnění efektivního nasazení balíčků během fází vývoje ladění a vydávání.