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.
Rozsah modulu runtime
Běžné aplikace pro Android cílí na CoreCLR v .NET 11 a novějších. Aplikace pro Android, které cílí na .NET 10 a starších verzích, ve výchozím nastavení používají Mono. Nastavení $(PublishAot) na true vybere běhové prostředí NativeAOT pro podporovaná publikování nebo optimalizovaná sestavení a má přednost před $(UseMonoRuntime).
$(UseMonoRuntime)=true není záchranná brzda pro .NET 11. Sada SDK .NET 11 ji odmítne s NETSDK1242.
Pokyny k mono .NET 10 a starším používejte pouze v případě, že cílíte na architekturu, ve které se podporuje Mono.
Aplikace .NET 11 pro Android vyžadují Android API úrovně 24 nebo pozdější.
$(SupportedOSPlatformVersion) nastaví minimální verzi Androidu pro nasazení aplikace a odpovídá položce //uses-sdk/@android:minSdkVersion v manifestu Androidu. Nevybere cílovou sadu SDK ani nepředstavuje zásadu Google Play.
Sady runtime .NET 11 CoreCLR podporují následující identifikátory modulu runtime .NET (RID) a odpovídající binární rozhraní aplikací pro Android (ABI):
-
android-arm:armeabi-v7a -
android-arm64:arm64-v8a -
android-x64:x86_64
Android NativeAOT je experimentální a podporuje stejné tři identifikátory RID. Identifikátory RID se liší od názvů ABI pro Android a architektur systémových imagí emulátoru.
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.
U neprořezaných sestavení používajících mapu typů trimmable se volání GC.KeepAlive() vkládají pouze tehdy, když
$(AndroidEnableLegacyCompatibilityAssemblyFixups) je také True. Ořezaná sestavení používající mapu typů trimmable tato volání nevkládají.
AndroidAotAdditionalArguments
Řetězcová vlastnost, která podporovaným projektům pro .NET 10 a starší, jež používají Mono, umožňuje předávat další čárkami oddělené možnosti v argumentu kompilátoru Mono AOT --aot=.... Vlastnost se používá pouze v případech, kdy je povolena kompilace Mono AOT.
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í $(AndroidExtraAotOptions) vlastnosti; $(AndroidAotAdditionalArguments) je zahrnuta v --aot rámci možnosti, zatímco $(AndroidExtraAotOptions) předá samostatné argumenty přímo procesu kompilátoru Mono AOT.
AndroidAotCustomProfilePath
Soubor, který aprofutil by měl vytvořit pro uložení dat profileru Mono AOT.
Výchozí hodnota je custom.aprof.
Tato vlastnost se vztahuje na starší cíle profilace AOT pro podporované projekty využívající Mono pro .NET 10 a starší.
AndroidAotProfilerPort
Port, ke kterému se má aprofutil připojit při získávání profilovacích dat Mono AOT. Výchozí hodnota je 9999.
Tato vlastnost se vztahuje na starší cíle profilace AOT pro podporované projekty využívající Mono pro .NET 10 a starší.
AndroidAotEnableLazyLoad
Umožňuje odložené načítání sestavení zkompilovaných pomocí Mono AOT namísto jejich přednačtení při spuštění.
Tato vlastnost se vztahuje na podporované .NET 10 a starších projektů, které používají Mono. Výchozí hodnota je True , když je povolená funkce Mono AOT a symboly ladění nejsou zahrnuty. Nenakonfiguruje CoreCLR ani NativeAOT.
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 se má pro každé vybrané ABI systému Android (například arm64-v8a) vytvořit jedno .apk namísto pouze jednoho .apk, které podporuje všechna vybraná ABI. Identifikátory RID v $(RuntimeIdentifiers) vybírají tyto ABI; soubory APK se vytvářejí pro každé ABI, ne pro každý RID.
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 .
AndroidEnableFastDeployment
Logická vlastnost, která určuje, zda je povoleno rychlé nasazení . Rychlé nasazení nainstaluje sestavení mimo balíček aplikace, což může snížit dobu nasazení a opětovného sestavení.
Výchozí hodnota je True pro ladicí sestavení a False pro sestavení pro vydání.
Nastavení této vlastnosti je ekvivalentní nastavení inverzní hodnoty $(EmbedAssembliesIntoApk). Pokud jsou nastaveny obě vlastnosti, $(EmbedAssembliesIntoApk) má přednost.
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.
AndroidEnableLegacyCompatibilityAssemblyFixups
Logická vlastnost, která určuje, zda neořezaná sestavení upravují odkazovaná sestavení tak, aby podporovala starší chování vazeb a chování návrháře prostředků. Mezi tyto úpravy patří přidání chybějících abstraktních metod rozhraní, aktualizace starších odkazů na návrháře prostředků a vkládání volání GC.KeepAlive() do starších vazebních sestavení Xamarin.Android. Ořezaná sestavení používající mapu typů trimmable tyto opravy kompatibility nespouštějí a nastavení této vlastnosti na True je pro ořezaná sestavení také nepovolí.
Výchozí hodnota je $(AndroidTypeMapImplementation), když je Falsetrimmable, a jinak True.
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 má výchozí hodnotu False.
Tuto vlastnost nelze nastavit na hodnotu true, když je $(PublishReadyToRun)true. Nastavení obou vlastností na true zastaví sestavení s chybou XA1049.
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
U mono aplikací se jedná o synonymum vlastnosti $(EnableDiagnostics) . Pokud je to true, je diagnostická komponenta Mono, libmono-component-diagnostics_tracing.so, součástí aplikace.
U aplikací CoreCLR v .NET 11 a novějších tato vlastnost umožňuje konfiguraci diagnostického portu CoreCLR používanou nástroji, jako jsou dotnet-trace a dotnet-gcdump; nepřidává diagnostickou komponentu Mono. NativeAOT je samostatné runtime zvolené pomocí $(PublishAot) a tato vlastnost popisuje pouze podporované chování při balení a konfiguraci pro Android.
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 během kompilace předem (AOT) používají profily Mono AOT, či nikoli. Platí pro podporované projekty pro .NET 10 a starší verze, které používají Mono, a nekonfiguruje ReadyToRun, profily MIBC, dynamické PGO ani NativeAOT.
Profily jsou uvedené v článku
@(AndroidAotProfile) skupina položek. Pokud je profilovaná funkce AOT povolená, je výchozí profil zahrnutý, pokud $(AndroidUseDefaultAotProfile) není false. Vlastní profily lze přidat pomocí @(AndroidAotProfile).
Pokud $(RunAOTCompilation) je true a tato vlastnost není nastavena, je výchozí hodnota true. V důsledku toho se u příslušných sestavení Release, která používají Mono, ve výchozím nastavení použije true.
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 True ve výchozím nastavení. Platí pro podporované projekty .NET 10 a starší, které používají Mono, a nekonfiguruje garbage collectory modulu CoreCLR ani NativeAOT.
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 podporovaným projektům .NET 10 a starším, které používají Mono, předávat samostatné argumenty oddělené středníky přímo procesu kompilátoru AOT Mono. Vlastnost se používá pouze v případech, kdy je povolena kompilace Mono AOT.
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; $(AndroidExtraAotOptions) předá samostatné argumenty procesu, zatímco $(AndroidAotAdditionalArguments) je součástí možnosti oddělené --aot=... čárkami.
AndroidFastDeploymentType
Tato vlastnost byla odebrána v .NET 9 a nemá žádný vliv.
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
Tato experimentální funkce byla odebrána v .NET 11. Nastavení vlastnosti nemá žádný vliv.
AndroidGenerateJniMarshalMethodsAdditionalArguments
Tato experimentální funkce byla odebrána v .NET 11. Nastavení vlastnosti nemá žádný vliv.
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
Poznámka:
Tato vlastnost není v .NET 11 podporována. Odeberte ho ze souboru projektu a místo něj použijte UseNativeHttpHandler.
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.
AndroidInstrumentation
Řetězcová vlastnost, která určuje název třídy runneru instrumentation systému Android používané při spuštění aplikace prostřednictvím dotnet run.
Pokud tato vlastnost není nastavena, dotnet run určí, co má být spuštěno z vygenerovaného AndroidManifest.xml v mezilehlém výstupu:
- Pokud
$(AndroidUseInstrumentation)jetrue, použije se první<instrumentation/>prvek. - V opačném případě je upřednostněn spustitelný prvek
<activity/>a první prvek<instrumentation/>se použije, když aplikace nedefinuje žádnou spouštěcí aktivitu. To umožňujedotnet runaplikaci, jejímž jediným vstupním bodem je podtřídaAndroid.App.Instrumentation, například hostitel BenchmarkDotNet.
Pokud aplikace deklaruje ani jedno, sestavení selže s XA1043. Pokud je $(AndroidUseInstrumentation)true, ale aplikace nedeklaruje žádné <instrumentation/>, sestavení se nezdaří s chybou XA1048.
Při spuštění instrumentace spustí adb shell am instrument -w -r proces dotnet run a ukončí se s nenulovým návratovým kódem, pokud instrumentace selže nebo zavolá Result.Canceled s Instrumentation.Finish(). Nastavení $(WaitForExit) na false ukončí -w, takže se dotnet run vrátí, jakmile je instrumentace spuštěna, a nebudou hlášeny žádné výsledky.
Všechny argumenty za -- jsou předány instrumentaci jako am instrument extras. Argumenty formuláře KEY=VALUE se stanou -e KEY VALUEa všechny zbývající argumenty jsou spojeny do jediného -e args "..." navíc:
dotnet run -- --filter *MyBenchmark*
se předává do Instrumentation.OnCreate(Bundle?) jako arguments.GetString("args").
Představeno v .NET 11.
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.
AndroidManifestSource
Řetězcová vlastnost, která určuje absolutní identifikátor URI nebo existující místní cestu k souboru pro manifest úložiště, který používá
InstallAndroidDependencies cíl. Pokud tato vlastnost není nastavena, použije se výchozí manifest úložiště vybraný $(AndroidManifestType).
Například:
<AndroidManifestSource>https://example.com/AndroidManifestFeed.xml</AndroidManifestSource>
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.
AndroidNdkDirectory
Vlastnost $(AndroidNdkDirectory) určuje vlastní instalační adresář Android NDK. Cestu lze nastavit v souboru projektu nebo na příkazovém řádku:
dotnet build -p:AndroidNdkDirectory=/path/to/android-ndk
Pokud tato vlastnost není nastavená, .NET pro Android vyhledá sadu NDK z nakonfigurovaného vývojového prostředí androidu.
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.
-
$(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.
AndroidR8ObfuscationMode
Vlastnost typu výčtu, která určuje, jak r8 obfuskuje názvy v jazyce Java, je-li $(AndroidLinkTool) nastaveno na r8. Podporované hodnoty jsou:
-
private-memberszachovává Java názvy tříd a rozhraní a veřejné nebo chráněné názvy členů. Privátní členy a členy privátních balíčků můžou být obfuskované a optimalizace R8 je povolená. -
disabledzakáže obfuskaci, zachová všechny názvy v Javě a použije výchozí nastavení Androidu R8 bez optimalizace.
Tato vlastnost nezakazuje zmenšení kódu R8.
Tato vlastnost byla zavedena v servisní verzi .NET 10. Výchozí hodnota je disabled v .NET 10 a v private-members .NET 11 a novějších verzích.
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 podporovaných sestaveních Mono Release pro .NET 8 a .NET 9 – ve kterých je $(RunAOTCompilation) ve výchozím nastavení true – je Mono AOT povoleno pro všechno.
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
Tato vlastnost se už v .NET 6 a novějších nepodporuje. Odstraňte ho a místo názvů ABI pro Android použijte $(RuntimeIdentifier) nebo $(RuntimeIdentifiers) s identifikátory RID .NET.
Například následující nastavení .NET 11 zahrnuje všechny podporované architektury CoreCLR:
<PropertyGroup>
<RuntimeIdentifiers>android-arm;android-arm64;android-x64</RuntimeIdentifiers>
</PropertyGroup>
AndroidTlsProvider
Tato vlastnost je zastaralá a neměla by se používat.
AndroidTypeMapImplementation
Vlastnost ve stylu výčtu, která vybere implementaci mapování typu.
Platné hodnoty jsou llvm-ir a trimmable.
Výchozí hodnota je trimmable, když $(PublishAot) je true, a jinak llvm-ir.
AndroidUseApkSigner
Logická vlastnost, která umožňuje vývojáři používat apksigner nástroj místo jarsigner.
AndroidUseDefaultAotProfile
Logická vlastnost, která umožňuje vývojáři potlačit použití výchozího profilu Mono AOT.
Výchozí profil se použije, když je $(AndroidEnableProfiledAot)true, pokud tato vlastnost není nastavena na false.
Tato vlastnost se vztahuje na podporované .NET 10 a starších projektů, které používají Mono. Nevybírá profily MIBC ani dynamické PGO pro CoreCLR.
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.
AndroidUseInstrumentation
Booleovská vlastnost, která udává, že aplikace je spuštěna prostřednictvím prvku <instrumentation/>, nikoli prostřednictvím <activity/>, například testu nebo hostitele BenchmarkDotNet.
Když true, dotnet run přeloží $(AndroidInstrumentation) z vygenerovaného AndroidManifest.xml a spustí ji pomocí adb shell am instrument, i když aplikace také deklaruje aktivitu, kterou lze spustit.
Výchozí hodnota je $(EnableMSTestRunner), když je truetrue, a jinak false.
Všimněte si, že aplikace, která nemá žádnou spustitelnou položku <activity/>, se bez ohledu na tuto vlastnost spouští prostřednictvím svého <instrumentation/>.
Představeno v .NET 11.
AndroidUseInterpreter
Logická vlastnost, která způsobuje, že MonoVM .apk obsahuje interpret Mono interpreter, a ne běžný JIT. Výchozí hodnota je True pro sestavení Debug, která používají Mono, a False v opačném případě.
Tato vlastnost se vztahuje na podporované .NET 10 a starších projektů, které používají Mono. Nejedná se o nastavení CoreCLR a Android nemá v .NET 11 a novějším žádný interpret.
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
Logická vlastnost, která určuje, zda budou sestavení kompilována metodou Ahead-of-Time (AOT) do nativního kódu pomocí Mono a zahrnuta do aplikací.
Pokud není zadána, její efektivní hodnota se řídí hodnotami $(RunAOTCompilation): False pro sestavení Debug a True pro sestavení Release, která používají Mono v podporovaných cílových rozhraních .NET 10 a starších verzí.
Zastaralé v .NET 7. U podporovaných .NET 10 a starších projektů, které používají Mono, místo toho migrujte na $(RunAOTCompilation) vlastnost MSBuild.
Zadání $(AotAssemblies), včetně nastavení falsena , vygeneruje upozornění XA1029 .
Nastavení na true pro CoreCLR nebo NativeAOT způsobí chybu $(RunAOTCompilation), kvůli které se sestavení zastaví, pokud není nastavena hodnota (nebo se jinak vyhodnotí jako true), protože logika výchozího nastavení předává $(AotAssemblies) do $(RunAOTCompilation).
U projektů CoreCLR pro .NET 11 odeberte $(AotAssemblies) bez přidání $(RunAOTCompilation). CoreCLR nepoužívá kanál Mono AOT.
AProfUtilExtraOptions
Další možnosti, které se mají předat parametru aprofutil, při použití zastaralých cílů profilace Mono AOT v podporovaných projektech pro .NET 10 a starší.
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.
Pokud je tato vlastnost neprázdná a $(AndroidEnableProfiler) není explicitně nastavena falsena , implicitně povolí diagnostiku Androidu.
Pro CoreCLR je výsledný koncový bod TCP obvykle ponechán v rozhraní loopback a používá ho dotnet-dsrouter. Pro emulátor Androidu použijte 10.0.2.2 pro přístup k vývojovému počítači; pro fyzické zařízení použijte 127.0.0.1 se zapnutým přesměrováním portů v Androidu pomocí dotnet-dsrouter server-server --tcp-server 127.0.0.1:9000 --forward-port Android.
Výchozí hodnota je 127.0.0.1.
Konfigurace diagnostiky
Hodnota poskytovaná dotnet-dsrouter pro DOTNET_DiagnosticPorts, například:
127.0.0.1:9000,connect,suspend127.0.0.1:9000,connect,nosuspend
Pokud je diagnostika povolená bez explicitní konfigurace, jsou odvozené výchozí hodnoty adresa127.0.0.1, port DiagnosticSuspend=false9000a DiagnosticListenMode=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%2cconnect%2csuspend
Tím se automaticky nastaví proměnná prostředí DOTNET_DiagnosticPorts, obsažená v aplikaci. V režimu connect se modul runtime systému Android připojí ke nakonfigurovanému koncovému bodu TCP a dotnet-dsrouter přemostí toto připojení k místnímu diagnostickému nástroji. Koncový bod není neověřený a nešifrovaný, proto ho udržujte v místním vývojovém rozhraní.
Nastavení této vlastnosti nebo některé z níže uvedených vlastností komponenty implicitně povolí diagnostiku Androidu, pokud $(AndroidEnableProfiler) není explicitně nastavena na false.
DiagnosticListenMode
Hodnota poskytovaná dotnet-dsrouter, jako je komponenta režimu poslechu connect, $(DiagnosticConfiguration) nebo DOTNET_DiagnosticPorts.
Pokud je tato vlastnost neprázdná a $(AndroidEnableProfiler) není explicitně nastavena falsena , implicitně povolí diagnostiku Androidu.
Výchozí hodnota je connect.
DiagnosticPort
Hodnota poskytovaná dotnet-dsrouter, například 9000, součást portu $(DiagnosticConfiguration) nebo DOTNET_DiagnosticPorts.
Pokud je tato vlastnost neprázdná a $(AndroidEnableProfiler) není explicitně nastavena falsena , implicitně povolí diagnostiku Androidu.
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.
Pokud je tato vlastnost neprázdná a $(AndroidEnableProfiler) není explicitně nastavena falsena , implicitně povolí diagnostiku Androidu.
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 je inverzní funkce $(AndroidEnableFastDeployment). Nové projekty by měly používat $(AndroidEnableFastDeployment) k řízení rychlého nasazení. Pokud jsou nastaveny obě vlastnosti, $(EmbedAssembliesIntoApk) má přednost.
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í.
Povolit hlášení o selhání
Logická vlastnost, která při použití modulu runtime CoreCLR nebo NativeAOT nastaví proměnnou prostředí DOTNET_EnableCrashReport na hodnotu 1. To umožňuje generování zpráv o chybách při spuštění aplikace.
Tato vlastnost je ve výchozím nastavení False a je ignorována, pokud je $(UseMonoRuntime)True.
Povolit diagnostiku
Vlastnost Android SDK/MSBuild, která povoluje diagnostiku pro vybrané běhové prostředí. Je to synonymum pro $(AndroidEnableProfiler) pro aplikace Mono.
V případě CoreCLR povoluje konfiguraci diagnostického portu používanou nástroji dotnet-trace a dotnet-gcdump.
$(EnableDiagnostics) není totéž co proměnná prostředí modulu runtime CoreCLR DOTNET_EnableDiagnostics. První je vyhodnocený cíli sady Android SDK/MSBuild; modul runtime ho načte při zadání jako proměnnou prostředí.
Tato vlastnost je False ve výchozím nastavení.
EnableLLVM
Booleovská vlastnost, která určuje, zda bude kompilátor Mono AOT při kompilaci sestavení metodou Ahead-of-Time (AOT) do nativního kódu používat LLVM.
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 se vztahuje na podporované projekty pro .NET 10 a starší, které používají Mono, a ovlivňuje kompilaci pouze tehdy, když je $(RunAOTCompilation) nastaveno na True.
Nastavení této vlastnosti na true pro CoreCLR nebo NativeAOT ji resetuje na false a zastaví sestavení s chybou XA1044.
EnableMSTestRunner
Logická vlastnost, která umožňuje MSTest Runner pro projekty testů Androidu. Když je nastaveno na true, dotnet run spustí aplikaci prostřednictvím am start namísto am instrument, což umožní hlásit výsledky testů prostřednictvím instrumentačního protokolu Androidu.
Tato vlastnost je False ve výchozím nastavení.
Představeno v .NET 11.
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.
MauiEnableFullReadyToRun
Logická vlastnost pro aplikace .NET MAUI pro Android, které používají CoreCLR a jsou sestavené v konfiguraci Release s povolenou funkcí ReadyToRun.
Pokud tato vlastnost není nastavena nebo false, MAUI používá částečný režim ReadyToRun s výchozími profily MIBC. Nastavte tuto vlastnost na hodnotu true, aby se povolil úplný režim ReadyToRun. Tato vlastnost nemá žádný vliv, pokud $(PublishReadyToRun) je false.
Full ReadyToRun zvyšuje velikost aplikace a stahování, ale může potenciálně zvýšit výkon modulu runtime, protože jsou předkompilovány více metod.
Další informace o CoreCLR a ReadyToRun v .NET MAUI naleznete v tématu Moduly runtime a kompilace v .NET MAUI.
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.
PublishReadyToRun
Logická vlastnost, která řídí, zda sestavení jsou kompilována do formátu ReadyToRun při použití CoreCLR. Sestavení ReadyToRun obsahují jazyk MSIL i nativní kód. To může zlepšit dobu spuštění aplikace při zachování kompatibility JIT, ale zvyšuje velikost aplikace a stahování.
U aplikací pro Android, které používají CoreCLR, má tato vlastnost v konfiguraci Release výchozí hodnotu true a v konfiguraci Debug není ve výchozím nastavení povolena. ReadyToRun se nepoužije při použití Mono nebo NativeAOT.
ReadyToRun vyžaduje ořezání. Pokud $(PublishTrimmed) není true, .NET pro Android zakáže PublishReadyToRun a $(PublishReadyToRunComposite) vygeneruje upozornění XA0119.
Kompilace ReadyToRun je ve výchozím nastavení kompozitní. Viz $(PublishReadyToRunComposite).
.NET MAUI také používá částečnou sadu ReadyToRun s výchozími profily MIBC. Viz $(MauiEnableFullReadyToRun), kde najdete informace o povolení úplného režimu ReadyToRun.
Další informace naleznete v tématu Moduly runtime a kompilace v .NET MAUI.
PublishReadyToRunComposite
Logická vlastnost, která určuje, zda kompilace ReadyToRun sloučí sestavení aplikace do složeného obrazu. Composite ReadyToRun umožňuje optimalizace křížového sestavení, ale může prodloužit dobu sestavení.
Pro aplikace pro Android, které používají CoreCLR, má tato vlastnost výchozí hodnotu true, když je $(PublishReadyToRun) nastaveno na true.
ReadyToRun, včetně kompozitního ReadyToRun, vyžaduje, aby $(PublishTrimmed) bylo true.
Spustit AOT kompilaci
Logická vlastnost, která určuje, zda budou sestavení kompilována metodou Ahead-of-Time (AOT) pomocí kompilátoru Mono AOT a zahrnuta do aplikací, které používají běhové prostředí Mono. Tato vlastnost je ve výchozím nastavení nastavena na False pro sestavení Debug a na True pro sestavení Release, která používají Mono v podporovaných cílových frameworcích .NET 10 a starších.
Tato vlastnost MSBuild nahrazuje $(AotAssemblies) vlastnost MSBuild z Xamarin.Android. Jedná se o stejnou vlastnost, která se používá pro Blazor WASM.
Tato vlastnost nepovoluje ReadyToRun ani NativeAOT. Nastavení na true pro CoreCLR nebo NativeAOT ho resetuje na false a zastaví sestavení s chybou XA1044.
Nastavení na false pro CoreCLR také zastaví sestavení s XA1044 místo tichého ignorování vlastnosti. Počínaje .NET 11 odeberte $(RunAOTCompilation) a nastavte $(PublishReadyToRun) na false a zakažte kompilaci AOT ReadyToRun (R2R).
Nastavení false na $(RunAOTCompilation) pro NativeAOT zůstává povoleno.
UseMonoRuntime
Logická vlastnost, která určuje, zda aplikace pro Android používají běhové prostředí Mono místo CoreCLR pro podporované cíle .NET 10 a starší.
Nastavte tuto vlastnost na true, chcete-li pro tyto cíle použít Mono, nebo na false, chcete-li použít CoreCLR.
$(PublishAot) má přednost a při nastavení na true zvolí NativeAOT pro podporované scénáře publikování nebo optimalizovaná sestavení.
Tato vlastnost je ve výchozím nastavení true v .NET 10 a starších verzích, takže aplikace pro Android používají Mono. V .NET 11 a novějších verzích je výchozí hodnota false, takže aplikace pro Android používají CoreCLR a explicitně zadaná hodnota true je odmítnuta s chybou NETSDK1242.
Další informace naleznete v tématu Moduly runtime a kompilace v .NET MAUI.
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
Když je $(WaitForExit)dotnet run, false jednoduše spustí aplikaci a ihned se vrátí, aniž by čekala, až se aplikace ukončí, nebo streamovala jakýkoli výstup.
Tato vlastnost také řídí, zda adb shell am instrument je předán -w při spuštění aplikace prostřednictvím jeho $(AndroidInstrumentation):
$(WaitForExit) |
Spuštění instance <activity/> |
Spuštění instance <instrumentation/> |
|---|---|---|
true (výchozí) |
adb shell am start -S -W |
adb shell am instrument -w -r |
false |
adb shell am start -S |
adb shell am instrument -r |
Protože adb shell am instrument oznamuje výsledky až po dokončení instrumentace, $(WaitForExit) nesmí být false, pokud potřebujete výstup instrumentace nebo smysluplný návratový kód. To záleží na scénářích, jako jsou spouštění testů nebo hostitele BenchmarkDotNet , což je důvod, proč dotnet test vždy používá výchozí nastavení.
Představeno v .NET 11.