Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Po naprogramování a otestování aplikace je nutné připravit balíček pro distribuci. Prvním úkolem při přípravě tohoto balíčku je sestavit aplikaci pro vydání, což zahrnuje hlavně nastavení některých atributů aplikace.
Pomocí následujících kroků sestavte aplikaci pro vydání:
Zadejte ikonu aplikace – Každá aplikace Xamarin.Android by měla mít zadanou ikonu aplikace. I když to technicky není nutné, některé trhy, jako je Google Play, vyžadují.
Verze aplikace – Tento krok zahrnuje inicializaci nebo aktualizaci informací o správě verzí. To je důležité pro budoucí aktualizace aplikací a zajistit, aby uživatelé věděli, jakou verzi aplikace nainstalovali.
Zmenšete APK – Velikost konečného APK lze podstatně snížit použitím linkeru Xamarin.Android pro spravovaný kód a ProGuard pro bajtový kód Javy.
Ochrana aplikace – Zabrání uživatelům nebo útočníkům v ladění, manipulaci nebo zpětné analýze aplikace zakázáním ladění, obfuscováním spravovaného kódu, přidáním anti-debug a anti-manipulací a použitím nativní kompilace.
Nastavit vlastnosti balení – Vlastnosti balení řídí vytvoření balíčku aplikace pro Android (APK). Tento krok optimalizuje APK, chrání jeho prostředky a podle potřeby modularizuje balení. Kromě toho můžete uživatelům poskytnout sadu aplikací pro Android, která je optimalizovaná pro jejich zařízení.
Kompilace – tento krok zkompiluje kód a prostředky pro ověření, že se sestavuje v režimu vydání.
Archiv pro publikování – Tento krok sestaví aplikaci a umístí ji do archivu pro podepisování a publikování.
Každý z těchto kroků je podrobněji popsaný níže.
Určení ikony aplikace
Důrazně doporučujeme, aby každá aplikace Xamarin.Android určila ikonu aplikace. Některé obchody s aplikacemi neumožňují publikování aplikace pro Android bez něj. Vlastnost Icon atributu Application slouží k určení ikony aplikace pro projekt Xamarin.Android.
Ve Visual Studio 2017 a novějších zadejte ikonu aplikace v části Manifest AndroiduVlastností projektu, jak ukazuje následující snímek obrazovky.
V těchto příkladech odkazuje na soubor ikony umístěný v umístění Resources/drawable/icon.png (všimněte si, @drawable/icon že přípona .png není součástí názvu prostředku). Tento atribut lze deklarovat také v souboru Properties\AssemblyInfo.cs, jak je znázorněno v tomto ukázkovém fragmentu kódu:
[assembly: Application(Icon = "@drawable/icon")]
Za normálních okolností je using Android.App deklarován v horní části AssemblyInfo.cs (obor názvů atributu Application je Android.App); tento příkaz však možná budete muset přidat using, pokud ještě není k dispozici.
Verze aplikace
Správa verzí je důležitá pro údržbu a distribuci aplikací pro Android. Bez nějakého druhu správy verzí je obtížné určit, jestli nebo jak se má aplikace aktualizovat. Při správě verzí rozpozná Android dva různé typy informací:
Číslo verze – celočíselná hodnota (interně použitá androidem a aplikací), která představuje verzi aplikace. Většina aplikací začíná touto hodnotou nastavenou na 1 a pak se zvýší o každé sestavení. Tato hodnota nemá žádný vztah nebo spřažení s atributem názvu verze (viz níže). Aplikace a služby publikování by neměly tuto hodnotu zobrazovat uživatelům. Tato hodnota je uložena v souboruAndroidManifest.xml jako
android:versionCode.Název verze – řetězec, který se používá pouze pro komunikaci informací uživateli o verzi aplikace (jak je nainstalováno na konkrétním zařízení). Název verze se má zobrazovat uživatelům nebo v Google Play. Tento řetězec není interně používán Androidem. Název verze může být libovolná řetězcová hodnota, která by uživateli pomohla identifikovat sestavení nainstalované na svém zařízení. Tato hodnota je uložena v souboruAndroidManifest.xml jako
android:versionName.
V sadě Visual Studio lze tyto hodnoty nastavit v části Manifest android projektu Vlastnosti projektu, jak je znázorněno na následujícím snímku obrazovky:
Zmenšit APK
Soubory APK Xamarin.Android je možné zmenšit pomocí kombinace linkeru Xamarin.Android, který odebere nepotřebný spravovaný kód, a nástroje ProGuard z sady Android SDK, který odstraní nepoužívaný Java bytecode. Proces sestavení nejprve pomocí linkeru Xamarin.Android optimalizuje aplikaci na úrovni spravovaného kódu (C#) a později použije ProGuard (pokud je povoleno) k optimalizaci APK na úrovni bajtového kódu Java.
Konfigurace překladače Linker
Režim vydání vypíná sdílený runtime a zapíná propojení, aby aplikace obsahovala pouze ty části Xamarin.Android, které jsou vyžadovány za běhu. Linker v Xamarin.Android používá statickou analýzu k určení, která sestavení, typy a členy typu se používají nebo na které odkazují aplikace Xamarin.Android. Linker pak zahodí všechna nepoužívané sestavení, typy a členy, které se nepoužívají (nebo na které se odkazují). To může vést k významnému snížení velikosti balíčku. Představte si například ukázku HelloWorld, která zaznamenává snížení konečné velikosti svého APK o 83%.
Konfigurace: Žádné – Xamarin.Android 4.2.5 Velikost = 17,4 MB.
Konfigurace: Pouze sestavení sady SDK – velikost Xamarin.Android 4.2.5 = 3,0 MB.
Nastavení možností linkeru v části Možnosti androidu ve vlastnostech projektu:
Rozevírací nabídka Propojování nabízí následující možnosti pro řízení linkeru:
Žádné – Tím se vypne linker; neprovádí se žádné propojení.
Pouze sestavení SDK – To propojí pouze ta sestavení, která vyžaduje Xamarin.Android. Jiná sestavení nebudou propojena.
Sdk a uživatelská sestavení – Tím se propojí všechna sestavení, která aplikace vyžaduje, a ne jenom ta, která vyžaduje Xamarin.Android.
Propojení může způsobit některé nežádoucí vedlejší účinky, takže je důležité, aby aplikace byla znovu testována v režimu vydání na fyzickém zařízení.
ProGuard
ProGuard je nástroj sady Android SDK, který propojuje a obfuskuje kód Java. ProGuard se obvykle používá k vytváření menších aplikací tím, že snižuje nároky na velké zahrnuté knihovny (například služby Google Play) ve vašem APK. ProGuard odebere nepoužívané bajtové kódy Javy, což zmenší výslednou aplikaci. Například použití Nástroje ProGuard u malých aplikací Xamarin.Android obvykle dosahuje přibližně 24% zmenšení velikosti – použití Nástroje ProGuard u větších aplikací s více závislostmi knihoven obvykle dosahuje ještě větší redukce velikosti.
ProGuard není alternativou k linkeru Xamarin.Android. Linker Xamarin.Android odkazuje spravovaný kód, zatímco ProGuard propojuje bajtové kódy Java. Proces sestavení nejprve pomocí linkeru Xamarin.Android optimalizuje spravovaný kód (C#) v aplikaci a později použije ProGuard (pokud je povoleno) k optimalizaci APK na úrovni bajtového kódu Java.
Když je zaškrtnuto políčko Povolit ProGuard , Xamarin.Android spustí nástroj ProGuard na výsledném APK. Konfigurační soubor ProGuard je generován a používán ProGuardem při sestavování. Xamarin.Android také podporuje vlastní akce sestavení ProguardConfiguration . Do projektu můžete přidat vlastní konfigurační soubor ProGuard, kliknout na něj pravým tlačítkem myši a vybrat ho jako akci sestavení, jak je znázorněno v tomto příkladu:
ProGuard je ve výchozím nastavení zakázaný. Možnost Povolit ProGuard je dostupná pouze v případech, kdy je projekt nastavený na režim vydání . Všechny akce sestavení ProGuard se ignorují, pokud není zaškrtnuté políčko Povolit ProGuard . Konfigurace Xamarin.Android ProGuard neobfuskuje APK a není možné povolit obfuskaci, ani při použití vlastních konfiguračních souborů. Pokud chcete použít obfuskaci, přečtěte si téma Ochrana aplikací pomocí Nástroje Dotfuscator.
Podrobnější informace o použití nástroje ProGuard naleznete v tématu ProGuard.
Ochrana aplikace
Zakázat ladění
Během vývoje aplikace pro Android se ladění provádí pomocí protokolu JDWP ( Java Debug Wire Protocol ). Jedná se o technologii, která umožňuje nástrojům, jako je adb , komunikovat s prostředím JVM za účelem ladění. Pro ladicí sestavení aplikace Xamarin.Android je ve výchozím nastavení zapnutý JDWP. I když je během vývoje důležité JDWP, může představovat problém se zabezpečením pro vydané aplikace.
Důležité
Vždy zakažte stav ladění v vydané aplikaci, protože je to možné (prostřednictvím JDWP) získat úplný přístup k procesu Java a spustit libovolný kód v kontextu aplikace, pokud tento stav ladění není zakázán.
Manifest Androidu android:debuggable obsahuje atribut, který určuje, zda může být aplikace laděna. Je považován za dobrý postup nastavit android:debuggable atribut na false. Nejjednodušším způsobem, jak to udělat, je přidání příkazu podmíněného kompilace do AssemblyInfo.cs:
#if DEBUG
[assembly: Application(Debuggable=true)]
#else
[assembly: Application(Debuggable=false)]
#endif
Všimněte si, že ladicí verze automaticky nastavují některá oprávnění, aby bylo ladění jednodušší (například Internet a ČteníExterníhoÚložiště). Sestavení vydaných verzí však používají pouze oprávnění, která explicitně nakonfigurujete. Pokud zjistíte, že při přepnutí na sestavení uvolněné verze vaše aplikace ztratí oprávnění dostupné v ladicím sestavení, ověřte, že jste toto oprávnění explicitně povolili v seznamu Požadovaná oprávnění, jak je popsáno v části Oprávnění.
Ochrana aplikací pomocí Nástroje Dotfuscator
I když je ladění zakázané, je stále možné, aby útočníci znovu zabalili aplikaci, přidali nebo odebrali možnosti konfigurace nebo oprávnění. To jim umožňuje provádět zpětnou analýzu, ladění nebo manipulaci s aplikací. Dotfuscator Community Edition (CE) se dá použít k obfuscaci spravovaného kódu a vložení kódu detekce stavu zabezpečení modulu runtime do aplikace Xamarin.Android v době sestavení, abyste zjistili a reagovali, pokud je aplikace spuštěná na kořenovém zařízení.
Dotfuscator CE je součástí sady Visual Studio 2017. Chcete-li použít Dotfuscator, klikněte na Nástroje > PreEmptive Protection - Dotfuscator.
Pokud chcete nakonfigurovat Dotfuscator CE, přečtěte si téma Použití Dotfuscator Community Edition s Xamarinem. Jakmile je nakonfigurovaný, nástroj Dotfuscator CE automaticky chrání každé vytvořené sestavení.
Sestavení zkompilovat do nativního kódu
Pokud je tato možnost povolená, sestavení se zabalí do nativní sdílené knihovny. To umožňuje kompresi sestavení, díky čemuž jsou soubory .apk menší. Komprese sestavení rovněž poskytuje minimální formu obfuskaci; nelze spoléhat na takovou obfuskaci.
Tato možnost vyžaduje licenci Enterprise a je dostupná jenom v případě, že je zakázané použití rychlého nasazení . Propojení sestavení do nativního kódu je ve výchozím nastavení zakázáno.
Všimněte si, že možnost Bundle into Native Codeneznamená , že sestavení jsou zkompilována do nativního kódu. Kompilace AOT není možné použít ke kompilaci sestavení do nativního kódu.
Kompilace AOT
Možnost Kompilace AOT (na stránce Vlastnosti balení) umožňuje kompilaci sestavení způsobem Ahead-of-Time (AOT). Pokud je tato možnost povolená, je počáteční režie JIT minimalizovaná předkompilováním sestavení před spuštěním. Výsledný nativní kód je součástí APK spolu s nekompilovanými sestaveními. Výsledkem je kratší doba spuštění aplikace, ale na úkor mírně větších velikostí APK.
Možnost Kompilace AOT vyžaduje licenci Enterprise nebo vyšší. Kompilace AOT je dostupná jenom v případě, že je projekt nakonfigurovaný pro režim vydání a ve výchozím nastavení je zakázaný. Další informace o kompilaci AOT naleznete v tématu AOT.
LLVM – Optimalizace kompilátoru
LLVM Optimalizace kompilátoru vytvoří menší a rychlejší zkompilovaný kód a převede sestavení kompilovaná pomocí AOT do nativního kódu, ale na úkor pomalejších časů sestavení. Kompilátor LLVM je ve výchozím nastavení zakázaný. Chcete-li použít kompilátor LLVM, musí být nejprve povolena možnost kompilace AOT (na stránce Vlastnosti balení ).
Poznámka:
Možnost Optimalizace kompilátoru LLVM vyžaduje licenci Enterprise.
Nastavení vlastností balení
Vlastnosti balení lze nastavit v části Možnosti androiduvlastností projektu, jak je znázorněno na následujícím snímku obrazovky:
Mnoho z těchto vlastností, jako je Použití sdíleného modulu runtime a Použití rychlého nasazení, jsou určeny pro režim ladění. Pokud je ale aplikace nakonfigurovaná pro režim vydání, existují další nastavení, která určují, jak je aplikace optimalizovaná pro rychlost velikosti a spouštění, jak je chráněná před manipulací a jak se dá zabalit, aby podporovala různé architektury a omezení velikosti.
Určení podporovaných architektur
Při přípravě aplikace Xamarin.Android pro vydání je nutné zadat podporované architektury procesoru. Jeden APK může obsahovat strojový kód, který podporuje více různých architektur. Podrobnosti o podpoře více architektur procesoru najdete v tématu Architektury procesoru .
Vygenerovat jeden balíček (.APK) pro vybrané ABI
Pokud je tato možnost povolená, vytvoří se jeden APK pro každý z podporovaných souborů ABI (vybraných na kartě Upřesnit , jak je popsáno v architektuře procesoru) místo jednoho velkého APK pro všechny podporované ABI. Tato možnost je dostupná jenom v případě, že je projekt nakonfigurovaný pro režim vydání a ve výchozím nastavení je zakázaný.
Multi-Dex
Pokud je povolena možnost Povolit Multi-Dex , nástroje sady Android SDK se používají k obejití limitu metody 65K formátu souboru .dex . Omezení metody 65K vychází z počtu metod Jazyka Java, na které aplikace odkazuje (včetně těch v knihovnách, na kterých aplikace závisí) – není založen na počtu metod, které jsou napsané ve zdrojovém kódu. Pokud aplikace definuje pouze několik metod, ale používá mnoho (nebo velké knihovny), je možné, že se překročí limit 65 tisíc.
Je možné, že aplikace nepoužívá každou metodu v každé knihovně, na kterou odkazuje; proto je možné, že nástroj, jako je Například ProGuard (viz výše), může odebrat nepoužívané metody z kódu. Osvědčeným postupem je povolit Povolit Multi-Dex pouze v případě, že je to nezbytné, tj. aplikace stále odkazuje na více než 65K Java metod i po použití ProGuard.
Další informace o systému Multi-Dex naleznete v tématu Konfigurace aplikací s více než 64K metodami.
Sady aplikací pro Android
Sady aplikací se liší od sad APK, protože není možné je nasadit přímo do zařízení. Jedná se spíše o formát, který je určený k nahrání se všemi zkompilovaným kódem a zdroji. Po nahrání podepsané sady aplikací bude Google Play obsahovat vše, co potřebuje k sestavení a podepsání sad APK vaší aplikace a jejich poskytování uživatelům pomocí dynamického doručování.
Pokud chcete povolit podporu sad aplikací pro Android, budete se muset přihlásit k bundle hodnotě vlastnosti Android Package Format v rámci možností projektu androidu. Než to uděláte, ujistěte se, že projekt změníte na Release konfiguraci, protože sady aplikací jsou určené jenom pro balíčky vydaných verzí.
Nyní můžete vygenerovat balíček aplikací podle Archive Flow. Tím se vygeneruje sada aplikací pro vaši aplikaci.
Další informace o sadách aplikací pro Android najdete v tématu Sady aplikací pro Android.
Kompilovat
Po dokončení všech výše uvedených kroků je aplikace připravená na kompilaci. Výběrem možnosti Sestavit > Znovu sestavit řešení ověřte, že se sestavení úspěšně sestaví v režimu Release. Všimněte si, že tento krok ještě nevygeneruje APK.
Podepisování balíčku aplikace probírá balení a podepisování podrobněji.
Archiv pro publikování
Pokud chcete zahájit proces publikování, klikněte pravým tlačítkem na projekt v Průzkumníku řešení a vyberte položku místní nabídky Archiv....
Archivovat... spustí Správce archivu a zahájí proces archivace sady aplikací, jak je znázorněno na tomto snímku obrazovky:
Dalším způsobem, jak vytvořit archiv, je kliknout pravým tlačítkem na řešení v Průzkumníku řešení a vybrat Možnost Archiv vše..., která sestaví řešení a archivuje všechny projekty Xamarinu, které můžou vygenerovat archiv:
Archivovat i Archivovat vše automaticky spustí Správce archivu. Pokud chcete správce archivu spustit přímo, klikněte na položku nabídky Nástroje > Správce archivu...
Archivy řešení kdykoli kliknutím pravého tlačítka myši na uzel Řešení a výběrem možnosti Zobrazit archivy:
Správce archivu
Správce archivu se skládá z podokna seznam řešení, seznamu archivů a panelu podrobností:
V seznamu řešení se zobrazí všechna řešení, která mají alespoň jeden archivovaný projekt. Seznam řešení obsahuje následující části:
- Aktuální řešení – zobrazí aktuální řešení. Tato oblast může být prázdná, pokud aktuální řešení nemá existující archiv.
- Všechny archivy – zobrazí všechna řešení, která mají archiv.
- Vyhledávací textové pole (nahoře) – Filtruje řešení uvedená v seznamu Všechny archivy podle hledaného řetězce zadaného do textového pole.
Seznam archivů zobrazí seznam všech archivů pro vybrané řešení. Seznam archivů obsahuje následující části:
- Vybraný název řešení – zobrazí název řešení vybraného v seznamu řešení. Všechny informace zobrazené v seznamu archivů odkazují na toto vybrané řešení.
- Filtr platforem – Toto pole umožňuje filtrovat archivy podle typu platformy (například iOS nebo Android).
- Archivní položky – seznam archivů pro vybrané řešení Každá položka v tomto seznamu obsahuje název projektu, datum vytvoření a platformu. Může také zobrazit další informace, jako je průběh při archivaci nebo publikování položky.
Panel podrobností zobrazí další informace o jednotlivých archivech. Umožňuje také uživateli spustit pracovní postup distribuce nebo otevřít složku, ve které byla distribuce vytvořena. Oddíl Komentáře k sestavení umožňuje zahrnout do archivu komentáře k sestavení.
Distribuce
Když je archivovaná verze aplikace připravená k publikování, vyberte archiv ve Správci archivu a klikněte na tlačítko Distribuovat...
Dialogové okno Distribuční kanál zobrazuje informace o aplikaci, indikaci průběhu pracovního postupu distribuce a výběr distribučních kanálů. Při prvním spuštění se zobrazí dvě možnosti:
Je možné zvolit jeden z následujících distribučních kanálů:
Ad-Hoc – Uloží podepsaný APK soubor na disk, který lze do zařízení s Androidem ručně nainstalovat. Pokračujte podepisováním balíčku aplikace a zjistěte, jak vytvořit podpisovou identitu pro Android, vytvořit nový podpisový certifikát pro aplikace pro Android a publikovat ad hoc verzi aplikace na disk. To je dobrý způsob, jak vytvořit APK pro testování.
Google Play – Publikuje podepsaný APK do Google Play. Pokračujte v publikování na Google Play , abyste se dozvěděli, jak podepsat a publikovat APK v obchodě Google Play.