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.
Vlastnosti nástroje MSBuild řídí chování cílů.
Zadají se v souboru projektu, například MyApp.csproj, v rámci skupiny PropertyGroup nástroje MSBuild.
Poznámka:
V .NET pro Android není technicky žádný rozdíl mezi aplikací a projektem vazeb, takže vlastnosti budou fungovat v obou. V praxi se důrazně doporučuje vytvářet samostatné projekty aplikací a vazeb. Vlastnosti, které se primárně používají v projektech vazeb, jsou zdokumentované v referenční příručce o vlastnostech projektu vazeb MSBuild.
AdbTarget
Vlastnost $(AdbTarget) určuje cílové zařízení s Androidem, do které se balíček Androidu může nainstalovat nebo z ní odebrat.
Hodnota této vlastnosti je stejná jako adb možnost Cílové zařízení.
AfterGenerateAndroidManifest
Cíle nástroje MSBuild uvedené v této vlastnosti se spustí přímo za interním _GenerateJavaStubs cílem, což je místo AndroidManifest.xml , kde je soubor generován v souboru $(IntermediateOutputPath). Pokud chcete vygenerovaný AndroidManifest.xml soubor upravit, můžete to udělat pomocí tohoto bodu rozšíření.
AndroidAapt2CompileExtraArgs
Určuje možnosti příkazového řádku, které se mají předat příkazu aapt2 compile při zpracování dat a prostředků Androidu.
AndroidAapt2LinkExtraArgs
Určuje možnosti příkazového řádku, které se mají předat příkazu aapt2 link při zpracování prostředků a prostředí Androidu.
AndroidAddKeepAlives
Logická vlastnost, která určuje, zda linker vloží volání GC.KeepAlive() v rámci projektů vazeb, aby se zabránilo předčasnému uvolnění objektů.
Výchozí hodnota je True pro sestavení konfigurace vydané verze.
AndroidAotAdditionalArguments
Řetězcová vlastnost, která umožňuje předávání možností do Mono kompilátoru během Aot úlohy pro projekty, které mají buď $(AndroidEnableProfiledAot) nebo $(AotAssemblies) nastaveny na true.
Řetězcová hodnota vlastnosti se přidá do souboru odpovědi při volání mono křížového kompilátoru.
Obecně platí, že tato vlastnost by měla zůstat prázdná, ale v určitých speciálních scénářích může poskytovat užitečnou flexibilitu.
Vlastnost $(AndroidAotAdditionalArguments) se liší od související vlastnosti $(AndroidExtraAotOptions); $(AndroidAotAdditionalArguments) předá úplné samostatné možnosti oddělené mezerami, jako --verbose nebo --debug, kompilátoru AOT, zatímco $(AndroidExtraAotOptions) obsahuje argumenty oddělené čárkami, které jsou součástí možnosti --aot kompilátoru AOT.
AndroidAotCustomProfilePath
Soubor, který aprofutil má vytvořit pro uložení dat profileru.
AndroidAotProfiles
Řetězcová vlastnost, která umožňuje vývojáři přidat profily AOT z příkazového řádku. Jedná se o seznam absolutních cest, které jsou odděleny středníky nebo čárkami.
AndroidAotProfilerPort
Port, ke kterému aprofutil se má připojit při získávání dat profilace.
AndroidAotEnableLazyLoad
Povolit pozdní načítání sestavení AOT-d namísto jejich předběžného načtení při spuštění. Výchozí hodnota je True pro Release buildy s libovolnou formou AOT povolena.
Představeno v .NET 6.
AndroidApkDigestAlgorithm
Řetězcová hodnota, která určuje algoritmus digest, který se má použít s jarsigner -digestalg.
Výchozí hodnota je SHA-256.
AndroidApkSignerAdditionalArguments
Řetězcová vlastnost, která umožňuje vývojáři poskytnout argumenty apksigner nástroji.
Algorithmus podepisování APK pro Android
Řetězcová hodnota, která určuje podpisový algoritmus, který se má použít s jarsigner -sigalg.
Výchozí hodnota je SHA256withRSA.
AndroidApplication
Logická hodnota, která označuje, jestli je projekt určen pro aplikaci pro Android (True) nebo pro projekt knihovny androidu (False nebo není k dispozici).
V balíčku pro Android může být pouze jeden projekt s <AndroidApplication>True</AndroidApplication>. (Tento požadavek bohužel není ověřený, což může vést k drobným a bizarním chybám v souvislosti s prostředky Androidu.)
AndroidApplicationJavaClass
Úplný název třídy Java, který se má použít místo android.app.Application , když třída dědí z Android.App.Application.
Vlastnost $(AndroidApplicationJavaClass) je obecně nastavena jinými vlastnostmi, například $(AndroidEnableMultiDex) MSBuild vlastnost.
AndroidAvoidEmitForPerformance
Logická vlastnost, která určuje, zda System.Reflection.Emit je vynechán, aby se zlepšil výkon při spuštění. Tato vlastnost je True ve výchozím nastavení.
System.Reflection.Emit Použití má výrazný dopad na výkon při spuštění v Androidu. Toto chování je ve výchozím nastavení zakázané pro následující přepínače funkcí:
Switch.System.Reflection.ForceInterpretedInvoke: po druhém voláníMethodInfo.Invoke()neboConstructorInfo.Invoke()je kód emitován za účelem zlepšení výkonu opakovaných volání.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: po druhém volání pro načtení služby z kontejneru injektáže závislostí se vygeneruje kód za účelem zlepšení výkonu opakovaných volání.
Ve většině aplikací pro Android je žádoucí toto chování zakázat.
Podrobnosti o dostupných přepínačích funkcí najdete v dokumentaci k přepínačům funkcí knihoven základních tříd.
Přidáno v .NET 8.
AndroidBinUtilsPath
Cesta k adresáři obsahujícímu nástroje Android binutils, jako je ldnativní linker a asnativní assembler. Tyto nástroje jsou součástí sady funkcí .NET pro Android.
Výchozí hodnota je $(MonoAndroidBinDirectory)\binutils\bin\.
AndroidBoundExceptionType
Řetězcová hodnota, která určuje, jak se mají výjimky šířit, když typ .NET pro Android implementuje typ nebo rozhraní .NET za použití typů Javy, například Android.Runtime.InputStreamInvoker a System.IO.Stream, nebo Android.Runtime.JavaDictionary a System.Collections.IDictionary.
Java: Původní typ výjimky Java je propagován beze změny.Javaznamená, že napříkladInputStreamInvokerneimplementuje správně rozhraníSystem.IO.StreamAPI, protožeJava.IO.IOExceptionmůže být vyvolána zStream.Read()místoSystem.IO.IOException.System: Původní typ výjimky Java je zachycen a zabalen do příslušného typu výjimky .NET.Systemznamená, že napříkladInputStreamInvokersprávně implementujeSystem.IO.Stream, aStream.Read()nevyvoláJava.IO.IOExceptioninstance. (Místo toho může vyvolatSystem.IO.IOException, který obsahujeJava.IO.IOExceptionjako hodnotuException.InnerException.)Systemje výchozí hodnota.
Rozhraní Vázaná na Android Obsahují Konstanty
Logická vlastnost, která určuje, zda budou vazby konstant v rozhraních podporovány, nebo se použije alternativní řešení vytvořením IMyInterfaceConsts třídy.
Výchozí hodnota je True.
AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods
Logická vlastnost, která určuje, zda budou výchozí a statické členy v rozhraních podporovány, nebo zda bude použit starší způsob, kdy se vytvoří sourozenecká třída obsahující statické členy jako abstract class MyInterface.
Výchozí hodnota je True v .NET 6 a False pro starší verzi.
AndroidVázanáRozhraníObsahujíTypy
Logická vlastnost, která určuje, zda typy vnořené do rozhraní budou podporovány, nebo alternativní řešení pro vytvoření nenořeného typu, jako je IMyInterfaceMyNestedClass.
Výchozí hodnota je True v .NET 6 a False pro starší verzi.
AndroidBuildApplicationPackage
Logická hodnota označující, jestli se má balíček vytvořit a podepsat (.apk). Nastavení této hodnoty na True je ekvivalentní použití
SignAndroidPackage cíl sestavení.
Tato vlastnost je False ve výchozím nastavení.
Konfigurační soubor AndroidBundleConfigurationFile
Určuje název souboru, který se má použít jako konfigurační soubor při bundletool vytváření sady aplikací pro Android. Tento soubor řídí některé aspekty, jak jsou APK generovány z balíčku, například na jakých dimenzích je balíček rozdělen pro vytvoření APK.
.NET pro Android nakonfiguruje některá z těchto nastavení automaticky, včetně seznamu přípon souborů, které se mají nechat nekomprimované.
Tato vlastnost je relevantní pouze v případě, že $(AndroidPackageFormat) je nastaveno na aab.
AndroidBundleToolExtraArgs
Určuje možnosti příkazového řádku, které se mají předat příkazu bundletool při sestavování sad aplikací.
AndroidClassParser
Vlastnost typu řetězec, která určuje, jak se soubory .jar analyzují. Mezi možné hodnoty patří:
class-parse: Používá
class-parse.exek přímému parsování bajtového kódu Java bez pomoci JVM.jar2xml: Tato hodnota je zastaralá a už se nepodporuje.
AndroidCodegenTarget
Řetězcová vlastnost, která řídí cílovou ABI generování kódu. Mezi možné hodnoty patří:
XamarinAndroid: Tato hodnota je zastaralá a již není podporována.
XAJavaInterop1: Pro vyvolání JNI použijte Java.Interop. Vázací sestavení používající
XAJavaInterop1lze sestavit a spustit pouze s Xamarin.Android 6.1 nebo novější. Xamarin.Android 6.1 a novější vytvoří vazbuMono.Android.dlls touto hodnotou.JavaInterop1: experimentální hodnota, aktuálně výchozí hodnota pro modul runtime NativeAOT.
Výchozí hodnota je XAJavaInterop1.
AndroidCreatePackagePerAbi
Logická vlastnost, která určuje, zda má být sada souborů - jeden pro každé API zadané v $(AndroidSupportedAbis) - vytvořena místo podpory pro všechny ABI v jednom .apk.
Viz také průvodce vytvářením APK specifických pro ABI.
AndroidCreateProguardMappingFile
Logická vlastnost, která řídí, zda je soubor mapování Proguard generován jako součást procesu sestavení.
Přidáním následující části do souboru csproj se vygeneruje soubor a použije se vlastnost AndroidProguardMappingFile ke kontrole umístění výsledného mapovacího souboru.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Při vytváření .aab souborů se soubor mapování automaticky zahrne do balíčku. Není nutné ho ručně nahrát do Obchodu Google Play. Pokud používáte .apk soubory, bude potřeba je AndroidProguardMappingFile nahrát ručně.
Výchozí hodnota je True při použití $(AndroidLinkTool)=r8.
AndroidDebugKeyAlgorithm
Určuje výchozí algoritmus, který se má použít pro debug.keystore. Výchozí hodnota je RSA.
AndroidDebugKeyValidity
Určuje výchozí platnost, která se má použít pro debug.keystore. Výchozí hodnota je 10950 nebo 30 * 36530 years.
AndroidDebugStoreType
Určuje formát souboru úložiště klíčů, který se má použít pro soubor debug.keystore. Výchozí hodnota je pkcs12.
AndroidDeviceUserId
Umožňuje nasazení a ladění aplikace v rámci hosta nebo pracovních účtů. Jedná se o hodnotu uid, kterou získáte z následujícího příkazu adb:
adb shell pm list users
Výše uvedený příkaz vrátí následující data:
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
Jedná se uid o první celočíselnou hodnotu. Ve výše uvedeném výstupu jsou 0 a 10.
AndroidDexTool
Vlastnost ve stylu výčtu s platnou hodnotou d8.
Dříve byla v Xamarin.Androidu podporována hodnota dx .
Označuje, který kompilátor Android dex se používá během procesu sestavení .NET pro Android.
Výchozí hodnota je d8. Viz naše dokumentace k D8 a R8.
AndroidEnableDesugar
Logická vlastnost, která určuje, zda desugar je povolena. Android v současné době nepodporuje všechny funkce Javy 8 a výchozí sada nástrojů implementuje nové jazykové funkce provedením transformací bajtového kódu volaného desugarna výstup kompilátoru javac . Výchozí hodnota jeFalse, pokud používáte $(AndroidDexTool)=dx a True pokud používáte$(AndroidDexTool)=d8 .
PovolitKontrolyObchoduGooglePlayNaAndroidu
Logická vlastnost, která vývojářům umožňuje zakázat následující kontroly obchodu Google Play: XA1004, XA1005 a XA1006. Zakázání těchto kontrol je užitečné pro vývojáře, kteří necílili na Google Play Store a nechtějí tyto kontroly spouštět.
AndroidEnableMarshalMethods
Booleovská vlastnost, která určuje, zda jsou povoleny metody marshalingu LLVM.
Marshal metody LLVM jsou optimalizací spouštění aplikací, která používá nativní vstupní body pro registraci metod Java native.
Tato vlastnost je ve výchozím nastavení false.
Přidáno v .NET 8.
AndroidEnableMultiDex
Logická vlastnost, která určuje, zda bude v konečném .apk použita podpora více dex.
Tato vlastnost je False ve výchozím nastavení.
AndroidEnableProfiler
Synonymum pro vlastnost $(EnableDiagnostics).
Vyžaduje se pro použití dotnet-trace nebo dotnet-gcdump v aplikacích pro Android. Pokud je nastavena na true, zahrnuje do aplikace diagnostickou komponentu mono. Tato komponenta libmono-component-diagnostics_tracing.so je nativní knihovna.
Tato vlastnost je False ve výchozím nastavení.
AndroidEnableObsoleteOverrideInheritance
Logická vlastnost, která určuje, zda vázané metody automaticky dědí atributy [Obsolete] z metod, jež přepisují.
Podpora této vlastnosti byla přidána v .NET 8.
Tato vlastnost je True ve výchozím nastavení.
AndroidEnablePreloadAssemblies
Logická vlastnost, která řídí, zda jsou všechna spravovaná sestavení seskupená v balíčku aplikace načtena během spouštění procesu, nebo ne.
Pokud je nastavena hodnota True, budou všechna sestavení, která jsou součástí balíčku aplikace, načtena během spouštění procesu před vyvoláním kódu aplikace.
Pokud je nastavena možnost False, sestavení budou načtena pouze tehdy, když je to nutné.
Načítání sestavení podle potřeby umožňuje spouštění aplikací rychleji a je také konzistentnější s sémantikou .NET pro stolní počítače.
Pokud chcete zobrazit časové úspory, nastavte debug.mono.log vlastnost Systému tak, aby zahrnovala timing, a vyhledejte Finished loading assemblies: preloaded zprávu v rámci adb logcat.
Aplikace nebo knihovny, které používají náhradu závislostí, mohou případně vyžadovat, aby tato vlastnost byla nastavena, pokud vyžadují, aby vrátila všechna sestavení v rámci sady aplikací, dokonce i když by sestavení jinak nebylo potřeba.
Ve výchozím nastavení je tato hodnota False.
AndroidEnableProfiledAot
Logická vlastnost, která určuje, zda se profily AOT používají během předběžné kompilace.
Profily jsou uvedené v článku
@(AndroidAotProfile) skupina položek. Tato skupina ItemGroup obsahuje výchozí profily. Může být přepsáno odstraněním stávajících profilů AOT a přidáním vlastních profilů AOT.
Tato vlastnost je False ve výchozím nastavení.
AndroidEnableRestrictToAttributes
Vlastnost ve stylu enum s platnými hodnotami obsolete a disable.
Pokud je tato možnost nastavená na obsolete, typy a členy, které jsou označené poznámkou androidx.annotation.RestrictTo Java nebo jsou v neexportovaných balíčcích Java, budou označeny atributem [Obsolete] ve vazbě jazyka C#.
Tento [Obsolete] atribut obsahuje popisnou zprávu s vysvětlením, že vlastník balíčku Java považuje rozhraní API za "interní" a varuje před jeho použitím.
Tento atribut má také vlastní kód XAOBS001 upozornění, aby se dal potlačit nezávisle na "normálním" zastaralém rozhraní API.
Když nastavíte hodnotu disable, rozhraní API se vygeneruje jako normální bez dalších atributů. (Toto chování je stejné jako u rozhraní .NET 8.)
Přidání [Obsolete] atributů místo automatického odebrání rozhraní API bylo provedeno za účelem zachování kompatibility rozhraní API s existujícími balíčky. Pokud místo toho chcete odebrat členy, které mají poznámku @RestrictTonebo jsou v neexportovaných balíčcích Java, můžete kromě této vlastnosti použít soubory Transformace , abyste zabránili vázaní těchto typů:
<remove-node path="//*[@annotated-visibility]" />
Podpora této vlastnosti byla přidána v .NET 8.
Tato vlastnost je ve výchozím nastavení nastavená obsolete .
AndroidEnableSGenConcurrent
Logická vlastnost, která určuje, zda se bude používat souběžný kolektor uvolňování paměti Mono nebo ne.
Tato vlastnost je False ve výchozím nastavení.
AndroidErrorOnCustomJavaObject
Logická vlastnost, která určuje, zda typy mohou implementovat Android.Runtime.IJavaObjectbez toho, aby také dědily z Java.Lang.Object nebo Java.Lang.Throwable:
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
Pokud ano, tyto typy vygenerují chybu XA4212, jinak se vygeneruje upozornění XA4212.
Tato vlastnost je True ve výchozím nastavení.
AndroidExplicitCrunch
Tato nemovitost již není podporována.
AndroidExtraAotOptions
Řetězcová vlastnost, která umožňuje předávání možností do Mono kompilátoru během Aot úlohy pro projekty, které mají buď $(AndroidEnableProfiledAot) nebo $(AotAssemblies) nastaveny na true.
Řetězcová hodnota vlastnosti se přidá do souboru odpovědi při volání mono křížového kompilátoru.
Obecně platí, že tato vlastnost by měla zůstat prázdná, ale v určitých speciálních scénářích může poskytovat užitečnou flexibilitu.
Vlastnost $(AndroidExtraAotOptions) se liší od související $(AndroidAotAdditionalArguments) vlastnosti; $(AndroidAotAdditionalArguments) umístí argumenty oddělené čárkami do --aot možnosti mono kompilátoru.
$(AndroidExtraAotOptions) místo toho předá úplné nezávislé možnosti oddělené mezerami, jako je --verbose nebo --debug do kompilátoru.
AndroidFastDeploymentType
Seznam : hodnot oddělených dvojtečkami pro řízení typů, které lze nasadit do adresáře Rychlé nasazení na cílovém zařízení, když je vlastnost MSBuild u $(EmbedAssembliesIntoApk)False. Pokud je prostředek rychle nasazován, není vložen do vygenerovaného .apk nebo .aab, což může urychlit nasazování. (Čím více je rychle nasazeno, tím méně často je potřeba balíček znovu vytvořit a proces instalace může být rychlejší.) Mezi platné hodnoty patří:
-
Assemblies: Nasaďte sestavy aplikace. -
Dexes: Nasaďte.dexsoubory, nativní knihovny a typemapy. HodnotuDexesje možné použít jenom na zařízeních s Androidem 4.4 nebo novějším (API-19).
Výchozí hodnota je Assemblies.
Podpora pro rychlé nasazování zdrojů a aktiv prostřednictvím daného systému byla odebrána v commitu f0d565fe. Důvodem bylo to, že vyžadovalo, aby fungovalo zastaralé rozhraní API.
**Podpora této funkce byla odebrána v .NET 9.
Experimentální.
AndroidFragmentType
Určuje výchozí plně kvalifikovaný typ, který se má použít pro všechny <fragment> prvky rozložení při generování kódu vazby rozložení. Výchozí hodnota je standardní typ Androidu Android.App.Fragment .
AndroidGenerateJniMarshalMethods
Logická vlastnost, která umožňuje generování metod zařazování JNI v rámci procesu sestavení. Tím se výrazně sníží System.Reflection využití v pomocném kódu pro vazby.
Výchozí hodnota je False. Pokud chtějí vývojáři používat novou funkci metod maršálování JNI, mohou nastavit
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
v jejich .csproj. Alternativně zadejte vlastnost na příkazovém řádku prostřednictvím
-p:AndroidGenerateJniMarshalMethods=True
Experimentální. Výchozí hodnota je False.
AndroidGenerateJniMarshalMethodsAdditionalArguments
Řetězcová vlastnost, kterou lze použít k přidání parametrů do vyvolání jnimarshalmethod-gen.exe a je užitečná pro ladění, takže možnosti jako -v, -d nebo --keeptemp mohou být použity.
Výchozí hodnota je prázdný řetězec. Dá se nastavit v .csproj souboru nebo na příkazovém řádku. Například:
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
or:
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
AndroidGenerateLayoutBindings
Umožňuje generování kódu pro rozložení na pozadí, pokud je nastaveno true, nebo jej zcela zakáže, pokud je nastaveno na false.
Výchozí hodnota je false.
AndroidGenerateResourceDesigner
Výchozí hodnota je true. Pokud je nastavená hodnota false, zakáže generování Resource.designer.cs.
AndroidHttpClientHandlerType
Řídí výchozí System.Net.Http.HttpMessageHandler implementaci, která bude použita výchozím konstruktorem System.Net.Http.HttpClient . Hodnota je název typu podtřídy kvalifikované sestavením HttpMessageHandler, vhodné pro použití s System.Type.GetType(string).
V .NET 6 a novější, tato vlastnost má účinek pouze při použití společně s $(UseNativeHttpHandler)=true.
Nejběžnějšími hodnotami pro tuto vlastnost jsou:
Xamarin.Android.Net.AndroidMessageHandler: K provádění požadavků HTTP použijte rozhraní API Pro Android Java. Podobá se staršíXamarin.Android.Net.AndroidClientHandlerverzi s několika vylepšeními. Podporuje protokol HTTP 1.1 a TLS 1.2. Jedná se o výchozí zpracování HTTP zpráv.System.Net.Http.SocketsHttpHandler, System.Net.Http: Výchozí zpracovatel zpráv v .NET. Podporuje protokol HTTP/2, TLS 1.2 a je doporučenou obslužnou rutinou zpráv HTTP pro použití s Grpc.Net.Client. Tato hodnota je ekvivalentní$(UseNativeHttpHandler)=false.Nezadání nebo prázdný řetězec, což je ekvivalentní
System.Net.Http.HttpClientHandler, System.Net.HttpOdpovídá výchozí možnosti na stránkách vlastností sady Visual Studio.
Průvodce novým projektem vybere tuto možnost pro nové projekty, pokud je minimální verze Androidu nakonfigurovaná na Android 4.4.87 nebo nižší v sadě Visual Studio nebo když je cílové platformy nastavené na moderní vývoj nebo maximální kompatibilitu v sadě Visual Studio pro Mac.
System.Net.Http.HttpClientHandler, System.Net.Http: Použijte spravovanýHttpMessageHandler.Odpovídá spravované možnosti na stránkách vlastností sady Visual Studio.
Poznámka:
V rozhraní .NET 6 nesmí být zadaný typ Xamarin.Android.Net.AndroidClientHandler nebo System.Net.Http.HttpClientHandler ani se nesmí dědit z kterékoliv z těchto tříd. Pokud migrujete z klasického Xamarin.Androidu, použijte AndroidMessageHandler nebo odvoďte vlastní obslužnou rutinu z něj.
Poznámka:
Podpora vlastnosti $(AndroidHttpClientHandlerType) funguje nastavením proměnné prostředí XA_HTTP_CLIENT_HANDLER_TYPE.
Hodnota $XA_HTTP_CLIENT_HANDLER_TYPE nalezená v souboru s akcí sestavení
@(AndroidEnvironment) bude mít přednost.
AndroidIgnoreAllJniPreload
Logická hodnota, která, pokud je nastavena na značku true, vylučuje všechny nativní knihovny JNI z předběžného načítání při spuštění aplikace. Ve výchozím nastavení budou všechny tyto knihovny načteny modulem runtime v rané fázi spouštění aplikace, aby se zajistila jejich správná inicializace. V některých případech však nemusí být žádoucím chováním a tato vlastnost umožňuje efektivní zakázání.
Některé knihovny architektury, které musí být načteny při spuštění aplikace, nebudou touto vlastností ovlivněny.
Viz také @(AndroidNativeLibraryNoJniPreload) pro detailnější způsob, jak vyloučit knihovny z mechanismu předběžného načtení.
AndroidIncludeWrapSh
Logická hodnota, která označuje, zda se má obálkový skript androidu (wrap.sh) zabalit do APK. Výchozí hodnota je false, protože skript obálky může významně ovlivnit způsob, jakým se aplikace spouští a funguje. Skript by měl být zahrnut pouze tehdy, když je to nezbytné, například při ladění nebo jiných změnách chování aplikace při spuštění nebo běhu.
Skript se přidá do projektu pomocí
@(AndroidNativeLibrary) akce sestavení, protože je umístěna ve stejném adresáři jako nativní knihovny specifické pro architekturu a musí být pojmenována wrap.sh.
Nejjednodušší způsob, jak zadat cestu ke wrap.sh skriptu, je umístit ji do adresáře pojmenovaného po cílové architektuře. Tento přístup bude fungovat, pokud máte jenom jedno wrap.sh pro každou architekturu:
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
Pokud ale váš projekt potřebuje více než jednu wrap.sh architekturu pro různé účely, tento přístup nebude fungovat.
Místo toho lze v takových případech zadat název pomocí Link metadat:AndroidNativeLibrary
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Link Pokud jsou metadata používána, cesta zadaná v jejich hodnotě musí být platná cesta ke knihovně specifická pro nativní architekturu, vzhledem ke kořenovému adresáři APK. Formát cesty je lib\ARCH\wrap.sh kde ARCH může být jedna z:
arm64-v8aarmeabi-v7ax86_64x86
AndroidIncludeAssetPacksInPackage
Tato vlastnost určuje, jestli se sestavení Asset Pack automaticky zahrne do konečného .aab souboru. Výchozí hodnota bude true.
V některých případech může uživatel chtít vydat dočasnou verzi. V těchto případech uživatel nemusí aktualizovat balíček assetů. Zvláště pokud se obsah balíčku assetů nezměnil. Tato vlastnost umožňuje uživateli přeskočit balíčky prostředků, pokud nejsou povinné.
Přidáno v .NET 9
AndroidInstallJavaDependencies
Výchozí hodnota je true pro sestavení příkazového řádku. Pokud je tato možnost nastavená na true, povolí instalaci sady Java SDK při spuštění <InstallAndroidDependencies/> cíle.
Podpora této vlastnosti byla přidána v .NET 9.
AndroidJavadocVerbosity
Určuje, jak podrobné by měly být komentáře dokumentace jazyka C# XML, když se provádí import dokumentace Javadoc v rámci projektů typu vazba.
Vyžaduje použití
@(JavaSourceJar) akce kompilace.
Vlastnost $(AndroidJavadocVerbosity) je výčtová, s možnými hodnotami full nebo intellisense:
-
intellisense: Vygenerujte pouze komentáře XML:<exception/>,<param/><returns/>, ,<summary/>. -
full: Emitovat prvkyintellisense, stejně jako<remarks/>,<seealso/>a cokoli jiného, co je podporováno.
Výchozí hodnota je intellisense.
AndroidKeyStore
Logická hodnota označující, jestli se mají použít vlastní podpisové informace. Výchozí hodnota je False, což znamená, že výchozí ladicí podpisový klíč se použije k podepisování balíčků.
AndroidLaunchActivity
Aktivita Androidu, která se má spustit.
AndroidLinkMode
Určuje, jaký typ propojení se má provést u sestavení obsažených v balíčku Android. Používá se jenom v projektech aplikací pro Android. Výchozí hodnota je SdkOnly. Platné hodnoty jsou:
Žádné: Nepokusí se žádné propojení.
SdkOnly: Propojení se provede pouze v knihovnách základních tříd, nikoli v sestaveních uživatele.
Úplné: Linkování bude provedeno v knihovnách základních tříd a uživatelských sestavách.
Poznámka:
AndroidLinkModePoužití hodnoty Full často vede k problémovým aplikacím, zejména pokud se používá reflexe. Vyhněte se, pokud opravdu nevíte, co děláte.
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
Když true systém sestavení propojí vnořené typy třídy Resource.Designer.cs Resource ve všech sestaveních. Kód IL, který tyto typy používá, se aktualizuje tak, aby místo přístupu k polím používal hodnoty přímo.
Propojení vnořených typů může mít malý dopad na snížení velikosti apk a může také pomoct s výkonem při spuštění. Propojené jsou pouze buildy Release.
Experimentální. Navržené pouze pro práci s kódem, jako je například
var view = FindViewById(Resources.Ids.foo);
Nebudou podporovány žádné jiné scénáře (například reflexe).
AndroidLinkSkip
Určuje seznam názvů sestavení oddělených středníkem (;) bez přípon souborů sestavení, která by neměla být propojena. Používá se jenom v rámci projektů aplikací pro Android.
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
Vlastnost ve stylu výčtu s platnými hodnotami proguard nebo r8. Určuje, který zmenšovač kódu se používá pro kód Java. Výchozí hodnota je prázdný řetězec, nebo proguard pokud $(AndroidEnableProguard) je True. Viz naše dokumentace k D8 a R8.
AndroidLintEnabled
Logická vlastnost, která umožňuje vývojáři spustit nástroj android lint jako součást procesu balení.
Pokud $(AndroidLintEnabled)=True, použijí se následující vlastnosti:
Můžete také použít následující akce sestavení:
Další podrobnosti o nástrojích androidu najdete v nápovědě k Lintlint.
AndroidLintPovolenéProblémy
Řetězcová vlastnost, která je seznamem problémů lint oddělených čárkami, které se mají povolit.
Používá se pouze v případech, kdy $(AndroidLintEnabled)=True.
AndroidLintDisabledIssues
Řetězcová vlastnost, která je seznamem lint chyb oddělených čárkami k vypnutí.
Používá se pouze v případech, kdy $(AndroidLintEnabled)=True.
AndroidLintCheckIssues
Řetězcová vlastnost, která je čárkami odděleným seznamem linterských problémů ke kontrole.
Používá se pouze v případech, kdy $(AndroidLintEnabled)=True.
Poznámka: Zkontroluje se pouze tyto problémy.
AndroidManagedSymbols
Logická vlastnost, která řídí, zda se generují sekvenční body, aby bylo možné extrahovat informace o názvu souboru a čísle řádku ze Release stop zásobníku.
AndroidManifest
Určuje název souboru, který se má použít jako šablona aplikace AndroidManifest.xml.
Během sestavení se všechny ostatní nezbytné hodnoty sloučí do vytvoření skutečné AndroidManifest.xml.
Musí $(AndroidManifest) obsahovat název balíčku v atributu /manifest/@package .
AndroidManifestMerger
Určuje implementaci slučování AndroidManifest.xml souborů. Toto je vlastnost typu výčtu, kde legacy vybere původní implementaci jazyka C# a manifestmerger.jar vybere Java implementaci od Googlu.
Výchozí hodnota je nyní manifestmerger.jar. Pokud chcete použít starou verzi, přidejte do csproj následující:
<AndroidManifestMerger>legacy</AndroidManifestMerger>
Fúze společnosti Google umožňuje podporu xmlns:tools="http://schemas.android.com/tools", jak je popsáno v dokumentaci k Androidu.
AndroidManifestMergerExtraArgs
Řetězcová vlastnost, která poskytuje argumenty k nástroji pro dokumentaci Androidu.
Pokud chcete podrobný výstup z nástroje, můžete k .csproj přidat následující.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Vlastnost ve stylu výčtu s platnými hodnotami Xamarin nebo GoogleV2.
Toto určuje, které úložiště se používá.
InstallAndroidDependencies cílem určit, které balíčky a verze balíčků Pro Android jsou k dispozici a které je možné nainstalovat.
Xamarin je úložiště Schválený seznam (doporučeno) ve Správci sady SDK pro Visual Studio.
GoogleV2 je úplné úložiště seznamu (nepodporované) ve Správci sady Visual Studio SDK.
Pokud $(AndroidManifestType) není nastavená, Xamarin použije se.
AndroidManifestPlaceholders
Seznam párů klíč-hodnota pro nahrazení v AndroidManifest.xml oddělený středníkem, kde každý pár má tento formát key=value.
Například hodnota vlastnosti assemblyName=$(AssemblyName) definuje zástupný symbol ${assemblyName}, který se pak může objevit v AndroidManifest.xml:
<application android:label="${assemblyName}"
To poskytuje způsob, jak vložit proměnné z procesu sestavení do souboruAndroidManifest.xml .
AndroidMultiDexClassListExtraArgs
Řetězcová vlastnost, která umožňuje vývojářům předávat argumenty do com.android.multidex.MainDexListBuilder při generování souboru multidex.keep.
Jedním konkrétním případem je, že se během dx kompilace zobrazuje následující chyba.
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
Pokud se zobrazí tato chyba, můžete přidat následující do .csproj.
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
což umožní dx úspěšné dokončení kroku.
AndroidPackageFormat
Vlastnost ve stylu výčtu s platnými hodnotami apk nebo aab. Označuje, jestli chcete zabalit aplikaci pro Android jako soubor APK nebo sadu aplikací pro Android. Sady aplikací jsou nový formát buildů Release , které jsou určené k odeslání na Google Play. Výchozí hodnota je apk.
Pokud je $(AndroidPackageFormat) nastavena na aab, jsou nastaveny další vlastnosti MSBuild, jež jsou potřebné pro Android App Bundles.
-
$(AndroidUseAapt2)jeTrue. -
$(AndroidUseApkSigner)jeFalse. -
$(AndroidCreatePackagePerAbi)jeFalse.
Tato vlastnost bude pro .net 6 zastaralá. Uživatelé by měli přepnout na novější AndroidPackageFormats.
Formáty balíčků Android
Vlastnost oddělená středníkem s platnými hodnotami apk a aab.
Označuje, jestli chcete zabalit aplikaci pro Android jako soubor APK nebo sadu aplikací pro Android. Sady aplikací jsou nový formát buildů Release , které jsou určené k odeslání na Google Play.
Při vytváření verze vydání můžete chtít vygenerovat jak aab, tak apk pro distribuci do různých obchodů.
Nastavením AndroidPackageFormats na aab;apk se vygenerují obě. Nastavení AndroidPackageFormats na aab nebo apk vygeneruje pouze jeden soubor.
Výchozí hodnota je aab;apk pouze pro Release sestavení.
Použití apk pro ladění je rychlejší, ale aab se také podporuje a existuje možnost rychlého nasazení v případě potřeby (například při testování balíčků prostředků).
AndroidPackageNamingPolicy
Vlastnost typu výčtového pro zadání názvů balíčků pro vygenerovaný zdrojový kód Java.
Jediná podporovaná hodnota je LowercaseCrc64.
AndroidPrepareForBuildDependsOn
Středníkem oddělená vlastnost, kterou lze použít k rozšíření procesu sestavení Androidu. Cíle nástroje MSBuild přidané do této vlastnosti se spustí v rané fázi sestavení pro typy projektů aplikace i knihovny. Tato vlastnost je ve výchozím nastavení prázdná.
Příklad:
<PropertyGroup>
<AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
AndroidProguardMappingFile
Určuje pravidlo ProGuard pro -printmappingr8. To znamená, že se soubor mapping.txt vytvoří ve složce $(OutputPath). Tento soubor pak můžete použít při nahrávání balíčků do Obchodu Google Play.
Ve výchozím nastavení se tento soubor vytvoří automaticky při použití AndroidLinkTool=r8 a vygeneruje následující soubor $(OutputPath)mapping.txt.
Pokud nechcete vygenerovat tento soubor mapování, můžete tuto vlastnost použít AndroidCreateProguardMappingFile k zastavení jeho vytváření .
Přidejte do projektu následující:
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
nebo použijte -p:AndroidCreateProguardMappingFile=False na příkazovém řádku.
AndroidD8IgnoreWarnings
Určuje, že --map-diagnostics warning info se má předat do d8. Výchozí hodnota je True, ale lze ji nastavit na False pro vynucení přísnějšího chování. Podrobnosti najdete ve zdrojovém kódu D8 a R8 .
Přidáno v .NET 8.
AndroidR8IgnoreWarnings
Určuje pravidlo ProGuard pro -ignorewarningsr8. To umožňuje r8 pokračovat v kompilaci dex, i když jsou zjištěna určitá upozornění. Výchozí hodnota je True, ale lze ji nastavit na False pro vynucení přísnějšího chování. Podrobnosti najdete v příručce ProGuard .
Počínaje se rozhraním .NET 8 se určuje --map-diagnostics warning info. Podrobnosti najdete ve zdrojovém kódu D8 a R8 .
AndroidR8JarPath
Cesta k r8.jar pro použití s R8 dex-kompilátorem a nástrojem na zmenšení. Výchozí hodnota je cesta k instalaci úloh .NET pro Android. Další informace najdete v naší dokumentaci k D8 a R8.
AndroidResgenExtraArgs
Určuje možnosti příkazového řádku, které se mají předat příkazu aapt při zpracování prostředků a zdrojů Androidu.
AndroidResgenFile
Určuje název souboru prostředků, který se má vygenerovat. Výchozí šablona tuto možnost nastaví na Resource.designer.cs.
AndroidResourceDesignerClassModifier
Určuje modifikátor třídy pro zprostředkující Resource třídu, která je generována. Platné hodnoty jsou public a internal.
Ve výchozím nastavení to bude public.
Přidáno v .NET 9.
AndroidSdkBuildToolsVersion
Balíček nástrojů pro sestavení sady Android SDK nabízí mimo jiné nástroje aapt a zipalign . Současně může být nainstalováno několik různých verzí balíčku build-tools. Balíček build-tools zvolený pro balení se provádí kontrolou a použitím "upřednostňované" verze build-tools, pokud je k dispozici; pokud není k dispozici "upřednostňovaná" verze, použije se balíček build-tools s nejvyšší verzí.
Vlastnost $(AndroidSdkBuildToolsVersion) MSBuild obsahuje upřednostňovanou verzi build-tools. Systém sestavení .NET pro Android poskytuje výchozí hodnotu Xamarin.Android.Common.targets, a tato výchozí hodnota může být přepsána ve vašem souboru projektu k tomu, abyste si mohli vybrat alternativní verzi nástrojů pro sestavení, pokud (například) dochází k havárii nejnovější verze aapt, zatímco je známo, že předchozí verze aapt funguje.
AndroidSigningKeyAlias
Určuje alias klíče v úložišti klíčů. Toto je hodnota keytool -alias použitá při vytváření úložiště klíčů.
AndroidSigningKeyPass
Určuje heslo klíče v souboru úložiště klíčů. Toto je hodnota zadaná při keytool zadání hesla klíče pro $(AndroidSigningKeyAlias).
Tato vlastnost také podporuje env: a file: předpony, které lze použít k zadání proměnné prostředí nebo souboru, který obsahuje heslo.
Tyto možnosti poskytují způsob, jak zabránit zobrazení hesla v protokolech sestavení.
Pokud například chcete použít proměnnou prostředí s názvem AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
Chcete-li použít soubor umístěný v C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
Poznámka:
Předpona env: není podporována, když je $(AndroidPackageFormat) nastavena na aab.
AndroidSigningKeyStore (úložiště podpisových klíčů)
Určuje název souboru úložiště klíčů, který keytoolvytvořil . To odpovídá hodnotě poskytnuté parametru keytool -keystore .
AndroidSigningStorePass
Určuje heslo pro $(AndroidSigningKeyStore).
Toto je hodnota zadaná keytool při vytváření souboru úložiště klíčů a požádala o zadání hesla úložiště klíčů:.
Tato vlastnost také podporuje env: a file: předpony, které lze použít k zadání proměnné prostředí nebo souboru, který obsahuje heslo. Tyto možnosti poskytují způsob, jak zabránit zobrazení hesla v protokolech sestavení.
Pokud například chcete použít proměnnou prostředí s názvem AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
Chcete-li použít soubor umístěný v C:\Users\user1\AndroidSigningPassword.txt:
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
Poznámka:
Předpona env: není podporována, když je $(AndroidPackageFormat) nastavena na aab.
AndroidSigningPlatformKey
Určuje soubor klíče, který se má použít k podepsání apk.
Používá se jenom při vytváření system aplikací.
AndroidSigningPlatformCert
Určuje soubor certifikátu, který se má použít k podepsání apk.
Používá se jenom při vytváření system aplikací.
AndroidStripILAfterAOT
Bool vlastnost, která určuje, zda budou těla metod zkompilovaných metod AOT odebrána.
Výchozí hodnota je false, a těla metod zkompilovaných metod AOT nebudou odebrána.
Pokud je hodnota true nastavena, $(AndroidEnableProfiledAot) je ve výchozím nastavení nastavena na hodnotu false.
To znamená, že v buildech konfigurace vydané verze – ve výchozím $(RunAOTCompilation)true nastavení – AOT je pro všechno povolené.
To může vést ke zvýšení velikosti aplikací. Toto chování lze přepsat explicitním nastavením $(AndroidEnableProfiledAot) na true v rámci souboru projektu.
Experimentální podpora této vlastnosti byla přidána v .NET 8, odebrána v .NET 10.
AndroidStripNativeLibraries
Logická vlastnost, která procesu balení říká, že má odstranit ladicí symboly z nativních sdílených knihoven (.so souborů).
Výchozí hodnota je false a symboly ladění, pokud existují, se při balení zachovají.
AndroidSupportedAbis
Řetězcová vlastnost, která obsahuje středník (;) oddělený seznam ABI, které by měly být zahrnuty do .apk.
Mezi podporované hodnoty patří:
armeabi-v7ax86arm64-v8ax86_64
AndroidTlsProvider
Tato vlastnost je zastaralá a neměla by se používat.
AndroidUseAapt2
Toto byla vlastnost Xamarin.Android, která nemá žádný vliv na .NET pro Android.
aapt2 je vždy používán a nelze ho zakázat.
AndroidUseApkSigner
Logická vlastnost, která umožňuje vývojáři používat apksigner nástroj místo jarsigner.
AndroidUseDefaultAotProfile
Booleovská vlastnost, která umožňuje vývojáři potlačení použití výchozích profilů AOT.
Chcete-li potlačit výchozí profily AOT, nastavte vlastnost na false.
AndroidUseDesignerAssembly
Logická proměnná, která řídí, jestli systém sestavení vygeneruje _Microsoft.Android.Resource.Designer.dll na rozdíl od Resource.Designer.cs souboru. Výhody tohoto jsou menší aplikace a rychlejší spouštění.
Výchozí hodnota je true v .NET 8.
Jako autor nugetu doporučujeme odeslat tři verze sestavení, pokud chcete zachovat zpětnou kompatibilitu.
Jeden pro MonoAndroid, jeden pro net6.0-android a jeden pro net8.0-android. Můžete to provést pomocí Xamarin.Legacy.Sdk. To se vyžaduje jenom v případě, že projekt knihovny NuGet využívá AndroidResource položky v projektu nebo prostřednictvím závislosti.
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
Alternativně toto nastavení vypněte až do doby, dokud nedojde ke zrušení podpory pro Classic i net7.0-android.
Projekty .NET 8, které se rozhodnou toto nastavení vypnout, nebudou moct využívat odkazy, které ho používají. Pokud se pokusíte použít sestavení, které má tuto funkci povolenou v projektu, který ne, zobrazí se XA1034 chyba sestavení.
Přidáno v .NET 8.
AndroidUseInterpreter
Booleovská vlastnost, která způsobuje, že .apk obsahuje mono interpret, a ne normální JIT.
Experimentální.
AndroidUseLegacyVersionCode
Logická vlastnost, která umožňuje vývojáři vrátit výpočet versionCode zpět na původní chování Xamarin.Android 8.2. Tato možnost by se měla používat jenom pro vývojáře s existujícími aplikacemi v Obchodě Google Play. Důrazně doporučujeme použít novou $(AndroidVersionCodePattern) vlastnost.
AndroidUseManagedDesignTimeResourceGenerator
Logická vlastnost, která přepne sestavení během návrhu tak, aby používala analyzátor spravovaných zdrojů namísto aapt.
AndroidUseNegotiateAuthentication
Logická vlastnost, která umožňuje podporu autentizace NTLMv2/Negotiate v AndroidMessageHandler. Výchozí hodnota je False.
Přidáno v .NET 7.
AndroidUseSharedRuntime
Tato vlastnost je zastaralá a neměla by se používat.
AndroidVersionCode
Vlastnost MSBuild, kterou lze použít jako alternativu /manifest/@android:versionCode k AndroidManifest.xml souboru. Chcete-li se přihlásit k této funkci, musíte také povolit <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Toto bude výchozí nastavení v .NET 6.
Tato vlastnost je ignorována, pokud $(AndroidCreatePackagePerAbi) a $(AndroidVersionCodePattern) jsou použity.
@android:versionCode je celočíselná hodnota, která se musí zvýšit pro každou verzi Google Play. Další podrobnosti o požadavcích najdete v /manifest/@android:versionCode.
AndroidVersionCodePattern
Řetězcová vlastnost, která umožňuje vývojáři přizpůsobit versionCode v manifestu.
Viz Vytvoření kódu verze pro APK pro informace o rozhodování versionCodepři výběru verze.
Některé příklady: pokud abi je armeabi a versionCode v manifestu je 123, {abi}{versionCode} vytvoří kód verze 1123, pokud $(AndroidCreatePackagePerAbi) je pravda; jinak vytvoří hodnotu 123.
Pokud je abi a x86_64 a versionCode v manifestu je 44. Toto vytvoří 544, pokud $(AndroidCreatePackagePerAbi) je pravda, jinak vytvoří hodnotu 44.
Pokud zahrneme formátovací řetězec pro levé odsazení {abi}{versionCode:0000}, vytvoří se 50044, protože levě odsazujeme versionCode s 0. Alternativně můžete použít desetinné zarovnání, například
{abi}{versionCode:D4} což se shoduje s předchozím příkladem.
Podporovány jsou pouze řetězce formátu pro vyplňování '0' a 'Dx', protože hodnota musí být celé číslo.
Předdefinované klíčové položky
abi – vloží cílenou abi pro aplikaci.
- 2 –
armeabi-v7a - 3 –
x86 - 4 –
arm64-v8a - 5 –
x86_64
- 2 –
minSDK – vloží minimální podporovanou hodnotu SDK z
AndroidManifest.xmlnebo11, pokud není žádná definována.versionCode – používá kód verze přímo z
Properties\AndroidManifest.xml.
Vlastní položky můžete definovat pomocí $(AndroidVersionCodeProperties) vlastnosti (definované dále).
Ve výchozím nastavení bude hodnota nastavena na {abi}{versionCode:D6}. Pokud chce vývojář zachovat staré chování, můžete výchozí nastavení přepsat nastavením vlastnosti na $(AndroidUseLegacyVersionCode)true
AndroidVersionCodeProperties
Řetězcová vlastnost, která umožňuje vývojáři definovat vlastní položky, které se mají použít s objektem $(AndroidVersionCodePattern).
Jsou ve formě páru key=value . Všechny položky v celé hodnotě value by měly být celé číslo. Například: screen=23;target=$(_AndroidApiLevel). Jak vidíte, můžete použít existující nebo vlastní vlastnosti MSBuild v řetězci.
ApplicationId
Vlastnost MSBuild, kterou lze použít jako alternativu /manifest/@package k AndroidManifest.xml souboru. Chcete-li se přihlásit k této funkci, musíte také povolit <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Toto bude výchozí nastavení v .NET 6.
Další podrobnosti o požadavcích najdete v /manifest/@package.
Název aplikace
Vlastnost MSBuild, kterou lze použít jako alternativu /manifest/application/@android:label k AndroidManifest.xml souboru. Chcete-li se přihlásit k této funkci, musíte také povolit <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Toto bude výchozí nastavení v .NET 6.
Další podrobnosti o požadavcích najdete v /manifest/application/@android:label.
Verze aplikace
Vlastnost MSBuild, kterou lze použít jako alternativu /manifest/@android:versionName k AndroidManifest.xml souboru. Chcete-li se přihlásit k této funkci, musíte také povolit <GenerateApplicationManifest>true</GenerateApplicationManifest>.
Toto bude výchozí nastavení v .NET 6.
Další podrobnosti o požadavcích najdete v /manifest/@android:versionName.
AotAssemblies
Booleovská vlastnost, která určuje, zda budou sestavení dopředu zkompilována do nativního kódu a poté zahrnuta do aplikací.
Tato vlastnost je False ve výchozím nastavení.
Zastaralé v .NET 7. Místo toho migrujte na novou $(RunAOTCompilation) vlastnost MSBuild, protože podpora $(AotAssemblies) bude odebrána v budoucí verzi.
AProfUtilExtraOptions
Další možnosti pro předání aprofutil.
BeforeBuildAndroidAssetPacks
Cíle nástroje MSBuild uvedené v této vlastnosti budou spuštěny přímo před sestavením AssetPack položek.
Přidáno v .NET 9
BeforeGenerateAndroidManifest
Cíle nástroje MSBuild uvedené v této vlastnosti budou spuštěny přímo před _GenerateJavaStubs.
Konfigurace
Určuje konfiguraci sestavení, která se má použít, například "Debug" nebo "Release". Vlastnost Configuration slouží k určení výchozích hodnot pro jiné vlastnosti, které určují chování cíle. V integrovaném vývojovém prostředí (IDE) se můžou vytvořit další konfigurace.
Ve výchozím nastaveníDebug konfigurace povede k
Install a
SignAndroidPackage cílí na vytvoření menšího balíčku Pro Android, který vyžaduje, aby byly k provozu přítomny další soubory a balíčky.
Výchozí Release konfigurace bude mít za následek
Install a
SignAndroidPackage cílí na vytvoření balíčku pro Android, který je samostatný a může být použit bez instalace jiných balíčků nebo souborů.
DebugSymbols
Logická hodnota, která určuje, zda je balíček Android laditelný v kombinaci s vlastností $(DebugType).
Laditelný balíček obsahuje ladicí symboly, nastaví //application/@android:debuggable atribut na true a automaticky přidá
INTERNET oprávnění, aby se ladicí program mohl připojit k procesu. Aplikace je laditelná, pokud DebugSymbols je TrueaDebugType je buď prázdným řetězcem, nebo Full.
Typ ladění
Určuje typ symbolů ladění , které se mají vygenerovat jako součást sestavení, což má vliv také na to, jestli je aplikace laditelná. Mezi možné hodnoty patří:
Úplné: Vygenerují se úplné symboly. Pokud
DebugSymbolsVlastnost MSBuild je takéTrue, balíček aplikace je laditelný.PdbOnly: Generují se symboly PDB. Balíček aplikace není možné ladit.
Pokud DebugType není nastaven nebo je prázdný řetězec, vlastnost DebugSymbols určuje, zda je aplikace laditelná či nikoliv.
Zařízení
Určuje, které zařízení Android nebo emulátor se mají cílit při použití cílů MSBuild, které pracují se zařízeními (například dotnet run --device <Device>, Run nebo Install).
Hodnota musí být celé sériové číslo nebo identifikátor zařízení, jak je vráceno voláním adb devices. Například, pokud je sériové číslo zařízení emulator-5554, musíte použít -p:Device=emulator-5554.
Při nastavení se tato vlastnost používá k inicializaci vlastnosti AdbTarget s hodnotou -s "<Device>".
Další informace o výběru zařízení najdete ve specifikaci výběru zařízení sady .NET SDK.
DiagnosticAddress
Hodnota poskytovaná dotnet-dsrouter, jako je 127.0.0.1, komponenta IP adresy $(DiagnosticConfiguration) nebo $DOTNET_DiagnosticPorts.
Implicitně povolí diagnostickou komponentu Mono, což znamená, že $(EnableDiagnostics)/$(AndroidEnableProfiler) je nastavena na true.
Výchozí hodnota je 127.0.0.1.
Konfigurace diagnostiky
Hodnota poskytovaná dotnet-dsrouter pro $DOTNET_DiagnosticPorts, například:
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
Všimněte si, že , znak bude muset být escapován %2c pokud je předán v příkazovém řádku dotnet build:
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
Tím se automaticky nastaví $DOTNET_DiagnosticPorts proměnná prostředí zabalená uvnitř aplikace.
Implicitně povolí diagnostickou komponentu Mono, což znamená, že $(EnableDiagnostics)/$(AndroidEnableProfiler) je nastavena na true.
DiagnosticListenMode
Hodnota poskytovaná dotnet-dsrouter, jako je komponenta režimu poslechu connect, $(DiagnosticConfiguration) nebo $DOTNET_DiagnosticPorts.
Implicitně povolí diagnostickou komponentu Mono, což znamená, že $(EnableDiagnostics)/$(AndroidEnableProfiler) je nastavena na true.
Výchozí hodnota je connect.
DiagnosticPort
Hodnota poskytovaná dotnet-dsrouter, například 9000, součást portu $(DiagnosticConfiguration) nebo $DOTNET_DiagnosticPorts.
Implicitně povolí diagnostickou komponentu Mono, což znamená, že $(EnableDiagnostics)/$(AndroidEnableProfiler) je nastavena na true.
Výchozí hodnota je 9000.
Pozastavení diagnostiky
Logická hodnota poskytovaná dotnet-dsrouter, například true/suspend nebo false/nosuspend, jako součást $(DiagnosticConfiguration) nebo $DOTNET_DiagnosticPorts.
Implicitně povolí diagnostickou komponentu Mono, což znamená, že $(EnableDiagnostics)/$(AndroidEnableProfiler) je nastavena na true.
Výchozí hodnota je false.
EmbedAssembliesIntoApk
Logická vlastnost, která určuje, zda mají být sestavení aplikace vložena do balíčku aplikace.
Tato vlastnost by měla být True pro sestavení pro vydání a False pro sestavení pro ladění. Pokud rychlé nasazení nepodporuje cílové zařízení, to může být potřeba v True buildech ladění.
Pokud je tato vlastnost False, pak
$(AndroidFastDeploymentType) Vlastnost MSBuild také řídí, co bude vloženo do .apk nebo .aab, což může ovlivnit časy nasazení a opětovného sestavení.
Povolit diagnostiku
Synonymum pro vlastnost $(AndroidEnableProfiler).
Vyžaduje se pro použití dotnet-trace nebo dotnet-gcdump v aplikacích pro Android. Pokud je nastavena na true, zahrnuje do aplikace diagnostickou komponentu mono. Tato komponenta libmono-component-diagnostics_tracing.so je nativní knihovna.
Tato vlastnost je False ve výchozím nastavení.
EnableLLVM
Logická vlastnost, která určuje, zda LLVM bude použito při kompilaci sestavení předčasně do nativního kódu.
Aby bylo možné vytvořit projekt, který má tuto vlastnost povolenou, je nutné nainstalovat sadu Android NDK.
Tato vlastnost je False ve výchozím nastavení.
Tato vlastnost je ignorována, pokud $(AotAssemblies) není vlastnost MSBuild True.
EnableProguard
Logická vlastnost, která určuje, zda je proguard spuštěn jako součást procesu balení pro propojení kódu Java.
Tato vlastnost je False ve výchozím nastavení.
Když Truese k řízení provádění použijí soubory proguard).
EventSourceSupport
Při nastavení na false se zakáže podpora EventSource pro .NET v optimalizovaných aplikacích pro Android. Zakázáním této funkce zabráníte diagnostickým nástrojům .NET, jako je dotnet-counters fungování, ale ve prospěch zmenšené velikosti aplikace.
false Je nastaveno ve výchozím nastavení v Release režimu, pokud $(EnableDiagnostics) nejsou povoleny nebo $(AndroidEnableProfiler) nejsou povoleny.
GenerovatManifestAplikace
Povolí nebo zakáže následující vlastnosti nástroje MSBuild, které generují hodnoty v konečném AndroidManifest.xml souboru:
Výchozí hodnota $(GenerateApplicationManifest) je true.
JavaMaximumHeapSize
Určuje hodnotu hodnoty parametru Java-Xmx , která se má použít při sestavování .dex souboru v rámci procesu balení. Pokud není zadáno, možnost -Xmx pak poskytuje program java s hodnotou 1G. V porovnání s jinými platformami se zjistilo, že se to v systému Windows běžně vyžaduje.
Určení této vlastnosti je nutné, pokud _CompileDex cíl vyvolá java.lang.OutOfMemoryError.
Upravte hodnotu změnou:
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
Určuje možnosti příkazového řádku, které se mají při sestavování souboru předat .dex.
JarsignerTimestampAuthorityCertificateAlias
Tato vlastnost umožňuje zadat alias v úložišti klíčů pro časovou autoritu. Další podrobnosti najdete v dokumentaci podpory časového razítka podpisu Java.
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
Tato vlastnost umožňuje zadat adresu URL služby autority časového razítka (TSA). Můžete ho použít k zajištění toho, aby podpis .apk obsahoval časové razítko.
Další podrobnosti najdete v dokumentaci podpory časového razítka podpisu Java.
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
Logická vlastnost typu bool, která zabezpečuje generování souboru závislostí linkeru. Tento soubor lze použít jako vstup pro nástroj illinkanalyzer.
Soubor závislostí s názvem linker-dependencies.xml.gz je zapsán do adresáře projektu. V .NET5/6 je to zapsáno vedle propojených sestavení v adresáři obj/<Configuration>/android<ABI>/linked.
Výchozí hodnota je False.
MandroidI18n
Tato vlastnost MSBuild je zastaralá a již není podporována.
MetricsSupport
Při nastavení na false, zakáže podporu metrik technologie .NET v sestříhaných aplikacích pro Android. Zakázáním této funkce zabráníte fungování rozhraní API, jako je System.Diagnostics.Metrics, což však přináší výhodu menší velikosti aplikace.
false Je nastaveno ve výchozím nastavení v Release režimu, pokud $(EnableDiagnostics) nejsou povoleny nebo $(AndroidEnableProfiler) nejsou povoleny.
MonoAndroidAssetPrefix
Určuje předponu cesty, která se odebere ze začátku názvů souborů pomocí akce Sestavení .AndroidAsset To umožňuje změnu umístění prostředků.
Výchozí hodnota je Assets. Změňte to na assets pro strukturu projektu Java.
MonoAndroidResourcePrefix
Určuje předponu cesty, která se odebere ze začátku názvů souborů pomocí akce Sestavení .AndroidResource To umožňuje změnu umístění prostředků.
Výchozí hodnota je Resources. Změňte to na res pro strukturu projektu Java.
MonoSymbolArchive
Poznámka:
Toto byla starší vlastnost MSBuild z Xamarin.Android. Není k dispozici v .NET 6 nebo novějším.
Logická vlastnost, která kontroluje, zda jsou artefakty .mSYM vytvořeny pro pozdější použití s mono-symbolicate, pro extrakci "skutečného" názvu souboru a čísla řádku z informací z tras zásobníku ve verzi Release.
Tato hodnota je ve výchozím nastavení true pro aplikace „Release“, které mají povolené symboly ladění: $(EmbedAssembliesIntoApk) je True,
$(DebugSymbols) je True a
$(Optimize) je pravda.
Spustit AOT kompilaci
Booleovská vlastnost, která určuje, zda budou sestavení dopředu zkompilována do nativního kódu a poté zahrnuta do aplikací.
Tato vlastnost je False ve výchozím nastavení pro Debug sestavení a True ve výchozím nastavení pro Release sestavení.
Tato vlastnost MSBuild nahrazuje $(AotAssemblies) vlastnost MSBuild z Xamarin.Android. Jedná se o stejnou vlastnost, která se používá pro Blazor WASM.
WaitForExit
Logická vlastnost, která řídí chování dotnet run při spouštění aplikací pro Android.
Pokud $(WaitForExit) není false (výchozí dotnet run ), bude:
- Spuštění aplikace pro Android
- Výstup streamu
logcatpřesměrován do procesu aplikace - Počkejte, než se aplikace ukončí nebo uživatel stiskne kombinaci kláves Ctrl+C.
- Vynucení zastavení aplikace při stisknutí kombinace kláves Ctrl+C
Pokud $(WaitForExit) je , falsedotnet runjednoduše spustí aplikaci pomocí adb shell am start a vrátí okamžitě, aniž by čekala, až aplikace ukončí nebo streamuje jakýkoli výstup.
Představeno v .NET 11.