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.
Proces sestavení .NET pro Android je zodpovědný za integraci všech prvků: generování Resource.designer.cs, podporu @(AndroidAsset), @(AndroidResource), a dalších akcí sestavení, generování obálek volatelných z Androidu, a generování .apk, které se spustí na zařízeních s Androidem.
Aplikační balíčky
Obecně platí, že existují dva typy balíčků aplikací pro Android (.apk soubory), které může vygenerovat .NET pro Android buildový systém:
Release buildy, které jsou plně samostatné a nevyžadují žádné další balíčky k provedení. Jedná se o balíčky, které jsou k dispozici v App Storu.
Debug sestavení, které nejsou.
Tyto typy balíčků odpovídají nástroji MSBuild Configuration , který vytvoří balíček.
Rychlé nasazení
Rychlé nasazení funguje tak, že se dále zmenší velikost balíčku aplikace pro Android. To se provádí vyloučením sestavení aplikace z balíčku a nasazením sestavení aplikace přímo do interního files adresáře aplikace, obvykle umístěného v /data/data/com.some.package. Interní files adresář není globálně zapisovatelná složka, takže run-as nástroj slouží ke spuštění všech příkazů ke zkopírování souborů do daného adresáře.
Tento proces zrychluje cyklus sestavení, nasazení nebo ladění, protože balíček není přeinstalován při změně pouze sestavení. Do cílového zařízení se znovu synchronizují pouze aktualizovaná sestavení.
Výstraha
Rychlé nasazení obvykle selhává na zařízeních, která blokují run-as, což často zahrnuje zařízení se systémem starším než Android 5.0.
Rychlé nasazení je podporováno pro formáty balíčků .apk i .aab.
Je povolena ve výchozím nastavení a může být zakázána v buildech Debug nastavením $(EmbedAssembliesIntoApk) vlastnosti na True.
Mějte na paměti, že použití .aab s rychlým nasazením bude pomalejší než .apk, protože soubor .aab musí být zpracován prostřednictvím bundletool pro balení a instalaci.
Režim rozšířeného rychlého nasazení lze použít ve spojení s touto funkcí, aby se nasazení ještě více urychlila.
Tím se do adresáře files nasadí obě sestavení, nativní knihovny, mapy typů a dexy. Pokud ale měníte nativní knihovny, vazby nebo kód Java, měli byste to opravdu povolit.
Projekty MSBuild
Proces sestavení .NET pro Android je založený na nástroji MSBuild, což je také formát souboru projektu používaný sadou Visual Studio pro Mac a sadou Visual Studio. Obvykle uživatelé nebudou muset upravovat soubory MSBuild ručně – integrované vývojové prostředí (IDE) vytváří plně funkční projekty a aktualizuje je všemi provedenými změnami a podle potřeby automaticky vyvolá cíle sestavení.
Pokročilí uživatelé můžou chtít dělat věci, které grafické uživatelské rozhraní IDE nepodporuje, takže proces sestavení je přizpůsobitelný úpravou souboru projektu přímo. Tato stránka dokumentuje pouze rozhraní .NET pro funkce a přizpůsobení specifické pro Android – s normálními položkami, vlastnostmi a cíli nástroje MSBuild je možné mnoho dalších věcí.
Propojování projektů
V projektech typu Binding se používají následující vlastnosti nástroje MSBuild:
Resource.designer.cs Generace
Následující vlastnosti nástroje MSBuild slouží k řízení generování Resource.designer.cs souboru:
$(AndroidAapt2CompileExtraArgs)$(AndroidAapt2LinkExtraArgs)$(AndroidExplicitCrunch)$(AndroidR8IgnoreWarnings)$(AndroidResgenExtraArgs)$(AndroidResgenFile)$(AndroidUseAapt2)$(MonoAndroidResourcePrefix)
Parametry podepisování
Podpisové vlastnosti určují, jak je balíček aplikace podepsaný, aby se mohl nainstalovat na zařízení s Androidem. Pokud chcete zrychlit iteraci sestavení, nepodepisují .NET pro úlohy Androidu balíčky během procesu sestavení, protože podepisování je poměrně pomalé. Místo toho jsou před instalací nebo během exportu podepsány (v případě potřeby) integrovaným vývojovým prostředím nebo cílem sestavení Install. Vyvolání cíle SignAndroidPackage vytvoří balíček s příponou -Signed.apk ve výstupním adresáři.
Ve výchozím nastavení generuje cílová podepisovací entita nový debugovací klíč, je-li to nutné. Pokud chcete použít konkrétní klíč, například na buildovém serveru, použijí se následující vlastnosti nástroje MSBuild:
$(AndroidDebugKeyAlgorithm)$(AndroidDebugKeyValidity)$(AndroidDebugStoreType)$(AndroidKeyStore)$(AndroidSigningKeyAlias)$(AndroidSigningKeyPass)$(AndroidSigningKeyStore)$(AndroidSigningStorePass)$(JarsignerTimestampAuthorityCertificateAlias)$(JarsignerTimestampAuthorityUrl)
keytool Mapování možností
Zvažte následující keytool vyvolání:
$ keytool -genkey -v -keystore filename.keystore -alias keystore.alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password: keystore.filename password
Re-enter new password: keystore.filename password
...
Is CN=... correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days
for: ...
Enter key password for keystore.alias
(RETURN if same as keystore password): keystore.alias password
[Storing filename.keystore]
Pokud chcete použít úložiště klíčů vygenerované výše, použijte skupinu vlastností:
<PropertyGroup>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyStore>filename.keystore</AndroidSigningKeyStore>
<AndroidSigningStorePass>keystore.filename password</AndroidSigningStorePass>
<AndroidSigningKeyAlias>keystore.alias</AndroidSigningKeyAlias>
<AndroidSigningKeyPass>keystore.alias password</AndroidSigningKeyPass>
</PropertyGroup>
Body pro rozšiřování buildu
Buildový systém .NET pro Android zveřejňuje několik veřejných bodů rozšíření pro uživatele, kteří chtějí připojit se k našemu procesu sestavení. Chcete-li použít jeden z těchto rozšiřujících bodů, budete muset přidat vlastní cíl do příslušné vlastnosti MSBuild v objektu PropertyGroup. Například:
<PropertyGroup>
<AfterGenerateAndroidManifest>
$(AfterGenerateAndroidManifest);
YourTarget;
</AfterGenerateAndroidManifest>
</PropertyGroup>
Mezi rozšiřující body patří:
- '$(AfterGenerateAndroidManifest)
- '$(AndroidPrepareForBuildDependsOn)
- '$(BeforeGenerateAndroidManifest)
$(BeforeBuildAndroidAssetPacks)
Upozornění ohledně rozšiřování procesu sestavení: Pokud nejsou správně napsány, mohou rozšíření negativně ovlivnit výkon, zejména pokud se spouštějí při každém sestavení. Před implementací těchto rozšíření důrazně doporučujeme přečíst si dokumentaci nástroje MSBuild.
Definice cílů
.NET části procesu sestavení specifické pro Android jsou definovány v $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets, ale k sestavení asembláže jsou vyžadovány také běžné jazykově specifické cíle, například Microsoft.CSharp.targets.
Před importem libovolných jazykových cílových objektů musí být nastaveny následující vlastnosti sestavení.
<PropertyGroup>
<TargetFrameworkIdentifier>MonoDroid</TargetFrameworkIdentifier>
<MonoDroidVersion>v1.0</MonoDroidVersion>
<TargetFrameworkVersion>v2.2</TargetFrameworkVersion>
</PropertyGroup>
Všechny tyto cíle a vlastnosti je možné zahrnout do C# importem Xamarin.Android.CSharp.targets:
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
Tento soubor lze snadno přizpůsobit pro jiné jazyky.