Příprava aplikace pro vydání

Po kódování a otestování aplikace je nutné připravit balíček pro distribuci. Prvním úkolem při přípravě tohoto balíčku je sestavení aplikace pro vydání, která převážně zahrnuje nastavení některých atributů aplikace.

K sestavení aplikace pro verzi použijte následující postup:

  • Zadejte ikonu aplikace – každá aplikace Xamarin. Android by měla mít zadanou ikonu aplikace. I když ne technicky nutné, některé trhy, například Google Play, vyžadují IT.

  • Verze aplikace – tento krok zahrnuje inicializaci nebo aktualizaci informací o verzi. To je důležité pro budoucí aktualizace aplikací a pro zajištění, že uživatelé mají vědět, která verze aplikace se nainstalovala.

  • Zmenšení APK – velikost FINÁLNÍho APKu se může podstatně snížit pomocí linkeru Xamarin. Android na spravovaném kódu a ProGuard v bytovém kódu Java.

  • 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í, zakódováním spravovaného kódu, přidáním anti-Debug a ochrany proti neoprávněnému použití a nativní kompilace.

  • Nastavení vlastností balíčku – vlastnosti sbalení určují vytvoření balíčku aplikace pro Android (APK). Tento krok optimalizuje APK, chrání jeho assety a modularizes balení podle potřeby. Navíc můžete uživatelům poskytnout sadu Android App, která je pro svá zařízení optimalizovaná.

  • Kompilovat – tento krok zkompiluje kód a assety, aby ověřil, že sestavení je v režimu vydání.

  • Archivovat pro publikování – tento krok vytvoří aplikaci a umístí ji do archivu pro podepisování a publikování.

Každý z těchto kroků je podrobněji popsán níže.

Zadání ikony aplikace

Důrazně doporučujeme, aby každá aplikace Xamarin. Android určovala ikonu aplikace. Některé tržiště aplikací nedovolí, aby se aplikace pro Android publikovala bez nich. IconVlastnost Application atributu slouží k zadání ikony aplikace pro projekt Xamarin. Android.

v Visual Studio 2017 a novějším určete ikonu aplikace pomocí oddílu Manifest pro Androidvlastnostíprojektu, jak je znázorněno na následujícím snímku obrazovky:

Nastavit ikonu aplikace

V těchto příkladech @drawable/icon odkazuje na soubor ikony, který je umístěný v souboru @drawable/icon (Všimněte si, že rozšíření .png není zahrnuté v názvu prostředku). Tento atribut lze také deklarovat v souboru Properties\AssemblyInfo.cs, jak je znázorněno v tomto ukázkovém fragmentu:

[assembly: Application(Icon = "@drawable/icon")]

Obvykle using Android.App je deklarována v horní části using Android.App (obor názvů Application atributu je Android.App ); Nicméně může být nutné přidat tento using příkaz, pokud již neexistuje.

Verze aplikace

Správa verzí je důležitá pro údržbu a distribuci aplikací pro Android. Bez jakéhokoli seřazení verzí je obtížné určit, zda nebo jak má být aplikace aktualizována. Pro pomoc se správou verzí Android rozpoznává dva různé typy informací:

  • Číslo verze – celočíselná hodnota (používá se interně pro Android a aplikace), která představuje verzi aplikace. Většina aplikací je spouštěna s touto hodnotou nastavenou na hodnotu 1 a pak se zvyšuje s každým sestavením. Tato hodnota nemá žádný vztah ani spřažení s atributem názvu verze (viz níže). Pro aplikace a publikační služby by se tato hodnota neměla zobrazovat uživatelům. Tato hodnota je uložena v souboru AndroidManifest.xml jako .

  • Název verze – řetězec, který se používá jenom pro sdělování informací uživateli o verzi aplikace (jak je nainstalovaná na konkrétním zařízení). Název verze je určený k zobrazení uživatelům nebo v Google Play. Tento řetězec se interně nepoužívá v Androidu. Název verze může být libovolná hodnota řetězce, která by pomohla uživateli identifikovat sestavení instalované na jejich zařízení. Tato hodnota je uložena v souboru AndroidManifest.xml jako .

v Visual Studio mohou být tyto hodnoty nastaveny v části Manifest pro Androidvlastnostíprojektu, jak je znázorněno na následujícím snímku obrazovky:

Nastavit číslo verze

Zmenšit APK

Xamarin. Android kopírují se dá zmenšit kombinací linkeru Xamarin. Android, který odebere zbytečný spravovaný kód, a nástroj proguard z Android SDK, který odebere nepoužívaný kód Java. Proces sestavení nejprve používá linker Xamarin. Android k optimalizaci aplikace na úrovni spravovaného kódu (C#) a později používá ProGuard (Pokud je povoleno) k optimalizaci APK na úrovni bytového kódu Java.

Konfigurace Linkeru

Režim vydání vypne sdílený modul runtime a zapne propojení tak, aby aplikace jenom doplnila jenom ty součásti Xamarin. Android, které se vyžadují 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 jsou odkazovány aplikací Xamarin. Android. Linker pak zahodí všechna nepoužívaná sestavení, typy a členy, které nejsou použity (nebo na které se odkazuje). To může mít za následek výrazné snížení velikosti balíčku. Představte si třeba ukázku HelloWorld , u které se v konečné velikosti APK snížila velikost 83%:

  • Konfigurace: none – Xamarin. Android 4.2.5 Size = 17,4 MB.

  • Konfigurace: pouze sestavení sady SDK – Xamarin. Android 4.2.5 Size = 3,0 MB.

Nastavte možnosti linkeru pomocí oddílu Možnosti Androiduvlastnostíprojektu:

Možnosti linkeru

Rozevírací nabídka propojování poskytuje následující možnosti pro řízení linkeru:

  • Žádné – vypne linker. neprovede se žádné propojení.

  • Pouze sestavení sady SDK – Tato akce propojí pouze sestavení, která jsou požadována v Xamarin. Android. Jiná sestavení nebudou propojena.

  • Sada SDK a sestavení uživatelů – Tato akce propojí všechna sestavení, která jsou vyžadována aplikací, a ne pouze ty, které vyžaduje Xamarin. Android.

Propojení může vytvořit některé nezamýšlené vedlejší účinky, takže je důležité, aby byla aplikace znovu testována v režimu vydání na fyzickém zařízení.

ProGuard

ProGuard je Android SDK nástroj, který spojuje a dekóduje 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) v APK. ProGuard odebere nepoužívaný kód Java, který výslednou aplikaci zmenší. Například použití ProGuard v malých aplikacích Xamarin. Android obvykle dosahuje velikosti zmenšené o 24%. použití ProGuard u větších aplikací s více závislostmi knihoven obvykle dosahuje ještě většího snížení velikosti.

ProGuard není alternativou k linkeru Xamarin. Android. Linker Xamarin. Android odkazuje na spravovaný kód, zatímco propojuje odkazy Java bytového kódu Java. Proces sestavení nejprve pomocí linkeru Xamarin. Android optimalizuje spravovaný kód (C#) v aplikaci a později použije ProGuard (Pokud je zapnutý) k optimalizaci APK na úrovni bytového kódu Java.

Pokud je zaškrtnuto políčko Povolit ProGuard , Xamarin. Android spustí nástroj ProGuard ve výsledném APK. Konfigurační soubor ProGuard je vygenerován a používán nástrojem ProGuard v době sestavení. Xamarin. Android také podporuje vlastní akce sestavení ProguardConfiguration . Můžete přidat vlastní konfigurační soubor ProGuard do projektu, kliknout na něj pravým tlačítkem a vybrat ho jako akci sestavení, jak je znázorněno v následujícím příkladu:

Služba ProGuard je ve výchozím nastavení zakázaná. Možnost Povolit ProGuard je k dispozici pouze v případě, že je projekt nastaven na režim vydání . Všechny akce sestavení ProGuard jsou ignorovány, pokud není zaškrtnuto políčko Povolit ProGuard . Konfigurace ProGuard Xamarin. Android nedefinuje APK a není možné povolit zmatení, a to ani s vlastními konfiguračními soubory. Pokud chcete použít zmatení, přečtěte si téma Ochrana aplikací pomocí Dotfuscator.

Podrobnější informace o použití nástroje ProGuard najdete v tématu ProGuard.

Ochrana aplikace

Zakázat ladění

Během vývoje aplikace pro Android se ladění provádí pomocí JDWP ( Java Debug Protocol ). Toto je technologie, která umožňuje nástrojům, jako je ADB , komunikovat s JVM pro účely ladění. JDWP je ve výchozím nastavení zapnutá pro ladicí sestavení aplikace Xamarin. Android. I když je během vývoje důležité JDWP, může to představovat problémy zabezpečení 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), aby získal úplný přístup k procesu Java a spouštěl libovolný kód v kontextu aplikace, pokud tento stav ladění není zakázán.

Manifest Android obsahuje android:debuggable atribut, který určuje, jestli se aplikace může ladit. Je považován za dobrý postup pro nastavení android:debuggable atributu na false . Nejjednodušší způsob, jak to provést, je přidání podmíněného příkazu Compile do AssemblyInfo. cs:

#if DEBUG
[assembly: Application(Debuggable=true)]
#else
[assembly: Application(Debuggable=false)]
#endif

Všimněte si, že sestavení pro ladění automaticky nastavila určitá oprávnění, aby bylo ladění snazší (například Internet a ReadExternalStorage). Sestavení vydaných verzí ale používají jenom oprávnění, která explicitně nakonfigurujete. Pokud zjistíte, že přepnutí do sestavení pro vydání způsobí, že aplikace ztratí oprávnění, které bylo k dispozici v sestavení ladění, ověřte, zda jste toto oprávnění explicitně povolili v seznamu požadovaná oprávnění , jak je popsáno v tématu oprávnění.

Ochrana aplikací pomocí Dotfuscator

I když je ladění zakázané, je možné, že útočníky můžou znovu zabalit aplikaci, přidat nebo odebrat možnosti konfigurace nebo oprávnění. To jim umožní provádět zpětnou analýzu, ladění nebo manipulaci s aplikací. Dotfuscator Community Edition (CE) se dá použít k zakódování spravovaného kódu a vložení kódu pro detekci stavu zabezpečení běhového prostředí do aplikace Xamarin. Android v čase sestavení ke zjištění a reakci na to, jestli je aplikace spuštěná na zařízení s rootem.

Dotfuscator CE je součástí Visual Studio 2017. Chcete-li použít Dotfuscator, klikněte na nástroje s ochranou – Dotfuscator.

pokud chcete nakonfigurovat Dotfuscator CE, přečtěte si prosím použití Dotfuscator Community Edition s Xamarin. Po nakonfigurování bude Dotfuscator CE automaticky chránit každé vytvořené sestavení.

Sestavení sady prostředků do nativního kódu

Pokud je tato možnost povolena, sestavení jsou seskupena do nativní sdílené knihovny. To umožňuje, aby se sestavení komprimují a povolovaly menší .apk soubory. Komprese sestavení také poskytuje minimální formu zmatení; taková zmatení by se neměla spoléhat na.

tato možnost vyžaduje licenci Enterprise a je dostupná jenom v případě, že je zakázané používat rychlé nasazení . Sestavení sady prostředků do nativního kódu je ve výchozím nastavení zakázáno.

Všimněte si, že možnost seskupit do nativního kóduneznamená, že sestavení jsou zkompilována do nativního kódu. Není možné použít kompilaci AOT ke kompilaci sestavení do nativního kódu.

Kompilace AOT

Možnost kompilace stromu AOT (na stránce vlastností balíčku ) umožňuje kompilaci sestavení před časem (AOT). Pokud je tato možnost povolená, dojde k minimalizaci režie při spuštění JIT (just in time) před modulem runtime a předkompilováním sestavení. Výsledný nativní kód je obsažen v APK spolu s nekompilovanými sestaveními. To má za následek kratší dobu spuštění aplikace, ale s náklady na mírně větší velikosti APK.

možnost kompilace AOT vyžaduje licenci Enterprise nebo vyšší. Kompilace AOT je k dispozici pouze v případě, že je projekt konfigurován pro režim vydání a je ve výchozím nastavení zakázán. Další informace o kompilaci AOT naleznete v tématu AOT.

Optimalizuje kompilátor LLVM

Optimalizující kompilátor LLVM vytvoří menší a rychlejší zkompilovaný kód a převede sestavení ZKOMPILOVANÉ v AOT do nativního kódu, ale za cenu pomalejších časů sestavení. Kompilátor LLVM je ve výchozím nastavení zakázán. Chcete-li použít kompilátor LLVM, musí být nejprve povolena možnost kompilace AOT (na stránce vlastností balíčku ).

Poznámka

možnost kompilátoru LLVM pro optimalizaci vyžaduje licenci Enterprise.

Nastavení vlastností balíčku

Vlastnosti balíčku lze nastavit v části Možnosti pro Androidvlastnostíprojektu, jak je znázorněno na následujícím snímku obrazovky:

Vlastnosti balíčku

Mnohé z těchto vlastností, jako je například použití sdíleného modulu runtimea 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 velikost a rychlost spouštění, jak je chráněná před manipulacía jak se dá zabalit pro podporu různých architektur a omezení velikosti.

Zadat podporované architektury

Při přípravě aplikace Xamarin. Android pro vydání je nutné zadat podporované architektury procesoru. Jeden APK může obsahovat strojový kód pro podporu více různých architektur. Podrobnosti o podpoře více PROCESORových architektur najdete v tématu architektury procesorů .

Generovat jeden balíček (. APK) na vybrané ABI

Když je tato možnost povolená, vytvoří se jedna APK pro každý z podporovaných prostředků ABI (vybraný na kartě Upřesnit , jak je popsáno v tématu architektury procesorů), a ne jenom jeden velký APK pro všechny podporované ABI. Tato možnost je k dispozici pouze v případě, že je projekt konfigurován pro režim vydání a je ve výchozím nastavení zakázán.

Více DEX

Pokud je povolená možnost Povolit DEX, používají se Android SDK nástroje pro obejít limit 65 KB pro metody formátu souboru . DEX . Omezení metody 65 KB pro vychází z počtu metod jazyka Java, na které aplikace odkazuje (včetně těch, které aplikace závisí) – není založena na počtu metod, které jsou zapsány ve zdrojovém kódu. Pokud aplikace definuje pouze několik metod, ale používá mnoho (nebo velký počet knihoven), je možné, že limit 65 KB pro bude překročen.

Je možné, že aplikace nepoužívá každou metodu v každé knihovně, na kterou se 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 DEX pouze v případě, že je nezbytně nutné, i. e. aplikace stále odkazuje na více než 65 KB pro metody Java i po použití ProGuard.

Další informace o DEX najdete v tématu Konfigurace aplikací s více než 64 tisíci metodami.

Sady prostředků aplikací pro Android

Sady prostředků aplikace se liší od kopírují, protože není možné je nasadit přímo do zařízení. Místo toho je to formát, který je určen k nahrání se všemi kompilovaným kódem a prostředky. Po nahrání podepsané sady prostředků aplikace Google Play bude mít vše, co potřebuje k sestavení a podepsání kopírují vaší aplikace a jejich poskytování uživatelům pomocí dynamického doručování.

Pokud chcete povolit podporu pro sady prostředků aplikací pro Android, musíte se přihlásit k bundle hodnotě vlastnosti bundle v možnostech vašeho projektu pro Android. Než to uděláte, ujistěte se, že jste změnili projekt na Release konfiguraci, protože sady prostředků aplikace jsou určené jenom pro balíčky verzí.

Nyní můžete vygenerovat sadu prostředků aplikace pomocí Flow archivu. Tím se vygeneruje sada prostředků aplikace pro vaši aplikaci.

Další informace o kompletech aplikací pro Android najdete v tématu sady aplikací pro Android.

Sestavení

Po dokončení všech výše uvedených kroků je aplikace připravená na kompilaci. Pokud chcete ověřit, že se sestavení úspěšně sestavuje v režimu vydání, vyberte řešení sestavení znovu sestavit. Všimněte si, že tento krok ještě neprodukuje APK.

Podepisování balíčku aplikace popisuje balení a přihlašování se podrobněji.

Archivovat pro publikování

Chcete-li zahájit proces publikování, klikněte pravým tlačítkem myši na projekt v Průzkumník řešení a vyberte položku místní nabídky archivovat... :

Archivovaná aplikace

Archivovat... spustí správce archivu a zahájí proces archivace sady prostředků aplikace, jak je znázorněno na tomto snímku obrazovky:

Správce archivu

Dalším způsobem, jak vytvořit archiv, je kliknout pravým tlačítkem myši na řešení v Průzkumník řešení a vybrat možnost Archivovat vše..., které sestaví řešení a archivuje všechny projekty Xamarin, které mohou generovat Archiv:

Archivovat vše

Archive iArchive All automaticky spustí Správce archivu. Pokud chcete správce archivu spustit přímo, klikněte na položku nabídky Správce archivu nástrojů...:

Spuštění Správce archivu

Archivy řešení můžete kdykoli vybrat tak, že kliknete pravým tlačítkem na uzel Řešení a vyberete Zobrazit archivy:

Zobrazit archivy

Správce archivu

Správce archivů se skládá z podokna Seznam řešení, seznamu archivůa panelu podrobností:

Podokna Správce archivů

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) – Vyfiltruje řešení uvedená v seznamu Všechny archivy podle hledaového řetězce zadaného do textového pole.

Seznam archivů zobrazuje 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 archivace nebo publikování položky.

Na panelu podrobností se 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 Build Comments (Komentáře k sestavení) umožňuje zahrnout komentáře k sestavení do archivu.

Distribuce

Když je archivovaná verze aplikace připravená k publikování, vyberte archiv ve Správci archivu a klikněte na tlačítko Distribuovat:

Tlačítko Distribuovat

Dialogové okno Distribuční kanál zobrazuje informace o aplikaci, informace o 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:

Výběr distribučního kanálu

Je možné zvolit jeden z následujících distribučních kanálů:

  • Ad-Hoc – uloží podepsaný soubor APK na disk, který se může nainstalovat bokem na zařízení s Androidem. Pokračujte v podepisování balíčku aplikace a zjistěte, jak vytvořit podpisovou identitu Androidu, vytvořit nový podpisový certifikát pro aplikace pro Android a publikovat ad hoc verzi aplikace na disk. Je to dobrý způsob, jak vytvořit soubor APK pro testování.

  • Google Play – publikuje podepsaný soubor APK do Google Play. Pokračujte publikováním do Google Play a zjistěte, jak podepsat a publikovat soubor APK v Google Play úložiště.