Proces sestavení
Proces sestavení Xamarin. Android zodpovídá za spojování všechno dohromady: generování Resource.designer.cs
, podpora @(AndroidAsset)
, @(AndroidResource)
a další Akce sestavení, generování obálek pro vyvolání Androidua generování .apk
pro spouštění na zařízeních s Androidem.
Balíčky aplikací
Obecně platí, že existují dva typy balíčků aplikací pro Android ( .apk
soubory), které může systém sestavení Xamarin. Android vygenerovat:
Sestavení vydaných verzí , která jsou plně samostatná a nevyžadují, aby se spouštěly nadbytečné balíčky. Jsou to balíčky, které jsou k dispozici v obchodě s aplikacemi.
Ladění sestavení, která nejsou.
tyto typy balíčků odpovídají MSBuild Configuration
, který balíček vytváří.
Sdílený modul runtime
Před Xamarin. Android 11,2 byl sdíleným modulem runtime pár extra balíčků pro Android, které poskytují základní knihovnu tříd ( mscorlib.dll
atd.) a knihovnu vazeb pro Android ( Mono.Android.dll
atd.). Sestavení ladění spoléhají na sdílený modul runtime místo zahrnutí základní knihovny tříd a sestavení vazeb v rámci balíčku aplikace pro Android, což umožňuje, aby byl ladicí balíček menší.
Sdílený modul runtime může být zakázán v sestavení ladění nastavením$(AndroidUseSharedRuntime)
vlastnost na False
.
Podpora pro sdílený modul runtime se odebrala v Xamarin. Android 11,2.
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 místo toho nasazení 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ý adresář, takže run-as
nástroj slouží ke spuštění všech příkazů ke zkopírování souborů do tohoto adresáře.
Tento proces zrychluje cyklus sestavení/nasazení/ladění, protože balíček není znovu nainstalován, pokud jsou změněna pouze sestavení. Znovu se synchronizují jenom aktualizovaná sestavení v cílovém zařízení.
Upozornění
U zařízení, která blokují run-as
, což často zahrnuje zařízení starší než Android 5,0, se ví, že je rychlé nasazení neúspěšné.
Rychlé nasazení je ve výchozím nastavení povolené a může být zakázané v sestavení $(EmbedAssembliesIntoApk)
ladění nastavením vlastnosti na True
.
Rozšířený režim rychlého nasazení lze použít společně s touto funkcí k urychlení nasazení ještě více.
Tím se do files
adresáře nasadí sestavení, nativní knihovny, TypeMaps a dexes. Tuto možnost byste ale měli povolit jenom v případě, že měníte nativní knihovny, vazby nebo kód Java.
Projekty MSBuild
proces sestavení Xamarin. Android je založen na MSBuild, což je také formát souboru projektu, který používá Visual Studio pro Mac a Visual Studio. obvykle uživatelé nebudou muset MSBuild soubory upravovat ručně – IDE vytvoří plně funkční projekty a aktualizuje je pomocí jakýchkoli provedených změn a automaticky vyvolá cíle sestavení podle potřeby.
Pokročilí uživatelé mohou chtít provádět akce, které grafickým rozhraním IDE nepodporují, takže proces sestavení lze přizpůsobit úpravou souboru projektu přímo. tato stránka obsahuje pouze funkce, které jsou specifické pro Xamarin. Android a vlastní nastavení – mnoho dalších věcí je možné u běžných MSBuildch položek, vlastností a cílů.
Vytváření vazeb projektů
pro projekty vazebse používají následující vlastnosti MSBuild:
Resource.designer.cs
Nezbytných
následující vlastnosti MSBuild slouží k řízení generování Resource.designer.cs
souboru:
$(AndroidAapt2CompileExtraArgs)
$(AndroidAapt2LinkExtraArgs)
$(AndroidExplicitCrunch)
$(AndroidR8IgnoreWarnings)
$(AndroidResgenExtraArgs)
$(AndroidResgenFile)
$(AndroidUseAapt2)
$(MonoAndroidResourcePrefix)
Vlastnosti podepisování
Vlastnosti podepisování určují, jak je balíček aplikace podepsaný, aby mohl být nainstalovaný na zařízení s Androidem. Aby bylo možné urychlit sestavení, úlohy Xamarin. Android nepodepisují balíčky během procesu sestavení, protože podepisování je poměrně pomalé. Místo toho jsou podepsány (v případě potřeby) před instalací nebo během exportu pomocí integrovaného vývojového prostředí (IDE) nebo cíle instalace sestavení. Voláním cíle SignAndroidPackage se vytvoří balíček s -Signed.apk
příponou ve výstupním adresáři.
Ve výchozím nastavení vytvoří podpisový cíl v případě potřeby nový klíč pro podepsání ladění. pokud chcete použít konkrétní klíč, například na serveru sestavení, jsou použity následující vlastnosti 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]
Chcete-li 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>
Rozšiřovací body sestavení
Xamarin. Android Build System zveřejňuje několik veřejných bodů rozšíření pro uživatele, kteří se chtějí připojit do našeho procesu sestavení. pokud chcete použít jeden z těchto bodů rozšíření, budete muset přidat svůj vlastní cíl do příslušné vlastnosti MSBuild v PropertyGroup
. Například:
<PropertyGroup>
<AfterGenerateAndroidManifest>
$(AfterGenerateAndroidManifest);
YourTarget;
</AfterGenerateAndroidManifest>
</PropertyGroup>
Mezi body rozšíření patří:
Upozornění na rozšíření procesu sestavení: Pokud není správně napsáno, rozšíření sestavení mohou ovlivnit výkon sestavení, zejména v případě, že jsou spuštěny na každém sestavení. důrazně doporučujeme, abyste si před implementací těchto rozšíření přečetli dokumentaci MSBuild.
Cílové definice
Části procesu sestavení specifické pro Xamarin. Android jsou definovány v $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets
, ale pro sestavení sestavení jsou také vyžadovány normální cíle specifické pro jazyk, například Microsoft. CSharp. targets .
Před importem všech jazykových cílů je nutné nastavit 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 lze zahrnout do jazyka C# importováním Xamarin. Android. CSharp. targets:
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
Tento soubor lze snadno přizpůsobit pro jiné jazyky.