Bouw-eigenschappen

MSBuild-eigenschappen bepalen het gedrag van de doelen.

Ze worden opgegeven in het projectbestand, bijvoorbeeld MyApp.csproj, binnen een MSBuild PropertyGroup.

Opmerking

In .NET voor Android is er technisch gezien geen onderscheid tussen een toepassing en een bindingsproject, zodat eigenschappen in beide werken. In de praktijk wordt het ten zeerste aanbevolen om afzonderlijke toepassings- en bindingsprojecten te maken. Eigenschappen die voornamelijk worden gebruikt in bindingsprojecten, worden beschreven in de referentiehandleiding voor projecteigenschappen van MSBuild-bindingen .

Bereik tijdens runtime

Gewone Android-toepassingen richten zich op CoreCLR in .NET 11 en hoger. Android-toepassingen die zijn gericht op .NET 10 en eerder, gebruiken standaard Mono. Door $(PublishAot) in te stellen op true wordt de NativeAOT-runtime geselecteerd voor ondersteunde publicatiebuilds of geoptimaliseerde builds, en dit heeft voorrang op $(UseMonoRuntime).

$(UseMonoRuntime)=true is geen achterdeurtje voor .NET 11. De .NET 11 SDK weigert deze met NETSDK1242. Gebruik de .NET 10-en-eerdere Mono-richtlijnen alleen wanneer u zich richt op een framework waarvoor Mono wordt ondersteund.

voor .NET 11 Android-toepassingen is Android API-niveau 24 of hoger vereist. $(SupportedOSPlatformVersion) stelt de minimale implementatieversie van de applicatie in en komt overeen met //uses-sdk/@android:minSdkVersion in het Android-manifest. Het selecteert niet de beoogde SDK en weerspiegelt het Google Play-beleid niet.

De .NET 11 CoreCLR-runtimepakketten ondersteunen de volgende .NET runtime-id's (RID's) en bijbehorende binaire Android-toepassingsinterfaces (ABI's):

  • android-arm: armeabi-v7a
  • android-arm64: arm64-v8a
  • android-x64: x86_64

Android NativeAOT is experimenteel en ondersteunt dezelfde drie RID's. RID's verschillen van Android-ABI-namen en architecturen van systeemimages voor emulators.

AdbTarget

Met de $(AdbTarget) eigenschap geeft u het Android-doelapparaat op waaruit het Android-pakket kan worden geïnstalleerd of verwijderd. De waarde van deze eigenschap is hetzelfde als de adb optie Doelapparaat.

AfterGenerateAndroidManifest

MSBuild Targets die in deze eigenschap worden vermeld, worden direct na het interne _GenerateJavaStubs target uitgevoerd, waar het AndroidManifest.xml bestand gegenereerd wordt in de $(IntermediateOutputPath). Als u wijzigingen wilt aanbrengen in het gegenereerde AndroidManifest.xml bestand, kunt u dit doen met behulp van dit extensiepunt.

AndroidAapt2CompileExtraArgs

Hiermee specificeert u commando-regelopties om te gebruiken bij het aanroepen van het aapt2 compile commando wanneer Android-assets en -resources verwerkt worden.

AndroidAapt2LinkExtraArgs

Geeft opdrachtregelopties op om door te geven aan de aapt2 link-opdracht bij het verwerken van Android-assets en -resources.

AndroidAddKeepAlives

Een booleaanse eigenschap die bepaalt of de linker GC.KeepAlive() aanroepen binnen bindingsprojecten invoegt om voortijdige verzameling van objecten te voorkomen.

De standaardwaarde is True voor releaseconfiguratie-builds.

Voor niet-getrimde builds die gebruikmaken van de trimmable-typetoewijzing, worden GC.KeepAlive()-aanroepen alleen ingevoegd wanneer $(AndroidEnableLegacyCompatibilityAssemblyFixups) is ook True. Getrimde builds die gebruikmaken van de trimmable typetoewijzing voegen deze aanroepen niet toe.

AndroidAotAdditionalArguments

Een stringeigenschap waarmee ondersteunde .NET 10-projecten en eerdere projecten die Mono gebruiken, extra door komma's gescheiden opties kunnen doorgeven binnen het --aot=...-argument van de Mono AOT-compiler. De eigenschap wordt alleen gebruikt wanneer Mono AOT-compilatie is ingeschakeld.

Over het algemeen moet deze eigenschap leeg blijven, maar in bepaalde speciale scenario's kan dit nuttige flexibiliteit bieden.

De $(AndroidAotAdditionalArguments) eigenschap verschilt van de gerelateerde $(AndroidExtraAotOptions) eigenschap; $(AndroidAotAdditionalArguments) wordt opgenomen in de --aot optie, terwijl $(AndroidExtraAotOptions) zelfstandige argumenten rechtstreeks worden doorgegeven aan het Mono AOT-compilerproces.

AndroidAotCustomProfilePath

Het bestand dat aprofutil moet aanmaken voor het bewaren van Mono AOT-profilergegevens. De standaardwaarde is custom.aprof.

Deze eigenschap is van toepassing op de verouderde AOT-profileringsdoelen voor ondersteunde .NET 10 en eerdere projecten die gebruikmaken van Mono.

AndroidAotProfilerPort

De poort waarmee aprofutil verbinding moet maken om Mono AOT-profileringsgegevens te verkrijgen. De standaardwaarde is 9999.

Deze eigenschap is van toepassing op de verouderde AOT-profileringsdoelen voor ondersteunde .NET 10 en eerdere projecten die gebruikmaken van Mono.

AndroidAotEnableLazyLoad

Maakt vertraagd laden van mono-AOT-gecompileerde assembly's mogelijk in plaats van ze vooraf te laden bij het opstarten.

Deze eigenschap is van toepassing op ondersteunde .NET 10-en-eerdere projecten die gebruikmaken van Mono. De standaardwaarde is True wanneer Mono AOT is ingeschakeld en foutopsporingssymbolen niet zijn opgenomen. Hiermee worden CoreCLR en NativeAOT niet geconfigureerd.

Geïntroduceerd in .NET 6.

AndroidApkDigestAlgorithm

Een tekenreekswaarde die het digest-algoritme aangeeft dat moet worden gebruikt met jarsigner -digestalg.

De standaardwaarde is SHA-256.

AndroidApkSignerAdditionalArguments

Een tekenreekseigenschap waarmee de ontwikkelaar argumenten kan opgeven voor het apksigner hulpprogramma.

AndroidApkSigningAlgorithm (Android APK Ondertekeningsalgoritme)

Een tekenreekswaarde die het ondertekeningsalgoritme aangeeft dat moet worden gebruikt met jarsigner -sigalg.

De standaardwaarde is SHA256withRSA.

AndroidApplication

Een Booleaanse waarde die aangeeft of het project voor een Android-toepassing (True) of voor een Android-bibliotheekproject (False of niet aanwezig) is.

Er mag slechts één project met <AndroidApplication>True</AndroidApplication> aanwezig zijn in een Android-pakket. (Helaas is deze vereiste niet geverifieerd, wat kan leiden tot subtiele en bizare fouten met betrekking tot Android-resources.)

AndroidApplicationJavaClass

De volledige Java-klassenaam die moet worden gebruikt in plaats van android.app.Application wanneer een klasse wordt overgenomen van Android.App.Application.

De $(AndroidApplicationJavaClass) eigenschap wordt over het algemeen ingesteld door andere eigenschappen, zoals de $(AndroidEnableMultiDex) eigenschap MSBuild.

AndroidAvoidEmitForPerformance

Een booleaanse eigenschap die bepaalt of System.Reflection.Emit 'vermeden' is om de opstartprestaties te verbeteren. Deze eigenschap is True standaard.

Het gebruik van System.Reflection.Emit heeft een merkbare invloed op de opstartprestaties op Android. Dit gedrag is standaard uitgeschakeld voor de volgende functieswitches:

  • Switch.System.Reflection.ForceInterpretedInvoke: na de tweede aanroep naar MethodInfo.Invoke() of ConstructorInfo.Invoke()wordt code verzonden om de prestaties van herhaalde aanroepen te verbeteren.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: na de tweede aanroep om een service op te halen uit een container voor afhankelijkheidsinjectie, wordt code verzonden om de prestaties van herhaalde aanroepen te verbeteren.

Het is wenselijk in de meeste Android-toepassingen om dit gedrag uit te schakelen.

Zie de documentatie over functieswitches voor basisklassebibliotheken voor meer informatie over beschikbare functieswitches.

Toegevoegd in .NET 8.

AndroidBinUtilsPath

Een pad naar een map met de binutils voor Android, zoals ldde native linker en asde native assembler. Deze hulpprogramma's zijn opgenomen in de workload .NET voor Android.

De standaardwaarde is $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Een tekenreekswaarde die aangeeft hoe uitzonderingen moeten worden doorgegeven wanneer een .NET voor android-opgegeven type een .NET-type of -interface implementeert in termen van Java-typen, bijvoorbeeld Android.Runtime.InputStreamInvoker enSystem.IO.Stream, ofAndroid.Runtime.JavaDictionary.System.Collections.IDictionary

  • Java: het oorspronkelijke Java-uitzonderingstype wordt doorgegeven as-is.

    Java betekent dat bijvoorbeeld de InputStreamInvoker API door System.IO.Stream niet goed wordt geïmplementeerd, omdat Java.IO.IOException vanuit Stream.Read() kan worden gegooid in plaats van System.IO.IOException.

  • System: Het oorspronkelijke Java-uitzonderingstype wordt gevangen en verpakt in een geschikt .NET-uitzonderingstype.

    System betekent bijvoorbeeld dat InputStreamInvoker correct System.IO.Stream implementeert en Stream.Read() zal geenJava.IO.IOException exemplaren veroorzaken. (Hij kan in plaats daarvan een System.IO.IOException retourneren die een Java.IO.IOException als Exception.InnerException waarde bevat.)

    System is de standaardwaarde.

Android-gebonden interfaces bevatten constanten

Een booleaanse eigenschap die bepaalt of bindingsconstanten op interfaces worden ondersteund, of de tijdelijke oplossing voor het maken van een IMyInterfaceConsts klasse wordt gebruikt.

De standaardwaarde is True.

AndroidGebondenInterfacesBevattenStaticheEnStandaardInterfaceMethodes

Een booleaanse eigenschap die bepaalt of standaard- en statische leden op interfaces worden ondersteund, of dat de oude noodoplossing wordt gebruikt waarbij een begeleidende klasse met statische leden, zoals abstract class MyInterface, wordt gecreëerd.

De standaardwaarde bevindt zich True in .NET 6 en False voor oudere versies.

AndroidBoundInterfacesBevattenTypes

Een booleaanse eigenschap die aangeeft of typen die genest zijn in interfaces worden ondersteund, of dat er een tijdelijke oplossing is door een niet-genest type te maken, zoals IMyInterfaceMyNestedClass.

De standaardwaarde bevindt zich True in .NET 6 en False voor oudere versies.

AndroidBuildApplicatiePakket

Een Booleaanse waarde die aangeeft of het .apk pakket moet worden gemaakt en ondertekend. Deze waarde instellen op True is gelijk aan het gebruik van de SignAndroidPackage builddoel.

Deze eigenschap is False standaard.

AndroidBundleConfigurationFile

Hiermee geeft u een bestandsnaam op die moet worden gebruikt als een configuratiebestand voor bundletool bij het bouwen van een Android-app-bundel. Dit bestand bepaalt enkele aspecten van hoe API's worden gegenereerd op basis van de bundel, zoals over welke dimensies de bundel wordt gesplitst om API's te produceren. .NET voor Android configureert sommige van deze instellingen automatisch, inclusief de lijst met bestandsextensies om niet-gecomprimeerd te laten.

Deze eigenschap is alleen relevant als $(AndroidPackageFormat) deze is ingesteld op aab.

AndroidBundleToolExtraArgs

Specificeert opdrachtregelopties om door te geven aan de bundletool voor het bouwen van app-bundels.

AndroidClassParser

Een tekenreekseigenschap die bepaalt hoe .jar bestanden worden geparseerd. Mogelijke waarden zijn onder andere:

  • class-parse: wordt gebruikt class-parse.exe om Java-bytecode rechtstreeks te parseren, zonder hulp van een JVM.

  • jar2xml: deze waarde is verouderd en wordt niet meer ondersteund.

AndroidCodegenTarget

Een tekenreekseigenschap waarmee de doel-ABI voor het genereren van code wordt bepaald. Mogelijke waarden zijn onder andere:

  • XamarinAndroid: deze waarde is verouderd en wordt niet meer ondersteund.

  • XAJavaInterop1: Java.Interop gebruiken voor JNI-aanroepen. Bindingassembly's die gebruiken XAJavaInterop1 , kunnen alleen worden gebouwd en uitgevoerd met Xamarin.Android 6.1 of hoger. Vanaf Xamarin.Android 6.1 en hoger wordt Mono.Android.dll met deze waarde gebonden.

  • JavaInterop1: experimentele waarde, momenteel de standaardwaarde voor de NativeAOT-runtime.

De standaardwaarde is XAJavaInterop1.

AndroidCreatePackagePerAbi

Een booleaanse eigenschap die bepaalt of er één .apk per geselecteerde Android ABI (zoals arm64-v8a) moet worden gemaakt in plaats van slechts één ondersteuning .apk voor alle geselecteerde ABI's. De RID's in $(RuntimeIdentifiers) deze ABI's selecteren; API's worden per ABI geproduceerd, niet per RID.

Zie ook de handleiding ABI-specifieke APK's bouwen.

AndroidCreateProguardMappingFile

Een booleaanse eigenschap die bepaalt of een proguard-toewijzingsbestand wordt gegenereerd als onderdeel van het buildproces.

Als u het volgende toevoegt aan uw csproj, wordt het bestand gegenereerd en wordt de AndroidProguardMappingFile eigenschap gebruikt om de locatie van het uiteindelijke toewijzingsbestand te beheren.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

Tijdens de productie van .aab bestanden wordt het koppelingsbestand automatisch opgenomen in uw pakket. Het is niet nodig om het handmatig te uploaden naar de Google Play Store. Wanneer u .apk bestanden gebruikt, moet de AndroidProguardMappingFile handmatig worden geüpload.

De standaardwaarde is True wanneer u =r8 gebruikt $(AndroidLinkTool).

AndroidDebugKeyAlgorithm

Hiermee wordt het standaardalgoritme gespecificeerd dat gebruikt moet worden voor de debug.keystore. De standaardwaarde is RSA.

GeldigheidVanAndroidDebugSleutel

Hiermee geeft u de standaard geldigheid op die moet worden gebruikt voor de debug.keystore. De standaardwaarde is 10950 of 30 * 365 .30 years

AndroidDebugStoreType

Hiermee specificeert u het bestandsformaat van het sleutelopslagbestand dat moet worden gebruikt voor de debug.keystore. De standaardinstelling is pkcs12.

AndroidDeviceUserId

Hiermee staat u het implementeren en opsporen van fouten in de toepassing toe onder gast- of werkaccounts. De waarde is de uid waarde die u krijgt van de volgende adb-opdracht:

adb shell pm list users

Met de bovenstaande opdracht worden de volgende gegevens geretourneerd:

Users:
	UserInfo{0:Owner:c13} running
	UserInfo{10:Guest:404}

Dit uid is de eerste geheelgetalwaarde. In de bovenstaande uitvoer zijn ze 0 en 10.

AndroidDexTool

Een enum-style eigenschap met een geldige waarde van d8. Voorheen werd een waarde van dx ondersteund in Xamarin.Android.

Geeft aan welke Android-dex-compiler wordt gebruikt tijdens het buildproces van .NET voor Android. De standaardwaarde is d8. Raadpleeg onze documentatie over D8 en R8.

AndroidEnableDesugar

Een booleaanse eigenschap die bepaalt of desugar is ingeschakeld. Android biedt momenteel geen ondersteuning voor alle Java 8-functies en de standaardhulpprogrammaketen implementeert de nieuwe taalfuncties door bytecodetransformaties uit te voeren, aangeroepen desugar, op de uitvoer van de javac compiler. De standaardwaarde is False als u deze gebruikt $(AndroidDexTool)=dx en True als u deze gebruikt $(AndroidDexTool)=d8.

AndroidEnableFastDeployment

Een booleaanse eigenschap die bepaalt of Fast Deployment is ingeschakeld. Met snelle implementatie worden assembly's buiten het toepassingspakket geïnstalleerd, waardoor implementatie- en herbouwtijden kunnen worden verminderd.

De standaardwaarde is True voor Builds voor foutopsporing en False voor Release-builds. Het instellen van deze eigenschap is gelijk aan het instellen van de inverse waarde van $(EmbedAssembliesIntoApk). Als beide eigenschappen zijn ingesteld, $(EmbedAssembliesIntoApk) heeft deze prioriteit.

AndroidEnableGooglePlayStoreChecks

Een bool-eigenschap waarmee ontwikkelaars de volgende Google Play Store-controles kunnen uitschakelen: XA1004, XA1005 en XA1006. Het uitschakelen van deze controles is handig voor ontwikkelaars die niet gericht zijn op de Google Play Store en die controles niet willen uitvoeren.

AndroidEnableLegacyCompatibilityAssemblyFixups

Een booleaanse eigenschap die bepaalt of niet-getrimde builds gerefereerde assembly's wijzigen om verouderde binding en het gedrag van de resource-ontwerper te ondersteunen. Deze wijzigingen omvatten het toevoegen van ontbrekende abstracte interfacemethoden, het bijwerken van verouderde verwijzingen naar resourceontwerpers en het invoegen van GC.KeepAlive() aanroepen in oudere Xamarin. Android-bindingassembly's. Bij getrimde builds met de type map trimmable worden deze compatibiliteitsaanpassingen niet uitgevoerd, en als u deze eigenschap instelt op True, worden ze daardoor niet ingeschakeld voor getrimde builds.

De standaardwaarde is False wanneer $(AndroidTypeMapImplementation)trimmable is, en anders True.

AndroidEnableMarshalMethods

Een booleigenschap, die bepaalt of LLVM marshal-methoden zijn ingeschakeld. LLVM marshal-methoden zijn een optimalisatie van het opstarten van apps die systeemeigen toegangspunten gebruikt voor registratie van Java-methoden native .

Deze eigenschap is standaard ingesteld op False.

Deze eigenschap kan niet worden ingesteld op true wanneer $(PublishReadyToRun) is ingesteld op true. Als beide eigenschappen worden ingesteld op true, wordt de build gestopt met XA1049.

Toegevoegd in .NET 8.

AndroidEnableMultiDex

Een booleaanse eigenschap die bepaalt of multi-dex-ondersteuning in de uiteindelijke .apk wordt toegepast.

Deze eigenschap is False standaard.

AndroidEnableProfiler

Voor Mono-toepassingen is dit een synoniem voor de $(EnableDiagnostics) eigenschap. Als dit true is, wordt het diagnostische onderdeel Mono, libmono-component-diagnostics_tracing.so, opgenomen in de applicatie.

Voor CoreCLR-toepassingen in .NET 11 en hoger schakelt deze eigenschap de configuratie van de diagnostische CoreCLR-poort in die wordt gebruikt door hulpprogramma's zoals dotnet-trace endotnet-gcdump; er wordt geen monodiagnostiekonderdeel toegevoegd. NativeAOT is een afzonderlijke runtime die door $(PublishAot) is geselecteerd en deze eigenschap documenteert alleen het ondersteunde Android-verpakkings- en configuratiegedrag.

Deze eigenschap is False standaard.

AndroidEnableObsoleteOverrideInheritance

Een booleaanse eigenschap die bepaalt of afhankelijke methoden kenmerken automatisch overnemen [Obsolete] van methoden die ze overschrijven.

Ondersteuning voor deze eigenschap is toegevoegd in .NET 8.

Deze eigenschap is True standaard.

AndroidEnablePreloadAssemblies

Een booleaanse eigenschap die bepaalt of alle beheerde assembly's die in het toepassingspakket zijn gebundeld, al dan niet worden geladen tijdens het opstarten van het proces.

Indien ingesteld op True, worden alle assembly's die in het toepassingspakket zijn gebundeld, geladen tijdens het opstarten van het proces, voordat er toepassingscode wordt aangeroepen.

Als dit is ingesteld op False, worden assembly's alleen geladen wanneer ze nodig zijn. Als u assembly's indien nodig laadt, kunnen toepassingen sneller worden gestart en is het ook consistenter met de semantiek van desktop .NET. Als u de tijdbesparing wilt zien, stelt u de debug.mono.log systeemeigenschap in op opnemen timingen zoekt u het Finished loading assemblies: preloaded bericht in adb logcat.

Toepassingen of bibliotheken, die gebruikmaken van afhankelijkheidsinjectie, kunnen vereisen dat deze eigenschap is True als ze op hun beurt alle assembly's binnen de toepassingsbundel moeten AppDomain.CurrentDomain.GetAssemblies() retourneren, zelfs als de assembly anders niet nodig was.

Deze waarde is standaard Onwaar.

AndroidEnableProfiledAot

Een booleaanse eigenschap die bepaalt of Mono AOT-profielen wel of niet worden gebruikt tijdens Ahead-of-Time-compilatie. Het is van toepassing op ondersteunde .NET 10-en-eerdere projecten die Mono gebruiken en die geen ReadyToRun-, MIBC-profielen, dynamische PGO of NativeAOT configureren.

De profielen staan vermeld in @(AndroidAotProfile) itemgroep. Wanneer AOT met profilering is ingeschakeld, wordt het standaardprofiel opgenomen, tenzij $(AndroidUseDefaultAotProfile) is ingesteld op false. Aangepaste profielen kunnen worden toegevoegd met @(AndroidAotProfile).

Wanneer $(RunAOTCompilation)true is en deze eigenschap niet is ingesteld, wordt deze standaard ingesteld op true. Daarom wordt het standaard ingesteld true voor toepasselijke release-builds die gebruikmaken van Mono.

AndroidEnableRestrictToAttributes

Een enum-style eigenschap met geldige waarden van obsolete en disable.

Als dit is ingesteld obsoleteop, worden typen en leden die zijn gemarkeerd met de Java-aantekening androidx.annotation.RestrictToof in niet-geëxporteerde Java-pakketten gemarkeerd met een [Obsolete] kenmerk in de C#-binding.

Dit [Obsolete] kenmerk heeft een beschrijvend bericht waarin wordt uitgelegd dat de eigenaar van het Java-pakket de API 'intern' beschouwt en waarschuwt voor het gebruik ervan.

Dit kenmerk heeft ook een aangepaste waarschuwingscode XAOBS001 zodat het onafhankelijk van de "normale" verouderde API kan worden onderdrukt.

Wanneer deze is ingesteld disableop, wordt de API gegenereerd als normaal zonder extra kenmerken. (Dit is hetzelfde gedrag als vóór .NET 8.)

Door kenmerken toe te voegen [Obsolete] in plaats van de API automatisch te verwijderen, is de API-compatibiliteit met bestaande pakketten behouden. Als u in plaats daarvan liever leden verwijdert die de @RestrictTo aantekening hebben of zich in niet-geëxporteerde Java-pakketten bevinden, kunt u naast deze eigenschap Transformatiebestanden gebruiken om te voorkomen dat deze typen afhankelijk zijn:

<remove-node path="//*[@annotated-visibility]" />

Ondersteuning voor deze eigenschap is toegevoegd in .NET 8.

Deze eigenschap is standaard ingesteld op obsolete.

AndroidEnableSGenConcurrent

Een booleaanse eigenschap die bepaalt of mono's gelijktijdige GC-collector wordt gebruikt.

Deze eigenschap is True standaard. Dit geldt voor ondersteunde .NET 10- en eerdere projecten die Mono gebruiken en configureert niet de CoreCLR- of NativeAOT-garbagecollectors.

AndroidErrorOnCustomJavaObject

Een booleaanse eigenschap die bepaalt of typen kunnen worden geïmplementeerd Android.Runtime.IJavaObjectzonder dat deze ook worden overgenomen van Java.Lang.Object of Java.Lang.Throwable:

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

Als juist, zullen dergelijke typen een XA4212-fout veroorzaken, anders wordt een XA4212-waarschuwing gegenereerd.

Deze eigenschap is True standaard.

AndroidExplicitCrunch

Deze eigenschap wordt niet langer ondersteund.

AndroidExtraAotOptions

Een tekenreekseigenschap waarmee ondersteunde .NET 10 en eerdere projecten die Mono gebruiken, door puntkomma's gescheiden afzonderlijke argumenten rechtstreeks kunnen doorgeven aan het Mono AOT-compilerproces. De eigenschap wordt alleen gebruikt wanneer Mono AOT-compilatie is ingeschakeld.

Over het algemeen moet deze eigenschap leeg blijven, maar in bepaalde speciale scenario's kan dit nuttige flexibiliteit bieden.

De $(AndroidExtraAotOptions) eigenschap verschilt van de gerelateerde $(AndroidAotAdditionalArguments) eigenschap; $(AndroidExtraAotOptions) geeft zelfstandige procesargumenten door, terwijl $(AndroidAotAdditionalArguments) deze is opgenomen in de door komma's gescheiden --aot=... optie.

AndroidFastDeploymentType

Deze eigenschap is verwijderd in .NET 9 en heeft geen effect.

AndroidFragmentType

Hiermee specificeert u het standaard volledig gekwalificeerd type dat moet worden gebruikt voor alle <fragment> layoutelementen bij het genereren van de code voor layoutbindingen. De standaardwaarde is het standaard Android-type Android.App.Fragment .

AndroidGenerateJniMarshalMethods

Deze experimentele functie is verwijderd in .NET 11. Het instellen van de eigenschap heeft geen effect.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Deze experimentele functie is verwijderd in .NET 11. Het instellen van de eigenschap heeft geen effect.

AndroidGenerateLayoutBindings

Hiermee schakelt u de generatie van indeling van de code-behind in wanneer ingesteld op true of schakelt deze volledig uit wanneer ingesteld op false.

De standaardwaarde is false.

AndroidGenerateResourceDesigner

De standaardwaarde is true. Als deze op false is ingesteld, schakelt u het genereren van Resource.designer.cs uit.

AndroidHttpClientHandlerType

Opmerking

Deze eigenschap wordt niet ondersteund in .NET 11. Verwijder het uit uw projectbestand en gebruik UseNativeHttpHandler in plaats daarvan.

AndroidIgnoreAllJniPreload

Een Booleaanse waarde die, indien ingesteld op true, zorgt dat alle systeemeigen JNI-bibliotheken worden uitgesloten van preloading bij het opstarten van de toepassing. Standaard worden alle dergelijke bibliotheken vroeg tijdens het opstarten van de toepassing geladen door de runtime om de juiste initialisatie te garanderen. In sommige gevallen is het echter mogelijk niet het gewenste gedrag en met deze eigenschap kunt u deze effectief uitschakelen.

Sommige frameworkbibliotheken die moeten worden geladen bij het opstarten van toepassingen, worden niet beïnvloed door deze eigenschap.

Zie ook @(AndroidNativeLibraryNoJniPreload) voor een meer verfijnde manier om bibliotheken van het preloadmechanisme te uitsluiten.

AndroidIncludeWrapSh

Een booleaanse waarde die aangeeft of het Android-wrapperscript (wrap.sh) moet worden verpakt in de APK. De standaardwaarde is false omdat het wrapper-script de manier waarop de toepassing wordt gestart en werkt aanzienlijk kan beïnvloeden en het script alleen moet worden opgenomen wanneer dit nodig is, bijvoorbeeld wanneer foutopsporing of anderszins het opstart-/runtimegedrag van de toepassing wordt gewijzigd.

Het script wordt aan het project toegevoegd met behulp van de @(AndroidNativeLibrary) build-actie, omdat deze in dezelfde map wordt geplaatst als architectuurspecifieke systeemeigen bibliotheken en een naam wrap.sh moet hebben.

De eenvoudigste manier om het pad naar het wrap.sh script op te geven, is door het in een map te plaatsen met de naam van de doelarchitectuur. Deze aanpak werkt als u slechts één wrap.sh per architectuur hebt:

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

Als uw project echter meer dan één wrap.sh per architectuur nodig heeft, werkt deze benadering niet voor verschillende doeleinden. In plaats daarvan kan in dergelijke gevallen de naam worden opgegeven met behulp van de metagegevens van het LinkAndroidNativeLibrary:

<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
  <Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>

Als de Link metagegevens worden gebruikt, moet het pad dat is opgegeven in de waarde, een geldig systeemeigen architectuurspecifiek bibliotheekpad zijn ten opzichte van de APK-hoofdmap. De indeling van het pad is lib\ARCH\wrap.sh waar ARCH een van de volgende kan zijn:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidIncludeAssetPacksInPackage

Met deze eigenschap bepaalt u of een Asset Packs-build automatisch wordt opgenomen in het uiteindelijke .aab bestand. Deze wordt standaard ingesteld op true.

In bepaalde gevallen wil de gebruiker mogelijk een tussentijdse release vrijgeven. In deze gevallen hoeft de gebruiker het asset pack niet bij te werken. Vooral als de inhoud van het assetpakket niet is gewijzigd. Met deze eigenschap kan de gebruiker de assetpacks overslaan als deze niet vereist zijn.

Toegevoegd in .NET 9

AndroidInstallJavaDependencies

De standaardwaarde is true voor opdrachtregel-builds. Wanneer true is ingesteld, wordt de installatie van de Java SDK ingeschakeld bij het uitvoeren van het <InstallAndroidDependencies/> doel.

Ondersteuning voor deze eigenschap is toegevoegd in .NET 9.

AndroidInstrumentation

Een tekenreekseigenschap die de klassenaam opgeeft van de instrumentation-runner op Android die moet worden gebruikt bij het starten van de toepassing via dotnet run.

Wanneer deze eigenschap niet is ingesteld, bepaalt dotnet run op basis van de gegenereerde AndroidManifest.xml in de tussenliggende uitvoer wat er moet worden gestart:

  • Als $(AndroidUseInstrumentation)true is, wordt het eerste <instrumentation/> element gebruikt.
  • Anders heeft het startbaar <activity/> de voorkeur en wordt het eerste <instrumentation/> element gebruikt wanneer de app geen startbare activiteit declareert. Dit maakt het mogelijk om een app waarvan het enige ingangspunt een subklasse van Android.App.Instrumentation is, zoals een BenchmarkDotNet-host, te dotnet run.

Als de app geen van beide declareert, mislukt de build met XA1043. Als $(AndroidUseInstrumentation)true is, maar de app geen <instrumentation/> declareert, mislukt de build met XA1048.

Wanneer een instrumentatie wordt gestart, voert dotnet runadb shell am instrument -w -r uit en wordt deze afgesloten met een afsluitcode ongelijk aan nul als de instrumentatie vastloopt of Instrumentation.Finish() aanroept met Result.Canceled. Als $(WaitForExit) op false wordt ingesteld, vervalt de -w, waardoor dotnet run terugkeert zodra de instrumentatie wordt gestart en er geen resultaten worden gerapporteerd.

Eventuele argumenten na -- worden doorgestuurd naar de instrumentatie als am instrument extra's. Argumenten van het formulier KEY=VALUE worden -e KEY VALUEen alle resterende argumenten worden samengevoegd tot één -e args "..." extra:

dotnet run -- --filter *MyBenchmark*

wordt aan Instrumentation.OnCreate(Bundle?) geleverd als arguments.GetString("args").

Geïntroduceerd in .NET 11.

AndroidJavadocVerbosity

Hiermee geeft u op hoe uitgebreide C # XML-documentatieopmerkingen moeten zijn bij het importeren van Javadoc-documentatie in bindingsprojecten.

Vereist gebruik van de @(JavaSourceJar) bouwactie.

De $(AndroidJavadocVerbosity) eigenschap is enum-like, met mogelijke waarden van full of intellisense:

De standaardwaarde is intellisense.

AndroidKeyStore

Een Booleaanse waarde die aangeeft of aangepaste ondertekeningsgegevens moeten worden gebruikt. De standaardwaarde is False, wat betekent dat de standaardsleutel voor foutopsporing wordt gebruikt om pakketten te ondertekenen.

AndroidLaunchActivity

De Android-activiteit die moet worden gestart.

AndroidLinkMode

Hiermee geeft u op welk type koppeling moet worden uitgevoerd op assembly's in het Android-pakket. Alleen gebruikt in Android-toepassingsprojecten. De standaardwaarde is SdkOnly. Geldige waarden zijn:

  • Geen: er wordt geen koppeling geprobeerd.

  • SdkOnly: Koppelen wordt alleen uitgevoerd op de basisklassebibliotheken, niet op assembly's van gebruikers.

  • Volledig: Koppelen wordt uitgevoerd op basisklassebibliotheken en gebruikersassembly's.

    Opmerking

    Het gebruik van de AndroidLinkMode waarde Volledig resulteert vaak in beschadigde apps, met name wanneer Weerspiegeling wordt gebruikt. Vermijd tenzij je echt weet wat je doet.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

Wanneer true, zal het buildsysteem in alle assembly's de geneste typen van de klasse Resource.Designer.cs Resource koppelen. De IL-code die deze typen gebruikt, wordt bijgewerkt om de waarden rechtstreeks te gebruiken in plaats van toegang te krijgen tot velden.

Het uitschakelen van de geneste typen kan de apk-bestandsgrootte iets verkleinen en ook de opstartprestaties verbeteren. Alleen 'Release'-builds zijn gekoppeld.

Experimenteel Alleen ontworpen om met code te functioneren, zoals

var view = FindViewById(Resources.Ids.foo);

Andere scenario's (zoals weerspiegeling) worden niet ondersteund.

AndroidLinkSkip

Hiermee geeft u een door puntkomma's gescheiden (;) lijst met assemblynamen, zonder bestandsextensies, op van assembly's die niet mogen worden gekoppeld. Alleen gebruikt in Android-toepassingsprojecten.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

Een enum-stijleigenschap met geldige waarden van proguard of r8. Geeft aan welke code shrinker wordt gebruikt voor Java-code. De standaardwaarde is een lege tekenreeks, of proguard als $(AndroidEnableProguard)True is. Raadpleeg onze documentatie over D8 en R8.

AndroidLintEnabled

Een bool-eigenschap waarmee de ontwikkelaar het Android-hulpprogramma lint kan uitvoeren als onderdeel van het verpakkingsproces.

Wanneer $(AndroidLintEnabled)=True, worden de volgende eigenschappen gebruikt:

De volgende buildacties kunnen ook worden gebruikt:

Zie Lint Help voor meer informatie over de Android-hulpprogramma's lint .

AndroidLintIngeschakeldeProblemen

Een tekenreekseigenschap die een door komma's gescheiden lijst met lintproblemen is die moeten worden ingeschakeld.

Alleen gebruikt als $(AndroidLintEnabled)=Waar.

AndroidLintUitgeschakeldeItems

Een string-eigenschap die een door komma's gescheiden lijst met lint-waarschuwingen is die moeten worden uitgeschakeld.

Alleen gebruikt als $(AndroidLintEnabled)=Waar.

AndroidLintCheckIssues

Een tekenreekseigenschap die een door komma's gescheiden lijst met lintproblemen is om te controleren.

Alleen gebruikt als $(AndroidLintEnabled)=Waar.

Opmerking: alleen deze problemen worden gecontroleerd.

AndroidManagedSymbols

Een booleaanse eigenschap waarmee wordt bepaald of reekspunten worden gegenereerd, zodat bestandsnaam- en regelnummergegevens kunnen worden geëxtraheerd uit Release stacktraceringen.

AndroidManifest

Hiermee geeft u een bestandsnaam op die moet worden gebruikt als de sjabloon voor de app AndroidManifest.xml. Tijdens de build worden alle andere benodigde waarden samengevoegd om de werkelijke waarde AndroidManifest.xmlte produceren. Het $(AndroidManifest) moet de pakketnaam bevatten in het /manifest/@package kenmerk.

AndroidManifestMerger

Hiermee geeft u de implementatie voor het samenvoegen vanAndroidManifest.xml bestanden. Dit is een enum-style eigenschap waarbij legacy de oorspronkelijke C#-implementatie wordt geselecteerd en manifestmerger.jar de Java-implementatie van Google wordt geselecteerd.

De standaardwaarde is momenteel manifestmerger.jar. Als u de oude versie wilt gebruiken, voegt u het volgende toe aan uw csproj

<AndroidManifestMerger>legacy</AndroidManifestMerger>

De fusie van Google biedt ondersteuning voor xmlns:tools="http://schemas.android.com/tools" zoals beschreven in de Android-documentatie.

AndroidManifestMergerExtraArgs

Een tekenreekseigenschap waarmee argumenten worden opgegeven voor het hulpprogramma voor Android-documentatie .

Als u gedetailleerde uitvoer van het hulpprogramma wilt, kunt u het volgende toevoegen aan de .csproj.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

Een enum-stijleigenschap met geldige waarden van Xamarin of GoogleV2. Dit bepaalt welke repository wordt gebruikt door de InstallAndroidDependencies doel om te bepalen welke Android-pakketten en pakketversies beschikbaar zijn en kunnen worden geïnstalleerd.

Xamarin is de opslagplaats Goedgekeurde lijst (aanbevolen) in Visual Studio SDK Manager.

GoogleV2 is de volledige lijstopslagplaats (niet-ondersteund) in Visual Studio SDK Manager.

Als $(AndroidManifestType) niet is ingesteld, wordt Xamarin gebruikt.

AndroidManifestSource

Een tekenreekseigenschap die een absolute URI of een bestaand lokaal bestandspad opgeeft voor het opslagplaatsmanifest dat wordt gebruikt door de InstallAndroidDependencies doel. Wanneer deze eigenschap niet is ingesteld, wordt het standaardopslagplaatsmanifest gebruikt dat is geselecteerd door $(AndroidManifestType) .

Voorbeeld:

<AndroidManifestSource>https://example.com/AndroidManifestFeed.xml</AndroidManifestSource>

AndroidManifestPlaceholders

Een door puntkomma's gescheiden lijst met sleutel-waardevervangingsparen voor AndroidManifest.xml, waarbij elk paar de indeling key=valueheeft.

Een eigenschapswaarde van assemblyName=$(AssemblyName) definieert bijvoorbeeld een ${assemblyName} tijdelijke aanduiding die vervolgens kan worden weergegeven in AndroidManifest.xml:

<application android:label="${assemblyName}"

Dit biedt een manier om variabelen uit het buildproces in te voegen in het AndroidManifest.xml-bestand .

AndroidMultiDexClassListExtraArgs

Een tekenreekseigenschap waarmee ontwikkelaars argumenten kunnen doorgeven aan het com.android.multidex.MainDexListBuilder bestand bij het genereren van het multidex.keep bestand.

Een specifiek geval is als u de volgende fout krijgt tijdens de dx compilatie.

com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded

Als u deze fout krijgt, kunt u het volgende toevoegen aan de .csproj.

<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>

waarmee de dx stap kan slagen.

AndroidNdkDirectory

De $(AndroidNdkDirectory) eigenschap geeft een aangepaste Android NDK-installatiemap op. Het pad kan worden ingesteld in het projectbestand of op de opdrachtregel:

dotnet build -p:AndroidNdkDirectory=/path/to/android-ndk

Als deze eigenschap niet is ingesteld, zoekt .NET voor Android de NDK uit de geconfigureerde Android-ontwikkelomgeving.

AndroidPackageFormat

Een enum-stijleigenschap met geldige waarden van apk of aab. Geeft aan of u de Android-toepassing wilt verpakken als een APK-bestand of Android-appbundel. App-bundels zijn een nieuwe indeling voor Release builds die zijn bedoeld voor verzending op Google Play. De standaardwaarde is apk.

Wanneer $(AndroidPackageFormat) deze is ingesteld op aab, worden andere MSBuild-eigenschappen ingesteld, die vereist zijn voor Android-app-bundels:

Deze eigenschap wordt afgeschaft voor .net 6. Gebruikers moeten overschakelen naar de nieuwer AndroidPackageFormats.

AndroidPakketFormaten

Een door puntkomma's gescheiden eigenschap met geldige waarden van apk en aab. Geeft aan of u de Android-toepassing wilt verpakken als een APK-bestand of Android-appbundel. App-bundels zijn een nieuwe indeling voor Release builds die zijn bedoeld voor verzending op Google Play.

Bij het bouwen van een release-build wilt u mogelijk zowel een aab als een apk genereren voor distributie naar verschillende winkels.

Door AndroidPackageFormats in te stellen op aab;apk worden beide gegenereerd. Door AndroidPackageFormats in te stellen op ofwel aab of apk, zal slechts één bestand worden gegenereerd.

De standaardwaarde is aab;apk alleen voor Release builds. Het gebruik apk voor foutopsporing is sneller, maar aab wordt indien nodig ook ondersteund met snelle implementatie (bijvoorbeeld bij het testen van assetpacks).

AndroidPackageNamingPolicy

Een enum-stijleigenschap voor het opgeven van de Java-pakketnamen van gegenereerde Java-broncode.

De enige ondersteunde waarde is LowercaseCrc64.

AndroidPrepareForBuildDependsOn

Een door puntkomma's gescheiden eigenschap die kan worden gebruikt om het Android-buildproces uit te breiden. MSBuild-doelen die aan deze eigenschap worden toegevoegd, worden vroeg in de build uitgevoerd voor zowel toepassings- als bibliotheekprojecttypen. Deze eigenschap is standaard leeg.

Voorbeeld:

<PropertyGroup>
  <AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>

<Target Name="MyCustomTarget" >
  <Message Text="Running target: 'MyCustomTarget'" Importance="high"  />
</Target>

AndroidProguardMappingFile

Dit specificeert de -printmapping Proguard-regel voor r8. Dit betekent dat het mapping.txt bestand wordt geproduceerd in de $(OutputPath) map. Dit bestand kan vervolgens worden gebruikt bij het uploaden van pakketten naar de Google Play Store.

Dit bestand wordt standaard automatisch geproduceerd wanneer het wordt gebruikt AndroidLinkTool=r8 en genereert het volgende bestand $(OutputPath)mapping.txt.

Als u dit toewijzingsbestand niet wilt genereren, kunt u de AndroidCreateProguardMappingFile eigenschap gebruiken om te stoppen met het maken ervan. Voeg het volgende toe aan uw project

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

of gebruik -p:AndroidCreateProguardMappingFile=False op de opdrachtregel.

AndroidD8IgnoreWarnings

Hiermee specificeert u dat --map-diagnostics warning info moet worden doorgegeven aan d8. De standaardwaarde is True, maar kan worden ingesteld om strikter gedrag af te False dwingen. Zie de broncode van D8 en R8 voor meer informatie.

Toegevoegd in .NET 8.

AndroidR8IgnoreWarnings

Dit specificeert de -ignorewarnings Proguard-regel voor r8. Hierdoor kunt u r8 doorgaan met dex-compilatie, zelfs als bepaalde waarschuwingen worden aangetroffen. De standaardwaarde is True, maar kan worden ingesteld om strikter gedrag af te False dwingen. Zie de ProGuard-handleiding voor meer informatie.

Vanaf .NET 8 specificeert --map-diagnostics warning info. Zie de broncode van D8 en R8 voor meer informatie.

AndroidR8JarPath

Het pad naar r8.jar voor het gebruik met de r8 dex-compiler en shrinker. De standaardwaarde is een pad naar de installatie van de .NET-workload voor Android. Zie onze documentatie over D8 en R8 voor meer informatie.

AndroidR8ObfuscationMode

Een eigenschap van het enumtype die aangeeft hoe r8 Java-namen verhult wanneer $(AndroidLinkTool) is ingesteld op r8. Ondersteunde waarden zijn:

  • private-membersbehoudt Java klasse- en interfacenamen en openbare of beveiligde lidnamen. Privé- en pakket-privéleden kunnen worden verborgen en R8-optimalisatie is ingeschakeld.
  • disabled schakelt obfuscatie uit, behoudt alle Java-namen en gebruikt de niet-optimaliserende standaardinstellingen van Android R8.

Met deze eigenschap wordt het verkleinen van R8-code niet uitgeschakeld.

Deze eigenschap is geïntroduceerd in een .NET 10 onderhoudsrelease. Deze wordt standaard ingesteld disabled op .NET 10 en private-members in .NET 11 en hoger.

AndroidResgenExtraArgs

Hiermee geeft u opdrachtregelopties om door te geven aan de aapt-opdracht bij het verwerken van Android-assets en -resources.

AndroidResgenFile

Hiermee specificeert u de naam van het te genereren resourcebestand. De standaardsjabloon stelt dit in op Resource.designer.cs.

AndroidResourceDesignerClassModifier

Hiermee geeft u de classificatieaanpassing voor de tussenliggende Resource klasse die wordt gegenereerd. Geldige waarden zijn public en internal.

Standaard is dit public.

Toegevoegd in .NET 9.

AndroidSdkBuildToolsVersion

Het Android SDK-pakket met buildtools biedt onder andere de hulpprogramma's aapt en zipalign. Meerdere verschillende versies van het build-tools-pakket kunnen tegelijkertijd worden geïnstalleerd. Het gekozen pakket met buildhulpprogramma's voor pakketverwerking wordt bepaald door eerst te controleren of een voorkeursversie beschikbaar is en deze te gebruiken indien beschikbaar; als de voorkeursversie niet beschikbaar is, wordt het geïnstalleerde build-tools-pakket met de hoogste versie gebruikt.

De $(AndroidSdkBuildToolsVersion) eigenschap MSBuild bevat de voorkeursversie van build-tools. Het .NET voor Android-buildsysteem biedt een standaardwaarde in Xamarin.Android.Common.targets, en deze standaardwaarde kan in uw projectbestand worden overschreven om een alternatieve versie van build-tools te kiezen, bijvoorbeeld als de meest recente aapt crasht terwijl een eerdere aapt-versie goed werkt.

AndroidSigningKeyAlias

Specificeert de alias voor de sleutel in het sleutelarchief. Dit is de sleuteltool -alias waarde die wordt gebruikt voor het aanmaken van de sleutelopslag.

AndroidSigningKeyPass

Specificeert het wachtwoord van de sleutel binnen het keystorebestand. Dit is de waarde die wordt ingevoerd wanneer keytool u het sleutelwachtwoord voor $(AndroidSigningKeyAlias) vraagt.

Deze eigenschap ondersteunt env: en file: voorvoegsels die kunnen worden gebruikt om een omgevingsvariabele of bestand met het wachtwoord op te geven. Deze opties bieden een manier om te voorkomen dat het wachtwoord wordt weergegeven in buildlogboeken.

Als u bijvoorbeeld een omgevingsvariabele met de naam AndroidSigningPassword wilt gebruiken:

<PropertyGroup>
  <AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>

Een bestand gebruiken op C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>

Opmerking

Het env: voorvoegsel wordt niet ondersteund wanneer $(AndroidPackageFormat) het is ingesteld op aab.

AndroidSigningKeyStore

Hiermee geeft u de bestandsnaam van het sleutelarchiefbestand gemaakt door keytool. Dit komt overeen met de waarde die is opgegeven voor de optie keytool -keystore .

AndroidSigningStorePass

Specificeert het wachtwoord voor $(AndroidSigningKeyStore). Dit is de waarde die aan keytool wordt opgegeven bij het maken van het sleutelarchiefbestand, waarna u wordt gevraagd om het wachtwoord voor het sleutelarchief in te voeren: Enter keystore password:.

Deze eigenschap ondersteunt env: en file: voorvoegsels die kunnen worden gebruikt om een omgevingsvariabele of bestand met het wachtwoord op te geven. Deze opties bieden een manier om te voorkomen dat het wachtwoord wordt weergegeven in buildlogboeken.

Als u bijvoorbeeld een omgevingsvariabele met de naam AndroidSigningPassword wilt gebruiken:

<PropertyGroup>
  <AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>

Een bestand gebruiken op C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>

Opmerking

Het env: voorvoegsel wordt niet ondersteund wanneer $(AndroidPackageFormat) het is ingesteld op aab.

Android-ondertekeningsplatformsleutel

Om het sleutelbestand voor het ondertekenen van de apk op te geven. Dit wordt alleen gebruikt bij het bouwen van system toepassingen.

AndroidSigningPlatformCert

Hiermee geeft u het certificaatbestand dat moet worden gebruikt om de APK te ondertekenen. Dit wordt alleen gebruikt bij het bouwen van system toepassingen.

AndroidStripILAfterAOT

Een booleigenschap die aangeeft of de methodeteksten van gecompileerde AOT-methoden worden verwijderd.

De standaardwaarde is falseen de methodeteksten van gecompileerde AOT-methoden worden niet verwijderd.

Wanneer ingesteld op true, wordt $(AndroidEnableProfiledAot) standaard ingesteld op false. Dit betekent dat in ondersteunde .NET 8- en .NET 9-Mono-releasebuilds — waarin $(RunAOTCompilation) standaard true is — Mono AOT is ingeschakeld voor alles. Dit kan leiden tot grotere app-grootten. Dit gedrag kan worden overschreven door $(AndroidEnableProfiledAot) expliciet in te stellen op true binnen uw projectbestand.

Experimentele ondersteuning voor deze eigenschap is toegevoegd in .NET 8, verwijderd in .NET 10.

AndroidStripNativeLibraries

Een Booleaanse eigenschap die het verpakkingsproces aangeeft om debugsymbolen van de systeemeigen gedeelde bibliotheken (.so bestanden) te stripen.

De standaardwaarde is false en de foutopsporingssymbolen blijven behouden wanneer ze worden verpakt.

AndroidSupportedAbis

Deze eigenschap wordt niet meer ondersteund in .NET 6 en hoger. Verwijder het en gebruik $(RuntimeIdentifier) of $(RuntimeIdentifiers) met .NET RIDs in plaats van Android ABI-namen.

De volgende .NET 11-instelling bevat bijvoorbeeld alle ondersteunde CoreCLR-architecturen:

<PropertyGroup>
  <RuntimeIdentifiers>android-arm;android-arm64;android-x64</RuntimeIdentifiers>
</PropertyGroup>

AndroidTlsProvider

Deze eigenschap is verouderd en mag niet worden gebruikt.

AndroidTypeMapImplementation

Een enum-style eigenschap die de type kaart-implementatie selecteert. Geldige waarden zijn llvm-ir en trimmable.

De standaardwaarde is trimmable wanneer $(PublishAot)true is, en anders llvm-ir.

AndroidUseApkSigner

Een bool-eigenschap waarmee de ontwikkelaar het apksigner-hulpprogramma kan gebruiken in plaats van jarsigner.

AndroidUseDefaultAotProfile

Een bool-eigenschap waarmee de ontwikkelaar het gebruik van het standaard Mono AOT-profiel kan onderdrukken.

Het standaardprofiel wordt gebruikt wanneer $(AndroidEnableProfiledAot) dit is true , tenzij deze eigenschap is ingesteld op false.

Deze eigenschap is van toepassing op ondersteunde .NET 10-en-eerdere projecten die gebruikmaken van Mono. Het selecteert geen MIBC-profielen of dynamische PGO voor CoreCLR.

AndroidUseDesignerAssembly

Een Booleaanse eigenschap die bepaalt of het buildsysteem een _Microsoft.Android.Resource.Designer.dll-bestand genereert in plaats van een Resource.Designer.cs-bestand. De voordelen hiervan zijn kleinere toepassingen en snellere opstarttijd.

De standaardwaarde bevindt zich true in .NET 8.

Als Nuget Author is het raadzaam om drie versies van de assembly te verzenden als u compatibiliteit met eerdere versies wilt behouden. Eén voor MonoAndroid, één voor net6.0-android en één voor net8.0-android. U kunt dit doen met behulp van Xamarin.Legacy.Sdk. Dit is alleen vereist als uw Nuget-bibliotheekproject gebruikmaakt van AndroidResource items in het project of via een afhankelijkheid.

<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>

U kunt deze instelling ook uitschakelen totdat zowel classic als net7.0-android zijn afgeschaft.

.NET 8 Projecten die ervoor kiezen om deze instelling uit te schakelen, kunnen geen verwijzingen gebruiken die deze wel gebruiken. Als u probeert een assembly te gebruiken waarvoor deze functie is ingeschakeld in een project dat dat niet doet, krijgt u een XA1034 buildfout.

Toegevoegd in .NET 8.

AndroidUseInstrumentation

Een booleaanse eigenschap die aangeeft dat de toepassing wordt gestart via het <instrumentation/> element in plaats van een <activity/>, zoals een test of BenchmarkDotNet-host .

Wanneer true, dotnet run$(AndroidInstrumentation) afleidt uit de gegenereerde AndroidManifest.xml en het start met adb shell am instrument, zelfs als de app ook een te starten activiteit declareert.

De standaardwaarde is true wanneer $(EnableMSTestRunner)true is, en anders false. Houd er rekening mee dat een app zonder een startbare <activity/> via zijn <instrumentation/> wordt gestart, ongeacht deze instelling.

Geïntroduceerd in .NET 11.

AndroidUseInterpreter

Een booleaanse eigenschap die ervoor zorgt dat een MonoVM .apk de Mono-interpreter bevat en niet de normale JIT. Standaard is dit True voor Debug-builds die Mono gebruiken en anders False.

Deze eigenschap is van toepassing op ondersteunde .NET 10-en-eerdere projecten die gebruikmaken van Mono. Het is geen CoreCLR-instelling en Android heeft geen interpreter in .NET 11 en hoger.

Experimenteel

AndroidUseLegacyVersionCode

Een booleaanse eigenschap waarmee de ontwikkelaar de versionCode-berekening terug kan keren naar het oude pre Xamarin.Android 8.2-gedrag. Dit moet ALLEEN worden gebruikt voor ontwikkelaars met bestaande toepassingen in de Google Play Store. Het wordt ten zeerste aanbevolen dat de nieuwe $(AndroidVersionCodePattern) eigenschap wordt gebruikt.

AndroidUseManagedDesignTimeResourceGenerator

Een booleaanse eigenschap die tijdens het ontwerp schakelt naar de parser van beheerde resources in plaats van aapt.

AndroidUseNegotiateAuthentication

Een booleaanse eigenschap die ondersteuning biedt voor NTLMv2/Negotiate-verificatie in AndroidMessageHandler. De standaardwaarde is Onwaar.

Toegevoegd in .NET 7.

AndroidUseSharedRuntime

Deze eigenschap is verouderd en mag niet worden gebruikt.

AndroidVersionCode

Een MSBuild-eigenschap die kan worden gebruikt als alternatief voor /manifest/@android:versionCode in het AndroidManifest.xml bestand. Als u zich wilt aanmelden voor deze functie, moet u ook inschakelen <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dit is de standaardinstelling in .NET 6.

Deze eigenschap wordt genegeerd als $(AndroidCreatePackagePerAbi) en $(AndroidVersionCodePattern) worden gebruikt.

@android:versionCode is een geheel getal dat moet worden verhoogd voor elke Google Play-release. Zie de Android-documentatie voor meer informatie over de vereisten voor /manifest/@android:versionCode.

AndroidVersionCodePattern

Een tekenreekseigenschap waarmee de ontwikkelaar het versionCode in het manifest kan aanpassen. Zie Het maken van de versiecode voor de APK voor informatie over het bepalen van een versionCode.

In sommige gevallen, als abiarmeabi is en versionCode in het manifest 123 is, dan zal {abi}{versionCode} een versionCode van 1123 produceren wanneer $(AndroidCreatePackagePerAbi) waar is; zo niet, dan zal het een waarde van 123 produceren. Als abix86_64 is en versionCode in het manifest 44 is. Dit zal 544 opleveren wanneer $(AndroidCreatePackagePerAbi) waar is, anders zal het een waarde van 44 opleveren.

Als we een opvulformattekenreeks {abi}{versionCode:0000} opnemen, zou het resultaat 50044 zijn, omdat we versionCode links opvullen met 0. U kunt ook de decimaalopvulling gebruiken, zoals {abi}{versionCode:D4} dat hetzelfde doet als in het vorige voorbeeld.

Alleen tekenreeksen voor opvulling '0' en 'Dx' worden ondersteund omdat de waarde een geheel getal moet zijn.

Vooraf gedefinieerde sleutelitems

  • abi : hiermee wordt de gerichte abi voor de app ingevoegd

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK : voegt de minimaal ondersteunde Sdk-waarde in van de AndroidManifest.xml of 11 als er geen is gedefinieerd.

  • versionCode : maakt rechtstreeks gebruik van de versiecode.Properties\AndroidManifest.xml

U kunt aangepaste items definiëren met behulp van de $(AndroidVersionCodeProperties) eigenschap (hierna gedefinieerd).

Standaard wordt de waarde ingesteld op {abi}{versionCode:D6}. Als een ontwikkelaar het oude gedrag wil behouden, kunt u de standaardinstelling overschrijven door de $(AndroidUseLegacyVersionCode) eigenschap in te stellen op true

AndroidVersionCodeProperties

Een tekenreeks-eigenschap waarmee de ontwikkelaar aangepaste items kan definiëren voor gebruik met de $(AndroidVersionCodePattern). Ze zijn in de vorm van een key=value paar. Alle items in de value lijst moeten gehele getallen zijn. Bijvoorbeeld: screen=23;target=$(_AndroidApiLevel). Zoals u kunt zien, kunt u gebruikmaken van bestaande of aangepaste MSBuild-eigenschappen in een tekenreeks.

ApplicationId

Een MSBuild-eigenschap die kan worden gebruikt als alternatief voor /manifest/@package in het AndroidManifest.xml bestand. Als u zich wilt aanmelden voor deze functie, moet u ook inschakelen <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dit is de standaardinstelling in .NET 6.

Zie de Android-documentatie voor meer informatie over de vereisten voor /manifest/@package.

Applicatietitel

Een MSBuild-eigenschap die kan worden gebruikt als alternatief voor /manifest/application/@android:label in het AndroidManifest.xml bestand. Als u zich wilt aanmelden voor deze functie, moet u ook inschakelen <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dit is de standaardinstelling in .NET 6.

Zie de Android-documentatie voor meer informatie over de vereisten voor /manifest/application/@android:label.

ApplicatieVersie

Een MSBuild-eigenschap die kan worden gebruikt als alternatief voor /manifest/@android:versionName in het AndroidManifest.xml bestand. Als u zich wilt aanmelden voor deze functie, moet u ook inschakelen <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dit is de standaardinstelling in .NET 6.

Zie de Android-documentatie voor meer informatie over de vereisten voor /manifest/@android:versionName.

AotAssemblies

Een booleaanse eigenschap die bepaalt of assembly's al dan niet vooraf worden gecompileerd in systeemeigen code door Mono en opgenomen in toepassingen. Wanneer deze niet is opgegeven, volgt de feitelijke waarde $(RunAOTCompilation): False voor Debug-builds en True voor Release-builds die Mono gebruiken op ondersteunde .NET-doelframeworkversies 10 en eerder.

Verouderd in .NET 7. Voor ondersteunde .NET 10-en-eerdere projecten die Mono gebruiken, migreert u in plaats daarvan naar de $(RunAOTCompilation) eigenschap MSBuild. Het opgeven van $(AotAssemblies), inclusief het instellen ervan op , leidt tot de waarschuwing false. Als dit op true wordt ingesteld voor CoreCLR of NativeAOT, treedt de fout XA1044 op, waardoor de build stopt, wanneer $(RunAOTCompilation) niet is ingesteld (of anderszins wordt geëvalueerd als true), omdat de standaardlogica $(AotAssemblies) doorstuurt naar $(RunAOTCompilation).

Verwijder voor .NET 11 CoreCLR-projecten $(AotAssemblies) zonder toe te voegen$(RunAOTCompilation). CoreCLR maakt geen gebruik van de Mono AOT-pijplijn.

AProfUtilExtraOptions

Aanvullende opties om aan aprofutil door te geven wanneer u de verouderde Mono AOT-profileringsdoelen gebruikt in ondersteunde projecten voor .NET 10 en eerder.

BeforeBuildAndroidAssetPacks

MSBuild Targets die in deze eigenschap worden vermeld, worden direct uitgevoerd voordat de AssetPack items worden gebouwd.

Toegevoegd in .NET 9

BeforeGenerateAndroidManifest

MSBuild-doelen die in deze eigenschap worden vermeld, worden direct vóór _GenerateJavaStubs uitgevoerd.

Configuratie

Hiermee geeft u de buildconfiguratie op die moet worden gebruikt, zoals 'Fouten opsporen' of 'Vrijgeven'. De eigenschap Configuratie wordt gebruikt om standaardwaarden te bepalen voor andere eigenschappen die het doelgedrag bepalen. Er kunnen extra configuraties worden gemaakt in uw IDE.

Standaard resulteert de Debug configuratie in de Install en SignAndroidPackage is bedoeld om een kleiner Android-pakket te maken dat andere bestanden en pakketten nodig heeft om te functioneren.

De standaardconfiguratie Release resulteert in de Install en SignAndroidPackage is bedoeld voor het maken van een Android-pakket dat zelfstandig is en kan worden gebruikt zonder andere pakketten of bestanden te installeren.

Foutopsporing Symbolen

Een Booleaanse waarde die bepaalt of het Android-pakket foutopsporingsbaar is, in combinatie met de $(DebugType) eigenschap. Een foutopsporingsbaar pakket bevat foutopsporingssymbolen, stelt het kenmerk in op en voegt automatisch de INTERNET machtiging zodat een foutopsporingsprogramma kan worden gekoppeld aan het proces. Een toepassing kan worden gedebugd als DebugSymbols is TrueenDebugType de lege tekenreeks of Full.

Foutopsporingstype

Hiermee geeft u het type foutopsporingssymbolen op dat moet worden gegenereerd als onderdeel van de build, wat ook van invloed is op of de toepassing foutopsporingsbaar is. Mogelijke waarden zijn onder andere:

  • Volledig: Volledige symbolen worden gegenereerd. Als de DebugSymbols MSBuild-eigenschap is ook True, dan kan het toepassingspakket gedebugd worden.

  • PdbOnly: PDB-symbolen worden gegenereerd. Het toepassingspakket is niet foutopsporingsbaar.

Als DebugType deze niet is ingesteld of de lege tekenreeks is, bepaalt de DebugSymbols eigenschap of de toepassing wel of niet foutopsporingsbaar is.

Apparaat

Hiermee geeft u op op welk Android-apparaat of emulator gericht moet worden bij het gebruik van dotnet run --device <Device> of van MSBuild-doelen die communiceren met apparaten (zoals Run, Install, of Uninstall).

De waarde moet het volledige serienummer of de volledige id van het apparaat zijn, zoals geretourneerd door adb devices. Als het serienummer van het apparaat bijvoorbeeld is emulator-5554, moet u gebruiken -p:Device=emulator-5554.

Wanneer deze eigenschap is ingesteld, wordt deze eigenschap gebruikt om de AdbTarget eigenschap te initialiseren met de waarde -s "<Device>".

Zie de specificatie voor .NET SDK-apparaatselectie voor meer informatie over apparaatselectie.

DiagnosticAddress

Een waarde die wordt geleverd door dotnet-dsrouter bijvoorbeeld 127.0.0.1het IP-adresonderdeel van $(DiagnosticConfiguration) of DOTNET_DiagnosticPorts.

Wanneer deze eigenschap niet leeg is en $(AndroidEnableProfiler) niet expliciet is ingesteld op false, wordt Android-diagnose impliciet ingeschakeld. Voor CoreCLR wordt het resulterende TCP-eindpunt normaal gesproken op loopback bewaard en gebruikt door dotnet-dsrouter. Gebruik voor een Android-emulator 10.0.2.2 om de ontwikkelcomputer te bereiken; gebruik voor een fysiek apparaat 127.0.0.1 met Android-poortdoorschakeling ingeschakeld via dotnet-dsrouter server-server --tcp-server 127.0.0.1:9000 --forward-port Android.

Wordt standaard ingesteld op 127.0.0.1.

Diagnostische configuratie

Een waarde die is opgegeven voor dotnet-dsrouterDOTNET_DiagnosticPorts bijvoorbeeld:

  • 127.0.0.1:9000,connect,suspend
  • 127.0.0.1:9000,connect,nosuspend

Wanneer diagnostische gegevens zijn ingeschakeld zonder een expliciete configuratie, zijn de afgeleide standaardinstellingen adres127.0.0.1, poort 9000en DiagnosticSuspend=falseDiagnosticListenMode=connect.

Houd er rekening mee dat het ,-teken moet worden geëscaped met %2c als het via de opdrachtregel aan dotnet build wordt doorgegeven.

dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2cconnect%2csuspend

Hiermee wordt automatisch de DOTNET_DiagnosticPorts omgevingsvariabele ingesteld die in de toepassing is verpakt. In connect de modus maakt de Android-runtime verbinding met het geconfigureerde TCP-eindpunt en dotnet-dsrouter overbrugt deze verbinding met het lokale diagnostische hulpprogramma. Het eindpunt is niet-geverifieerd en niet-versleuteld, dus bewaar het op een lokale ontwikkelinterface.

Door deze eigenschap, of een van de onderstaande componenteigenschappen, in te stellen, schakelt u impliciet Android-diagnostische gegevens in wanneer $(AndroidEnableProfiler) niet expliciet is ingesteld op false.

DiagnosticListenMode

Een waarde die wordt geleverd door dotnet-dsrouter, zoals connect, het onderdeel van de luistermodus van $(DiagnosticConfiguration) of DOTNET_DiagnosticPorts.

Wanneer deze eigenschap niet leeg is en $(AndroidEnableProfiler) niet expliciet is ingesteld op false, wordt Android-diagnose impliciet ingeschakeld.

Wordt standaard ingesteld op connect.

DiagnosticPort

Een waarde die wordt geleverd door dotnet-dsrouter, zoals 9000, het poortonderdeel van $(DiagnosticConfiguration) of DOTNET_DiagnosticPorts.

Wanneer deze eigenschap niet leeg is en $(AndroidEnableProfiler) niet expliciet is ingesteld op false, wordt Android-diagnose impliciet ingeschakeld.

Wordt standaard ingesteld op 9000.

DiagnosticSuspend

Een Booleaanse waarde die wordt geleverd door dotnet-dsrouter , zoals true/suspend of false/nosuspend, een onderdeel van $(DiagnosticConfiguration) of DOTNET_DiagnosticPorts.

Wanneer deze eigenschap niet leeg is en $(AndroidEnableProfiler) niet expliciet is ingesteld op false, wordt Android-diagnose impliciet ingeschakeld.

Wordt standaard ingesteld op false.

Assemblages in Apk insluiten

Een booleaanse eigenschap die bepaalt of de assembly's van de app in het toepassingspakket moeten worden ingesloten.

Deze eigenschap is de inverse van $(AndroidEnableFastDeployment). Nieuwe projecten moeten $(AndroidEnableFastDeployment) gebruiken om Fast Deployment te beheren. Als beide eigenschappen zijn ingesteld, $(EmbedAssembliesIntoApk) heeft deze prioriteit.

Deze eigenschap moet True zijn voor release-builds en False voor debug-builds. Het moet True in builds voor foutopsporing bevinden als Fast Deployment het doelapparaat niet ondersteunt.

Crashrapportage inschakelen

Een booleaanse eigenschap waarmee de DOTNET_EnableCrashReport omgevingsvariabele 1 wordt ingesteld bij het gebruik van de CoreCLR- of NativeAOT-runtime. Dit maakt het genereren van crashrapporten mogelijk bij het opstarten van de toepassing.

Deze eigenschap is standaard False en wordt genegeerd wanneer $(UseMonoRuntime)True is.

DiagnostiekInschakelen

Een Android SDK/MSBuild-eigenschap die diagnostische gegevens voor de geselecteerde runtime mogelijk maakt. Het is een synoniem voor $(AndroidEnableProfiler) voor Mono-toepassingen. Voor CoreCLR schakelt dit de configuratie van de diagnostische poort in die door dotnet-trace en dotnet-gcdump wordt gebruikt.

$(EnableDiagnostics) is niet hetzelfde als de CoreCLR-runtime-omgevingsvariabele DOTNET_EnableDiagnostics. De vorige wordt geëvalueerd door de Android SDK/MSBuild-doelen; de laatste wordt gelezen door de runtime wanneer deze wordt opgegeven als een omgevingsvariabele.

Deze eigenschap is False standaard.

EnableLLVM

Een booleaanse eigenschap die bepaalt of LLVM al dan niet door de Mono AOT-compiler wordt gebruikt wanneer assemblies vooraf in systeemeigen code worden gecompileerd.

De Android NDK moet zijn geïnstalleerd om een project te bouwen waarvoor deze eigenschap is ingeschakeld.

Deze eigenschap is False standaard.

Deze eigenschap is van toepassing op ondersteunde .NET 10 en eerdere projecten die Mono gebruiken en heeft alleen invloed op de compilatie wanneer $(RunAOTCompilation)True is.

Als u deze eigenschap true instelt op CoreCLR of NativeAOT, wordt deze false opnieuw ingesteld en wordt de build gestopt met XA1044.

EnableMSTestRunner

Een booleaanse eigenschap waarmee de MSTest runner voor Android-testprojecten wordt ingeschakeld. Wanneer deze instelling op true is ingesteld, start dotnet run de applicatie via am instrument in plaats van am start, zodat testresultaten kunnen worden gerapporteerd via het instrumentatieprotocol van Android.

Deze eigenschap is False standaard.

Geïntroduceerd in .NET 11.

Proguard inschakelen

Een booleaanse eigenschap die bepaalt of proguard wordt uitgevoerd als onderdeel van het verpakkingsproces om Java-code te koppelen.

Deze eigenschap is False standaard.

Wanneer Truebestanden @(ProguardConfiguration) worden gebruikt om de uitvoering te beherenproguard.

EventSourceSupport

Wanneer ingesteld op false, schakelt de ondersteuning voor EventSource van .NET uit bij bijgesneden Android-toepassingen. Als u deze functie uitschakelt, voorkomt u dat .NET-diagnostische hulpprogramma's zoals dotnet-counters werken, maar dat resulteert wel in een kleinere toepassingsgrootte.

Ingesteld op false standaard in Release de modus, tenzij $(EnableDiagnostics) of $(AndroidEnableProfiler) zijn ingeschakeld.

GenereerApplicatieManifest

Hiermee schakelt u de volgende MSBuild-eigenschappen in of uit die waarden verzenden in het uiteindelijke AndroidManifest.xml bestand:

De standaardwaarde $(GenerateApplicationManifest) is true.

JavaMaximumHeapSize

Hiermee geeft u de waarde op van de java-parameterwaarde-Xmx die moet worden gebruikt bij het bouwen van het .dex bestand als onderdeel van het verpakkingsproces. Als dit niet is opgegeven, levert de -Xmx optie Java met een waarde van 1G. Dit is vaak vereist in Windows in vergelijking met andere platforms.

Het specificeren van deze eigenschap is noodzakelijk als het _CompileDex-doel een java.lang.OutOfMemoryError-fout gooit.

Pas de waarde aan door het volgende te wijzigen:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

Hiermee geeft u opdrachtregelopties om door te geven aan Java bij het bouwen van het .dex bestand.

JarsignerTijdstempelAutoriteitCertificaatAlias

Met deze eigenschap kunt u een alias opgeven in het sleutelarchief voor een tijdstempelinstantie. Zie de ondersteuningsdocumentatie voor Java Signature Timestamp voor meer informatie.

<PropertyGroup>
    <JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>

JarsignerTimestampAuthorityUrl

Met deze eigenschap kunt u een URL opgeven voor een timestamp authority-service. Dit kan worden gebruikt om ervoor te zorgen dat uw .apk handtekening een tijdstempel bevat. Zie de ondersteuningsdocumentatie voor Java Signature Timestamp voor meer informatie.

<PropertyGroup>
    <JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>

LinkerDumpDependencies

Een bool-eigenschap die het genereren van linkerafhankelijkhedenbestand mogelijk maakt. Dit bestand kan worden gebruikt als invoer voor het hulpprogramma illinkanalyzer .

Het bestand met afhankelijkheden met de naam linker-dependencies.xml.gz wordt naar de projectmap geschreven. Op NET5/6 wordt het naast de gekoppelde assembly's in de map obj/<Configuration>/android<ABI>/linked geschreven.

De standaardwaarde is Onwaar.

MandroidI18n

Deze MSBuild-eigenschap is verouderd en wordt niet meer ondersteund.

MauiEnableFullReadyToRun

Een booleaanse eigenschap voor .NET MAUI Android-toepassingen die gebruikmaken van CoreCLR en die zijn ingebouwd in Release de configuratie waarvoor ReadyToRun is ingeschakeld. Wanneer deze eigenschap niet is ingesteld of false, gebruikt MAUI gedeeltelijke ReadyToRun met de standaard MIBC-profielen. Stel deze eigenschap in op true om volledige ReadyToRun in te schakelen. Deze eigenschap heeft geen effect wanneer $(PublishReadyToRun) dit is false.

Full ReadyToRun verhoogt de toepassings- en downloadgrootte, maar kan de runtimeprestaties mogelijk verbeteren omdat er meer methoden vooraf zijn gecompileerd.

Zie Runtimes en compilatie in .NET MAUI voor meer informatie over CoreCLR en ReadyToRun in .NET MAUI.

MetricsSupport

Wanneer ingesteld op false, wordt .NET's metriekondersteuning voor bijgesneden Android-toepassingen uitgeschakeld. Als u deze functie uitschakelt, zouden API's zoals System.Diagnostics.Metrics niet meer functioneren, maar dit heeft als voordeel dat de toepassingsgrootte afneemt.

Ingesteld op false standaard in Release de modus, tenzij $(EnableDiagnostics) of $(AndroidEnableProfiler) zijn ingeschakeld.

MonoAndroidAssetPrefix

Hiermee specificeert u een padvoorvoegsel dat aan het begin van bestandsnamen wordt verwijderd met een Build-actie van AndroidAsset. Hiermee kunt u wijzigen waar resources zich bevinden.

De standaardwaarde is Assets. Wijzig dit in assets voor de Java-projectstructuur.

MonoAndroidResourcePrefix

Hiermee specificeert u een padvoorvoegsel dat aan het begin van bestandsnamen wordt verwijderd met een Build-actie van AndroidResource. Hiermee kunt u wijzigen waar resources zich bevinden.

De standaardwaarde is Resources. Wijzig dit in res voor de Java-projectstructuur.

MonoSymbolArchive

Opmerking

Dit was een verouderde MSBuild-eigenschap van Xamarin.Android. Niet beschikbaar in .NET 6+.

Een booleaanse eigenschap waarmee wordt bepaald of .mSYM artefacten worden gemaakt voor later gebruik met mono-symbolicate, om 'echte' bestandsnaam- en regelnummergegevens uit releasestacktraceringen te extraheren.

Dit is standaard waar voor 'Release'-apps waarvoor foutopsporingssymbolen zijn ingeschakeld: $(EmbedAssembliesIntoApk) is Waar, $(DebugSymbols) is waar en $(Optimize) is waar.

PublishReadyToRun

Een booleaanse eigenschap die bepaalt of assembly's worden gecompileerd naar de ReadyToRun-indeling wanneer u CoreCLR gebruikt. ReadyToRun-assembly's bevatten zowel MSIL als systeemeigen code. Dit kan de opstarttijd van toepassingen verbeteren terwijl JIT-compatibiliteit behouden blijft, maar de toepassings- en downloadgrootte verhoogt.

Voor Android-toepassingen die gebruikmaken van CoreCLR, wordt deze eigenschap standaard true ingesteld in Release de configuratie en is deze niet standaard ingeschakeld in Debug de configuratie. ReadyToRun is niet van toepassing wanneer u Mono of NativeAOT gebruikt.

ReadyToRun vereist bijsnijden. Als $(PublishTrimmed) niet true is, schakelt .NET voor Android PublishReadyToRun en $(PublishReadyToRunComposite) uit en geeft het waarschuwing XA0119.

ReadyToRun-compilatie is standaard samengesteld. Zie $(PublishReadyToRunComposite). .NET MAUI maakt ook gebruik van gedeeltelijke ReadyToRun met standaard MIBC-profielen. Zie $(MauiEnableFullReadyToRun) hoe u zich aanmeldt voor de volledige ReadyToRun.

Zie Runtimes en compilatie in .NET MAUI voor meer informatie.

PublishReadyToRunComposite

Een booleaanse eigenschap die bepaalt of ReadyToRun-compilatie toepassingsassembly’s combineert in een samengestelde image. Composite ReadyToRun maakt optimalisaties tussen assembly's mogelijk, maar kan de compilatietijd verhogen.

Voor Android-toepassingen die gebruikmaken van CoreCLR, wordt deze eigenschap standaard ingesteld op true wanneer $(PublishReadyToRun) dit is true. ReadyToRun, inclusief samengestelde ReadyToRun, vereist dat $(PublishTrimmed)true is.

RunAOTCompilation

Een booleaanse eigenschap die bepaalt of assembly's vooraf worden gecompileerd met de Mono AOT-compiler en opgenomen in toepassingen die gebruikmaken van de Mono-runtime. Deze eigenschap is standaard ingesteld op False voor Debug-builds en standaard op True voor Release-builds die Mono gebruiken op ondersteunde doelframeworks van .NET 10 en eerder.

Deze MSBuild-eigenschap vervangt de $(AotAssemblies) MSBuild-eigenschap van Xamarin.Android. Dit is dezelfde eigenschap die wordt gebruikt voor Blazor WASM.

Met deze eigenschap wordt ReadyToRun of NativeAOT niet ingeschakeld. Als u dit voor CoreCLR of NativeAOT instelt op true, wordt het teruggezet op false en wordt de build gestopt met XA1044.

Als u dit false instelt voor CoreCLR, wordt de build ook gestopt met XA1044 in plaats van de eigenschap stilzwijgend te negeren. Vanaf .NET 11 verwijder $(RunAOTCompilation) en stel $(PublishReadyToRun) in op false om de ReadyToRun (R2R)-AOT-compilatie uit te schakelen.

Het instellen van $(RunAOTCompilation) op false voor NativeAOT blijft toegestaan.

UseMonoRuntime

Een booleaanse eigenschap die bepaalt of Android-toepassingen de Mono-runtime gebruiken in plaats van CoreCLR voor ondersteunde .NET 10-en-eerdere doelen. Stel deze eigenschap in om true Mono te gebruiken of false CoreCLR op deze doelen te gebruiken. $(PublishAot) heeft voorrang en selecteert NativeAOT voor ondersteunde publicaties of geoptimaliseerde builds als deze is ingesteld op true.

Deze eigenschap wordt standaard ingesteld true in .NET 10 en eerder, dus Android-toepassingen gebruiken Mono. In .NET 11 en later is de standaardwaarde false, dus Android-toepassingen gebruiken CoreCLR en wordt een expliciete waarde true afgewezen met NETSDK1242.

Zie Runtimes en compilatie in .NET MAUI voor meer informatie.

WaitForExit

Een booleaanse eigenschap die het gedrag bepaalt van het starten van dotnet run Android-toepassingen.

Wanneer $(WaitForExit) niet false is (de standaardinstelling), zal dotnet run:

  • De Android-toepassing starten
  • Stream-uitvoer logcat gefilterd voor het proces van de toepassing
  • Wacht tot de toepassing is afgesloten of druk op Ctrl+C
  • De toepassing geforceerd stoppen wanneer Ctrl+C wordt ingedrukt

Wanneer $(WaitForExit)false is, zal dotnet run eenvoudigweg de applicatie starten en onmiddellijk terugkeren zonder te wachten tot de applicatie wordt afgesloten of uitvoer te streamen.

Deze eigenschap bepaalt ook of -w wordt doorgegeven aan adb shell am instrument wanneer de toepassing wordt gestart via de $(AndroidInstrumentation):

$(WaitForExit) Een <activity/> starten Een <instrumentation/> starten
true (standaard) adb shell am start -S -W adb shell am instrument -w -r
false adb shell am start -S adb shell am instrument -r

Omdat adb shell am instrument pas resultaten rapporteert nadat de instrumentatie is voltooid, mag $(WaitForExit) niet false zijn als u de uitvoer van de instrumentatie of een zinvolle exitcode nodig hebt. Dit is belangrijk voor scenario's zoals het uitvoeren van tests of een BenchmarkDotNet-host . Daarom dotnet test wordt altijd de standaardwaarde gebruikt.

Geïntroduceerd in .NET 11.