Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 .
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.
AndroidAotAdditionalArguments
Een tekenreeks-eigenschap waarmee tijdens de Aot-taak opties aan de Mono-compiler kunnen worden doorgegeven voor projecten waarbij $(AndroidEnableProfiledAot) of $(AotAssemblies) is ingesteld op true.
De tekenreekswaarde van de eigenschap wordt toegevoegd aan het antwoordbestand bij het aanroepen van de mono-cross-compiler.
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) geeft volledige zelfstandige opties door, zoals --verbose of --debug aan de AOT-compiler, terwijl $(AndroidExtraAotOptions) komma's gescheiden argumenten bevatten die deel uitmaken van de --aot optie van de AOT-compiler.
AndroidAotCustomProfilePath
Het bestand dat aprofutil moet aanmaken om profilergegevens in op te slaan.
AndroidAotProfiles
Een string-eigenschap waarmee de ontwikkelaar AOT-profielen vanuit de opdrachtregel kan toevoegen. Het is een door komma's gescheiden lijst met absolute paden.
AndroidAotProfilerPort
De poort waarmee aprofutil verbinding moet worden gemaakt bij het verkrijgen van profileringsgegevens.
AndroidAotEnableLazyLoad
Activeer het vertraagde (uitgestelde) laden van AOT-d-assemblies in plaats van deze vooraf te laden bij het opstarten. De standaardwaarde is True voor Release-builds waarvoor elke vorm van AOT is ingeschakeld.
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 naarMethodInfo.Invoke()ofConstructorInfo.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.Javabetekent dat bijvoorbeeld deInputStreamInvokerAPI doorSystem.IO.Streamniet goed wordt geïmplementeerd, omdatJava.IO.IOExceptionvanuitStream.Read()kan worden gegooid in plaats vanSystem.IO.IOException.System: Het oorspronkelijke Java-uitzonderingstype wordt gevangen en verpakt in een geschikt .NET-uitzonderingstype.Systembetekent bijvoorbeeld datInputStreamInvokercorrectSystem.IO.Streamimplementeert enStream.Read()zal geenJava.IO.IOExceptionexemplaren veroorzaken. (Hij kan in plaats daarvan eenSystem.IO.IOExceptionretourneren die eenJava.IO.IOExceptionalsException.InnerExceptionwaarde bevat.)Systemis 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.exeom 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 wordtMono.Android.dllmet deze waarde gebonden.JavaInterop1: experimentele waarde, momenteel de standaardwaarde voor de NativeAOT-runtime.
De standaardwaarde is XAJavaInterop1.
AndroidCreatePackagePerAbi
Een booleaanse eigenschap die bepaalt of een set bestanden--één per ABI die is opgegeven in $(AndroidSupportedAbis)--moet worden gemaakt in plaats van ondersteuning te bieden voor alle ABI's in één .apk.
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.
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.
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 Onwaar.
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
Synoniem voor de $(EnableDiagnostics) eigenschap.
Vereist voor het gebruik dotnet-trace of dotnet-gcdump in Android-toepassingen. Indien ingesteld op true, bevat het het diagnostische onderdeel Mono in de toepassing. Dit onderdeel is de libmono-component-diagnostics_tracing.so systeemeigen bibliotheek.
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 de AOT-profielen worden gebruikt tijdens de Ahead-of-Time-compilatie.
De profielen staan vermeld in
@(AndroidAotProfile) itemgroep. Deze ItemGroup bevat standaardprofielen. Het kan worden overschreven door de bestaande profielen te verwijderen en uw eigen AOT-profielen toe te voegen.
Deze eigenschap is False standaard.
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 False standaard.
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 tekenreeks-eigenschap waarmee tijdens de Aot-taak opties aan de Mono-compiler kunnen worden doorgegeven voor projecten waarbij $(AndroidEnableProfiledAot) of $(AotAssemblies) is ingesteld op true.
De tekenreekswaarde van de eigenschap wordt toegevoegd aan het antwoordbestand bij het aanroepen van de mono-cross-compiler.
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; $(AndroidAotAdditionalArguments) plaatst door komma's gescheiden argumenten in de --aot optie van de Mono-compiler. In plaats daarvan geeft $(AndroidExtraAotOptions) volledige, op zichzelf staande met spaties gescheiden opties zoals --verbose of --debug door aan de compiler.
AndroidFastDeploymentType
Een : door dubbele punt gescheiden lijst met waarden om te bepalen welke typen kunnen worden geïmplementeerd in de map Fast Deployment op het doelapparaat wanneer de $(EmbedAssembliesIntoApk) eigenschap MSBuild is False. Als een resource snel wordt geïmplementeerd, wordt deze niet ingesloten in de gegenereerde .apk of .aab, wat de implementatietijd kan versnellen. (Hoe sneller het pakket wordt geïmplementeerd, hoe minder vaak het pakket opnieuw moet worden opgebouwd en het installatieproces kan sneller zijn.) Geldige waarden zijn:
-
Assemblies: Applicatiesassemblies deployen. -
Dexes: Implementeer.dexbestanden, systeemeigen bibliotheken en typemaps. DeDexeswaarde kan alleen worden gebruikt op apparaten met Android 4.4 of hoger (API-19).
De standaardwaarde is Assemblies.
Ondersteuning voor het snel implementeren van resources en assets door middel van dat systeem is verwijderd in commit f0d565fe. Dit kwam doordat er gebruik moest worden gemaakt van verouderde API's om te functioneren.
**Ondersteuning voor deze functie is verwijderd in .NET 9
Experimenteel.
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
Een booleigenschap waarmee JNI marshal-methoden kunnen worden gegenereerd als onderdeel van het buildproces. Dit vermindert het gebruik in de System.Reflection bindingshelpercode aanzienlijk.
De standaardwaarde is False. Als ontwikkelaars de nieuwe functie JNI Marshal-methoden willen gebruiken, kunnen ze instellen
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
in hun .csproj. U kunt ook de eigenschap op de opdrachtregel opgeven via
-p:AndroidGenerateJniMarshalMethods=True
Experimenteel. De standaardwaarde is False.
AndroidGenerateJniMarshalMethodsAdditionalArguments
Een tekenreekseigenschap die kan worden gebruikt om parameters toe te voegen aan de jnimarshalmethod-gen.exe aanroep en is handig voor foutopsporing, zodat opties zoals -v, -dof --keeptemp kunnen worden gebruikt.
De standaardwaarde is een lege tekenreeks. Het kan worden ingesteld in het .csproj bestand of op de opdrachtregel. Voorbeeld:
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
or:
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
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
Hiermee bepaalt u de standaard System.Net.Http.HttpMessageHandler implementatie die wordt gebruikt door de System.Net.Http.HttpClient standaardconstructor. De waarde is een assembly-gekwalificeerde typenaam van een HttpMessageHandler subklasse, geschikt voor gebruik met System.Type.GetType(string).
In .NET 6 en later heeft deze eigenschap alleen effect wanneer deze in combinatie met $(UseNativeHttpHandler)=true wordt gebruikt.
De meest voorkomende waarden voor deze eigenschap zijn:
Xamarin.Android.Net.AndroidMessageHandler: Gebruik de Java-API's voor Android om HTTP-aanvragen uit te voeren. Het is vergelijkbaar met de verouderdeXamarin.Android.Net.AndroidClientHandlerversie met verschillende verbeteringen. Het ondersteunt HTTP 1.1 en TLS 1.2. Dit is de standaard-HTTP-berichthandler.System.Net.Http.SocketsHttpHandler, System.Net.Http: De standaardberichthandler in .NET. Het ondersteunt HTTP/2, TLS 1.2 en het is de aanbevolen HTTP-berichthandler voor gebruik met Grpc.Net.Client. Deze waarde is gelijk aan$(UseNativeHttpHandler)=false.Niet-ingestelde/lege tekenreeks, die gelijk is aan
System.Net.Http.HttpClientHandler, System.Net.HttpKomt overeen met de optie Standaard op de eigenschappenpagina's van Visual Studio.
De nieuwe projectwizard selecteert deze optie voor nieuwe projecten wanneer de minimale Android-versie is geconfigureerd voor Android 4.4.87 of lager in Visual Studio of wanneer doelplatforms is ingesteld op Moderne ontwikkeling of maximale compatibiliteit in Visual Studio voor Mac.
System.Net.Http.HttpClientHandler, System.Net.Http: Gebruik de beheerdeHttpMessageHandler.Komt overeen met de optie Beheerd op de eigenschappenpagina's van Visual Studio.
Opmerking
In .NET 6 mag het type dat u opgeeft niet Xamarin.Android.Net.AndroidClientHandler of System.Net.Http.HttpClientHandler zijn en ook niet van een van deze klassen erven. Als u migreert van 'klassiek' Xamarin.Android, gebruikt AndroidMessageHandler of leidt u uw aangepaste handler ervan af.
Opmerking
Ondersteuning voor de $(AndroidHttpClientHandlerType) eigenschap werkt door de XA_HTTP_CLIENT_HANDLER_TYPE omgevingsvariabele in te stellen.
Een $XA_HTTP_CLIENT_HANDLER_TYPE waarde gevonden in een bestand met een buildactie van
@(AndroidEnvironment) heeft voorrang.
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-v8aarmeabi-v7ax86_64x86
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.
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:
-
intellisense: alleen de XML-opmerkingen verzenden:<exception/>,<param/>,<returns/>,<summary/>. -
full: Zendintellisense-elementen uit, evenals<remarks/>,<seealso/>, en alles wat verder kan worden ondersteund.
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
AndroidLinkModewaarde 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.
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.
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:
-
$(AndroidUseAapt2)isTrue. -
$(AndroidUseApkSigner)isFalse. -
$(AndroidCreatePackagePerAbi)isFalse.
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.
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 release-configuratie-builds, waarin $(RunAOTCompilation) standaard true is, 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
Een tekenreekseigenschap die een door puntkomma's (;)gescheiden lijst met ABI's bevat die moeten worden opgenomen in de .apk.
Ondersteunde waarden zijn onder andere:
armeabi-v7ax86arm64-v8ax86_64
AndroidTlsProvider
Deze eigenschap is verouderd en mag niet worden gebruikt.
AndroidUseAapt2
Dit was een Xamarin.Android-eigenschap die geen effect heeft in .NET voor Android.
aapt2 wordt altijd gebruikt en kan niet worden uitgeschakeld.
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 de standaard-AOT-profielen kan onderdrukken.
Als u de standaard-AOT-profielen wilt onderdrukken, stelt u de eigenschap in op false.
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.
AndroidUseInterpreter
Een booleaanse eigenschap die ervoor zorgt dat de .apk de mono-interpreter bevat en niet de normale JIT.
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
- 2 –
minSDK : voegt de minimaal ondersteunde Sdk-waarde in van de
AndroidManifest.xmlof11als 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 en opgenomen in toepassingen.
Deze eigenschap is False standaard.
Verouderd in .NET 7. Migreer in plaats daarvan naar de nieuwe $(RunAOTCompilation) MSBuild-eigenschap, omdat ondersteuning $(AotAssemblies) voor wordt verwijderd in een toekomstige release.
AProfUtilExtraOptions
Extra opties om door te geven aan aprofutil.
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 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
DebugSymbolsMSBuild-eigenschap is ookTrue, 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.
Hiermee schakelt u impliciet het diagnostische onderdeel Mono in, wat betekent dat $(EnableDiagnostics)/$(AndroidEnableProfiler) deze is ingesteld op .true
Wordt standaard ingesteld op 127.0.0.1.
Diagnostische configuratie
Een waarde die is opgegeven voor dotnet-dsrouter$DOTNET_DiagnosticPorts bijvoorbeeld:
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,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%2csuspend%2cconnect
Hiermee wordt automatisch de $DOTNET_DiagnosticPorts omgevingsvariabele ingesteld die in de toepassing is verpakt.
Hiermee schakelt u impliciet het diagnostische onderdeel Mono in, wat betekent dat $(EnableDiagnostics)/$(AndroidEnableProfiler) deze is ingesteld op .true
DiagnosticListenMode
Een waarde die wordt geleverd door dotnet-dsrouter, zoals connect, het onderdeel van de luistermodus van $(DiagnosticConfiguration) of $DOTNET_DiagnosticPorts.
Hiermee schakelt u impliciet het diagnostische onderdeel Mono in, wat betekent dat $(EnableDiagnostics)/$(AndroidEnableProfiler) deze is ingesteld op .true
Wordt standaard ingesteld op connect.
DiagnosticPort
Een waarde die wordt geleverd door dotnet-dsrouter, zoals 9000, het poortonderdeel van $(DiagnosticConfiguration) of $DOTNET_DiagnosticPorts.
Hiermee schakelt u impliciet het diagnostische onderdeel Mono in, wat betekent dat $(EnableDiagnostics)/$(AndroidEnableProfiler) deze is ingesteld op .true
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.
Hiermee schakelt u impliciet het diagnostische onderdeel Mono in, wat betekent dat $(EnableDiagnostics)/$(AndroidEnableProfiler) deze is ingesteld op .true
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 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.
Wanneer deze eigenschap False is, dan
$(AndroidFastDeploymentType) MsBuild-eigenschap bepaalt ook wat wordt ingesloten in de .apk of .aab, wat invloed kan hebben op de implementatie- en herbouwtijden.
DiagnostiekInschakelen
Synoniem voor de $(AndroidEnableProfiler) eigenschap.
Vereist voor het gebruik dotnet-trace of dotnet-gcdump in Android-toepassingen. Indien ingesteld op true, bevat het het diagnostische onderdeel Mono in de toepassing. Dit onderdeel is de libmono-component-diagnostics_tracing.so systeemeigen bibliotheek.
Deze eigenschap is False standaard.
EnableLLVM
Een booleaanse eigenschap die bepaalt of LLVM al dan niet wordt gebruikt bij het vooraf compileren van assembly's in systeemeigen code.
De Android NDK moet zijn geïnstalleerd om een project te bouwen waarvoor deze eigenschap is ingeschakeld.
Deze eigenschap is False standaard.
Deze eigenschap wordt genegeerd tenzij de $(AotAssemblies) MSBuild eigenschap True is.
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.
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.
RunAOTCompilation
Een booleaanse eigenschap die bepaalt of assembly's al dan niet vooraf worden gecompileerd in systeemeigen code en opgenomen in toepassingen.
Deze eigenschap is False standaard voor Debug builds en True standaard voor Release builds.
Deze MSBuild-eigenschap vervangt de $(AotAssemblies) MSBuild-eigenschap van Xamarin.Android. Dit is dezelfde eigenschap die wordt gebruikt voor Blazor WASM.
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
logcatgefilterd 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, wordt dotnet run eenvoudigerwijze de toepassing gestart met adb shell am start en onmiddellijk teruggekeerd zonder te wachten totdat de toepassing beëindigt of uitvoer gestreamd wordt.
Geïntroduceerd in .NET 11.