Skapa egenskaper

MSBuild-egenskaper styr målens beteende.

De anges i projektfilen, till exempel MyApp.csproj, i en MSBuild PropertyGroup.

Anmärkning

I .NET för Android finns det tekniskt sett ingen skillnad mellan ett program och ett bindningsprojekt, så egenskaperna fungerar i båda. I praktiken rekommenderar vi starkt att du skapar separata program- och bindningsprojekt. Egenskaper som används främst i bindningsprojekt dokumenteras i referensguiden för MSBuild-projektegenskaper.

Körningsomfång

Vanliga Android-program riktar in sig på CoreCLR i .NET 11 och senare. Android-program som riktar sig till .NET 10 och tidigare använder Mono som standard. Om du anger $(PublishAot) till true väljs NativeAOT-körningen för publiceringsversioner eller optimerade versioner som stöds, och detta har företräde framför $(UseMonoRuntime).

$(UseMonoRuntime)=true är inte en nödlösning för .NET 11. .NET 11 SDK avvisar det med NETSDK1242. Använd vägledningen för Mono i .NET 10 och tidigare endast när du har som mål ett ramverk där Mono stöds.

AdbTarget

Egenskapen $(AdbTarget) anger den Android-målenhet som Android-paketet kan installeras på eller tas bort från. Värdet för den här egenskapen är detsamma som adb alternativet Målenhet.

AfterGenerateAndroidManifest

MSBuild-mål som anges i den här egenskapen körs direkt efter det interna _GenerateJavaStubs målet, där AndroidManifest.xml filen genereras i $(IntermediateOutputPath). Om du vill göra ändringar i den genererade filen kan du göra det med hjälp av den här tilläggspunkten AndroidManifest.xml .

AndroidAapt2CompileExtraArgs

Anger kommandoradsalternativ för att skicka till kompileringskommandot aapt2 vid bearbetning av Android-tillgångar och -resurser.

AndroidAapt2LinkExtraArgs

Anger kommandoradsalternativ som ska skickas till aapt2-länkkommandot vid bearbetning av Android-tillgångar och -resurser.

AndroidAddKeepAlives

Boolesk egenskap som styr huruvida länkaren ska infoga GC.KeepAlive() anrop i bindningsprojekt för att förhindra för tidig objektinsamling.

Standardvärdet är True för Release-konfigurationer.

För otrimmade byggen som använder typkartan trimmable infogas anrop till GC.KeepAlive() endast när $(AndroidEnableLegacyCompatibilityAssemblyFixups) är också True. Trimmade versioner med hjälp av typkartan trimmable infogar inte dessa anrop.

AndroidAotAdditionalArguments

En strängegenskap som tillåter att alternativ skickas till Mono-kompilatorn under Aot aktiviteten för projekt som har antingen $(AndroidEnableProfiledAot) eller $(AotAssemblies) är inställda på true. Strängvärdet för egenskapen läggs till i svarsfilen när mono-kompilatorn anropas.

I allmänhet bör den här egenskapen lämnas tom, men i vissa särskilda scenarier kan den ge användbar flexibilitet.

Egenskapen $(AndroidAotAdditionalArguments) skiljer sig från den relaterade $(AndroidExtraAotOptions) egenskapen. $(AndroidAotAdditionalArguments) Skickar fullständiga fristående utrymmesavgränsade alternativ som --verbose eller --debug till AOT-kompilatorn, medan $(AndroidExtraAotOptions) innehåller kommaavgränsade argument som ingår i --aot alternativet för AOT-kompilatorn.

AndroidAotCustomProfilePath

Filen som aprofutil ska skapas för att lagra profileringsdata.

AndroidAotProfiles

En strängegenskap som gör att utvecklaren kan lägga till AOT-profiler från kommandoraden. Det är en semikolon- eller kommaavgränsad lista över absoluta sökvägar.

AndroidAotProfilerPort

Den port som aprofutil ska anslutas till när du hämtar profileringsdata.

AndroidAotEnableLazyLoad

Aktivera lat (fördröjd) inläsning av AOT-d-sammansättningar i stället för att förinstallera dem vid starten. Standardvärdet är True för versionsbyggen med någon form av AOT aktiverad.

Introducerades i .NET 6.

AndroidApkDigestAlgorithm

Ett strängvärde som anger den sammandragsalgoritm som ska användas med jarsigner -digestalg.

Standardvärdet är SHA-256.

AndroidApkSignerAdditionalArguments

En strängegenskap som gör att utvecklaren kan ange argument till apksigner verktyget.

AndroidApkSigningAlgorithm

Ett strängvärde som anger signeringsalgoritmen som ska användas med jarsigner -sigalg.

Standardvärdet är SHA256withRSA.

AndroidApplication

Ett booleskt värde som anger om projektet är för ett Android-program (True) eller för ett Android-biblioteksprojekt (False eller inte finns).

Endast ett projekt med <AndroidApplication>True</AndroidApplication> kan finnas i ett Android-paket. (Tyvärr är detta krav inte verifierat, vilket kan resultera i subtila och bisarra fel när det gäller Android-resurser.)

AndroidApplicationJavaClass

Det fullständiga Java-klassnamnet som ska användas i stället för android.app.Application när en klass ärver från Android.App.Application.

Egenskapen $(AndroidApplicationJavaClass) anges vanligtvis av andra egenskaper, till exempel $(AndroidEnableMultiDex) egenskapen MSBuild.

AndroidAvoidEmitForPerformance

En boolesk egenskap som avgör om System.Reflection.Emit "undviks" för att förbättra startprestanda. Den här egenskapen är True som standard.

Användningen av System.Reflection.Emit har en märkbar inverkan på startprestanda på Android. Det här beteendet är inaktiverat som standard för följande funktionsväxlar:

  • Switch.System.Reflection.ForceInterpretedInvoke: efter det andra anropet till MethodInfo.Invoke() eller ConstructorInfo.Invoke()genereras kod för att förbättra prestanda för upprepade anrop.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: Efter det andra anropet för att hämta en tjänst från en container för beroendeinmatning genereras kod för att förbättra prestanda för upprepade anrop.

Det är önskvärt i de flesta Android-program att inaktivera det här beteendet.

Mer information om tillgängliga funktionsväxlar finns i dokumentationen om funktionsväxlar för basklassbibliotek .

Har lagts till i .NET 8.

AndroidBinUtilsPath

En sökväg till en katalog som innehåller Android-binutils som ld, den inbyggda länkaren och as, den inbyggda assemblern. Dessa verktyg ingår i .NET för Android-arbetsbelastningen.

Standardvärdet är $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Ett strängvärde som anger hur undantag ska spridas när en .NET för Android-tillhandahållen typ implementerar en .NET-typ eller ett gränssnitt när det gäller Java-typer, till exempel Android.Runtime.InputStreamInvoker och System.IO.Stream, eller Android.Runtime.JavaDictionary och System.Collections.IDictionary.

  • Java: Den ursprungliga Java-undantagstypen sprids as-is.

    Java innebär att till exempel InputStreamInvoker inte implementerar API:et System.IO.Stream korrekt eftersom Java.IO.IOException kan kastas från Stream.Read() i stället för System.IO.IOException.

  • System: Den ursprungliga Java-undantagstypen fångas och omsluts av en lämplig .NET-undantagstyp.

    System betyder till exempel att InputStreamInvoker korrekt implementerar System.IO.Stream, och Stream.Read() kommer inte att kasta Java.IO.IOException instanser. (Den kan i stället utlösa ett System.IO.IOException innehållande ett Java.IO.IOException som Exception.InnerException värde.)

    System är standardvärdet.

AndroidBundnaGränssnittInnehållerKonstanter

En boolesk egenskap som avgör om bindningskonstanter i gränssnitt kommer att stödjas eller om lösningen för att skapa en IMyInterfaceConsts klass ska användas.

Standardvärdet är True.

AndroidAnslutnaGränssnittInnehållerStat ochStandardGränssnittsmetoder

En boolesk egenskap som anger om standard- och statiska medlemmar i gränssnitt kommer att stödjas, eller om man ska använda den gamla lösningen med att skapa en syskonklass som innehåller statiska medlemmar som abstract class MyInterface.

Standardvärdet är True i .NET 6 och False för äldre.

AndroidbundaGränssnittInnehållerTyper

En boolesk egenskap som anger om typer kapslade i gränssnitt ska stödjas eller lösningen för att skapa en icke-kapslad typ som IMyInterfaceMyNestedClass.

Standardvärdet är True i .NET 6 och False för äldre.

AndroidBuildApplicationPackage

Ett booleskt värde som anger om paketet ska skapas och signeras (.apk). Att ställa in det här värdet till True motsvarar att använda SignAndroidPackage bygg mål.

Den här egenskapen är False som standard.

Android Bündelkonfigurationsfil

Anger ett filnamn som ska användas som konfigurationsfil för bundletool när du skapar ett Android App Bundle. Den här filen styr vissa aspekter av hur APK:er genereras från paketet, till exempel vilka dimensioner paketet delas upp efter för att skapa APK:er. .NET för Android konfigurerar vissa av dessa inställningar automatiskt, inklusive listan över filnamnstillägg att lämnas okomprimerade.

Den här egenskapen är endast relevant om $(AndroidPackageFormat) är inställd på aab.

AndroidBundleToolExtraArgs

Anger kommandoradsalternativ för att skicka till bundletool-kommandot när du skapar apppaket.

AndroidClassParser

En strängegenskap som styr hur .jar filer parsas. Möjliga värden är:

  • class-parse: Används class-parse.exe för att parsa Java-bytekod direkt, utan hjälp av en JVM.

  • jar2xml: det här värdet är föråldrat och stöds inte längre.

AndroidCodegenTarget

En strängegenskap som styr kodgenereringens mål-ABI. Möjliga värden är:

  • XamarinAndroid: det här värdet är föråldrat och stöds inte längre.

  • XAJavaInterop1: Använd Java.Interop för JNI-anrop. Bindningssammansättningar med hjälp av XAJavaInterop1 kan bara bygga och köra med Xamarin.Android 6.1 eller senare. Xamarin.Android 6.1 och senare binder Mono.Android.dll med det här värdet.

  • JavaInterop1: experimentellt värde, för närvarande standardvärdet för NativeAOT-körningen.

Standardvärdet är XAJavaInterop1.

AndroidCreatePackagePerAbi

En boolesk egenskap som avgör om en uppsättning filer – en per ABI som anges i $(AndroidSupportedAbis) – ska skapas istället för att ha stöd för alla ABI:er i en enda .apk.

Se även guiden Skapa ABI-Specific API:er .

AndroidCreateProguardMappingFile

En boolesk egenskap som styr om en proguard-mappningsfil genereras som en del av byggprocessen.

Genom att lägga till följande till din csproj-fil, genereras filen och egenskapen AndroidProguardMappingFile används för att kontrollera var den slutliga mappningsfilen hamnar.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

När du skapar .aab filer inkluderas mappningsfilen automatiskt i paketet. Du behöver inte ladda upp den till Google Play Store manuellt. När du använder .apk filer måste den AndroidProguardMappingFile laddas upp manuellt.

Standardvärdet är True när du använder $(AndroidLinkTool)=r8.

AndroidDebugKeyAlgorithm

Anger standardalgoritmen som ska användas för debug.keystore. Standardvärdet är RSA.

AndroidDebugKeyValidity

Anger standard giltigheten som ska användas för debug.keystore. Standardvärdet är 10950 eller 30 * 36530 years.

AndroidDebugStoreType

Anger filformatet för nyckelarkivet som ska användas för debug.keystore. Standardvärdet är pkcs12.

AndroidDeviceUserId

Tillåter distribution och felsökning av programmet under gäst- eller arbetskonton. Värdet är det uid värde som du får från följande adb-kommando:

adb shell pm list users

Kommandot ovan returnerar följande data:

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

uid Är det första heltalsvärdet. I ovanstående utdata är de 0 och 10.

AndroidDexTool

En egenskap av typen enum med ett giltigt värde på d8. Tidigare stöddes värdet för dx i Xamarin.Android.

Anger vilken Android dex-kompilator som används under .NET för Android-byggprocessen. Standardvärdet är d8. Se vår dokumentation om D8 och R8.

AndroidEnableDesugar

En boolesk egenskap som avgör om desugar är aktiverad. Android stöder för närvarande inte alla Java 8-funktioner, och standardverktygskedjan implementerar de nya språkfunktionerna genom att utföra bytekodstransformeringar, som kallas desugar, på kompilatorns javac utdata. Standardvärdet är False om du använder $(AndroidDexTool)=dx och True om du använder$(AndroidDexTool)=d8 .

AndroidEnableFastDeployment

En boolesk egenskap som avgör om snabb distribution är aktiverat. Snabb distribution installerar sammansättningar utanför programpaketet, vilket kan minska distributions- och återskapandetiderna.

Standardvärdet är True för Debug-versioner och False för Release-versioner. Att ange den här egenskapen motsvarar inställningen av det invertera värdet för $(EmbedAssembliesIntoApk). Om båda egenskaperna har angetts, gäller $(EmbedAssembliesIntoApk).

Aktivera Google Play Store-kontroller för Android

En bool-egenskap som gör att utvecklare kan inaktivera följande Google Play Store-kontroller: XA1004, XA1005 och XA1006. Att inaktivera dessa kontroller är användbart för utvecklare som inte är inriktade på Google Play Store och inte vill köra dessa kontroller.

AndroidEnableLegacyCompatibilityAssemblyFixups

En boolesk egenskap som styr om otrimlade versioner ändrar refererade sammansättningar för att stödja äldre bindning och resursdesignerbeteende. Dessa ändringar omfattar att lägga till abstrakta gränssnittsmetoder som saknas, uppdatera äldre resursdesignerreferenser och infoga GC.KeepAlive() anrop i äldre Xamarin. Android-bindningssammansättningar. Trimmade versioner med hjälp av typkartan trimmable kör inte dessa kompatibilitetskorrigeringar, och om du anger den här egenskapen till True aktiveras de inte för trimmade versioner.

Standardvärdet är False när $(AndroidTypeMapImplementation) är trimmable, och True annars.

AndroidEnableMarshalMethods

En bool-egenskap som avgör om LLVM-marskalksmetoder är aktiverade eller inte. LLVM-metodhantering är en optimering för appstart som använder inbyggda ingångspunkter för registrering av Java-metoder native.

Den här egenskapen är False som standard.

Den här egenskapen kan inte anges till true när $(PublishReadyToRun) är true.

Har lagts till i .NET 8.

AndroidEnableMultiDex

En Boolesk egenskap som avgör om Multi-Dex-stöd ska användas i den slutliga .apk.

Den här egenskapen är False som standard.

AndroidEnableProfiler

För Mono-program är detta en synonym för $(EnableDiagnostics) egenskapen. Om det är trueingår monodiagnostikkomponenten , libmono-component-diagnostics_tracing.soi programmet.

För CoreCLR-program i .NET 11 och senare aktiverar den här egenskapen konfigurationen för CoreCLR-diagnostikporten som används av verktyg som dotnet-trace och dotnet-gcdump. Den lägger inte till en monodiagnostikkomponent. NativeAOT är en separat körmiljö som väljs med $(PublishAot), och den här egenskapen beskriver endast det paketerings- och konfigurationsbeteende som stöds för Android.

Den här egenskapen är False som standard.

AndroidEnableObsoleteOverrideInheritance

En boolesk egenskap som avgör om bundna metoder automatiskt ärver [Obsolete] attribut från metoder som de åsidosätter.

Stöd för den här egenskapen har lagts till i .NET 8.

Den här egenskapen är True som standard.

AndroidEnablePreloadAssemblies

En boolesk egenskap som styr om alla hanterade sammansättningar som paketerats i programpaketet läses in under processens start eller inte.

När värdet Trueär inställt på läses alla sammansättningar som paketeras i programpaketet in under processens start, innan någon programkod anropas.

När de är inställda på False laddas assemblys endast vid behov. Genom att läsa in sammansättningar efter behov kan program starta snabbare och är också mer konsekventa med skrivbords-.NET-semantik. Om du vill se tidsbesparingarna anger du systemegenskapen debug.mono.log så att den inkluderar timingoch letar efter meddelandet i Finished loading assemblies: preloadedadb logcat.

Program eller bibliotek, som använder beroendeinmatning, kan kräva att den här egenskapen är True om de i sin tur kräver att AppDomain.CurrentDomain.GetAssemblies() alla sammansättningar i programpaketet returneras, även om sammansättningen annars inte skulle ha behövts.

Som standard är det här värdet Falskt.

AndroidEnableProfiledAot

En boolesk egenskap som bestämmer om AOT-profiler används under kompilering i förtid.

Profilerna visas i @(AndroidAotProfile) objektgrupp. Den här ItemGroup innehåller standardprofiler. Det kan åsidosättas genom att ta bort de befintliga och lägga till egna AOT-profiler.

Den här egenskapen är False som standard.

AndroidAktiveraBegränsaTillAttribut

En enum-egenskap med giltiga värden för obsolete och disable.

När värdet är inställt på obsoletemarkeras typer och medlemmar som har markerats med Java-anteckningen androidx.annotation.RestrictToeller som finns i icke-exporterade Java-paket med ett [Obsolete] attribut i C#-bindningen.

Det här [Obsolete] attributet har ett beskrivande meddelande som förklarar att Java-paketägaren anser att API:et är "internt" och varnar för dess användning.

Det här attributet har också en anpassad varningskod XAOBS001 så att den kan ignoreras oberoende av "normalt" föråldrat API.

När det är inställt på disablegenereras API:et som vanligt utan ytterligare attribut. (Det här är samma beteende som före .NET 8.)

Att lägga till [Obsolete] attribut i stället för att automatiskt ta bort API:et gjordes för att bevara API-kompatibiliteten med befintliga paket. Om du i stället vill ta bort medlemmar som har anteckningen @RestrictToeller som finns i icke-exporterade Java-paket kan du använda Transformera filer utöver den här egenskapen för att förhindra att dessa typer binds:

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

Stöd för den här egenskapen har lagts till i .NET 8.

Den här egenskapen är inställd obsolete på som standard.

AndroidEnableSGenConcurrent

En boolesk egenskap som avgör om Monos samtidiga GC-insamlare ska användas eller inte.

Den här egenskapen är False som standard.

AndroidfelPåAnpassadJavaObjekt

En boolesk egenskap som avgör om typer kan Android.Runtime.IJavaObject utan att också ärva från Java.Lang.Object eller Java.Lang.Throwable:

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

    public void Dispose()
    {
    }
}

När värdet är Sant genereras ett XA4212-fel av dessa typer, annars genereras en XA4212-varning.

Den här egenskapen är True som standard.

AndroidExplicitCrunch

Denna egendom stöds inte längre.

AndroidExtraAotOptions

En strängegenskap som tillåter att alternativ skickas till Mono-kompilatorn under Aot aktiviteten för projekt som har antingen $(AndroidEnableProfiledAot) eller $(AotAssemblies) är inställda på true. Strängvärdet för egenskapen läggs till i svarsfilen när mono-kompilatorn anropas.

I allmänhet bör den här egenskapen lämnas tom, men i vissa särskilda scenarier kan den ge användbar flexibilitet.

Egenskapen $(AndroidExtraAotOptions) skiljer sig från den relaterade $(AndroidAotAdditionalArguments) egenskapen. $(AndroidAotAdditionalArguments) Placerar kommaavgränsade argument i --aot alternativet Mono-kompilatorn. $(AndroidExtraAotOptions) skickar i stället fullständiga fristående utrymmesavgränsade alternativ som --verbose eller --debug till kompilatorn.

AndroidFastDeploymentType

Den här egenskapen togs bort i .NET 9 och har ingen effekt.

AndroidFragmentType

Anger den fullständiga standardtyp som ska användas för alla <fragment> layoutelement när du genererar koden för layoutbindningar. Standardvärdet är standardtypen Android Android.App.Fragment .

AndroidGenerateJniMarshalMethods

Den här experimentella funktionen togs bort i .NET 11. Att ställa in egenskapen har ingen effekt.

AndroidGenerateJniMarshalMethodsYtterligareArgument

Den här experimentella funktionen togs bort i .NET 11. Att ange egenskapen har ingen effekt.

AndroidGenerateLayoutBindings

Aktiverar generering av kod bakom layouten om det är inställt på true, eller inaktiverar det helt och hållet om det är inställt på false.

Standardvärdet är false.

AndroidGenerateResourceDesigner

Standardvärdet är true. När värdet är inställt falsepå inaktiveras genereringen av Resource.designer.cs.

AndroidHttpClientHandlerType

Anmärkning

Den här egenskapen stöds inte i .NET 11. Ta bort den från projektfilen och använd UseNativeHttpHandler den i stället.

AndroidIgnoreAllJniPreload

Ett booleskt värde som, om det är inställt på true, undantar alla interna JNI-bibliotek från att förinläsas vid programstart. Som standardinställning kommer alla sådana bibliotek att laddas av körtiden tidigt under programmets start för att säkerställa att de på rätt sätt initialiseras. I vissa fall kanske det dock inte är det önskade beteendet och med den här egenskapen kan du inaktivera det effektivt.

Vissa ramverksbibliotek som måste läsas in vid programstart påverkas inte av den här egenskapen.

Se även @(AndroidNativeLibraryNoJniPreload) för ett mer detaljerat sätt att undanta bibliotek från förinläsningsmekanismen.

AndroidIncludeWrapSh

Ett booleskt värde som anger om Android-omslutningsskriptet (wrap.sh) ska paketeras i APK: et. Standardvärdet är false eftersom omslutningsskriptet avsevärt kan påverka hur programmet startar och fungerar och skriptet bör endast inkluderas när det behövs, till exempel när du felsöker eller på annat sätt ändrar programmets start-/körningsbeteende.

Skriptet läggs till i projektet med hjälp av @(AndroidNativeLibrary) build-åtgärd, eftersom den placeras i samma katalog som arkitekturspecifika interna bibliotek och måste ha namnet wrap.sh.

Det enklaste sättet att ange sökvägen till skriptet wrap.sh är att placera den i en katalog med namnet efter målarkitekturen. Den här metoden fungerar om du bara har en wrap.sh per arkitektur:

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

Men om projektet behöver mer än en wrap.sh per arkitektur fungerar inte den här metoden för olika syften. I sådana fall kan namnet i stället anges med hjälp av Link-metadata för AndroidNativeLibrary.

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

Link Om metadata används måste sökvägen som anges i dess värde vara en giltig intern arkitekturspecifik bibliotekssökväg i förhållande till APK-rotkatalogen. Sökvägens format är lib\ARCH\wrap.sh där ARCH kan vara något av:

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

AndroidInkluderaResurspaketIPaket

Den här egenskapen styr om tillgångspaketen byggs automatiskt och inkluderas i den slutliga .aab-filen. Standardvärdet är true.

I vissa fall kanske användaren vill släppa en interimsversion. I dessa fall behöver användaren inte uppdatera tillgångspaketet. Särskilt om innehållet i tillgångspaketet inte har ändrats. Med den här egenskapen kan användaren hoppa över tillgångspaketen om de inte behövs.

Har lagts till i .NET 9

AndroidInstallJavaDependencies

Standardvärdet är true för kommandoradsbyggen. När det är inställt på true aktiveras installationen av Java SDK när målet <InstallAndroidDependencies/> körs.

Stöd för den här egenskapen har lagts till i .NET 9.

AndroidInstrumentation

En strängegenskap som anger det Android-instrumentationskörklassnamn som ska användas när programmet startas via dotnet run.

När den här egenskapen inte har angetts avgör dotnet run vad som ska startas utifrån den genererade AndroidManifest.xml i de mellanliggande utdatafilerna:

  • Om $(AndroidUseInstrumentation) är trueanvänds det första <instrumentation/> elementet.
  • Annars är startbart <activity/> att föredra och det första <instrumentation/> elementet används när appen inte deklarerar någon startbar aktivitet. Detta gör det möjligt för en app vars enda startpunkt är en Android.App.Instrumentation underklass, till dotnet run exempel en BenchmarkDotNet-värd.

Om appen inte deklarerar något av dem misslyckas bygget med XA1043. Om $(AndroidUseInstrumentation) är true men appen deklarerar nej <instrumentation/>misslyckas bygget med XA1048.

När ett instrumentationstest startas kör dotnet runadb shell am instrument -w -r och avslutas med en annan slutkod än noll om instrumentationstestet kraschar eller anropar Instrumentation.Finish() med Result.Canceled. Om du ställer in $(WaitForExit) på false utelämnas -w, så returnerar dotnet run så snart instrumenteringen startas och inga resultat rapporteras.

Eventuella argument efter -- vidarebefordras till instrumentationen som am instrument extrafunktioner. Argumenten i formuläret KEY=VALUE blir -e KEY VALUE, och alla återstående argument kopplas till ett enda -e args "..." extra:

dotnet run -- --filter *MyBenchmark*

levereras till Instrumentation.OnCreate(Bundle?) i form av arguments.GetString("args").

Introducerades i .NET 11.

AndroidJavadocVerbosity

Anger hur "utförliga" C#XML-dokumentationskommentarer ska vara när du importerar Javadoc-dokumentation i bindningsprojekt.

Kräver användning av @(JavaSourceJar) kompileringsåtgärd.

Egenskapen $(AndroidJavadocVerbosity) är uppräkningsliknande, med möjliga värden för full eller intellisense:

Standardvärdet är intellisense.

AndroidKeyStore

Ett booleskt värde som anger om anpassad signeringsinformation ska användas. Standardvärdet är False, vilket innebär att standardnyckeln för felsökningssignering används för att signera paket.

AndroidLaunchActivity

Android-aktiviteten som ska startas.

AndroidLinkMode

Anger vilken typ av länkning som ska utföras på sammansättningar som finns i Android-paketet. Används endast i Android-programprojekt. Standardvärdet är SdkOnly. Giltiga värden är:

  • Ingen: Ingen länkning görs.

  • SdkOnly: Länkning utförs endast på basklassbiblioteken, inte användarens sammansättningar.

  • Fullständig: Länkning utförs på basklassbibliotek och användarassembleringar.

    Anmärkning

    Att använda värdet AndroidLinkModeFull resulterar ofta i felaktiga applikationer, särskilt när Reflection används. Undvik om du inte vet vad du gör.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

När true kommer byggsystemet att länka ut de kapslade typerna av Resource.Designer.cs Resource-klassen i alla assemblyer. IL-koden som använder dessa typer uppdateras för att använda värdena direkt i stället för att komma åt fält.

Länkning av kapslade typer kan ha en liten inverkan på att minska apk-storleken och kan också hjälpa till med startprestanda. Endast release-versioner är kopplade.

Experimentellt. Endast utformad för att fungera med kod, såsom

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

Andra scenarier (till exempel reflektion) stöds inte.

AndroidLinkSkip

Anger en semikolonavgränsad (;) lista över sammansättningsnamn, utan filnamnstillägg, för sammansättningar som inte ska länkas. Används endast i Android-programprojekt.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

En enum-egenskap med giltiga värden för proguard eller r8. Anger vilken kodkrympning som används för Java-kod. Standardvärdet är en tom sträng, eller proguard om $(AndroidEnableProguard) är True. Se vår dokumentation om D8 och R8.

AndroidLintEnabled

En bool-egenskap som gör att utvecklaren kan köra Android-verktyget lint som en del av paketeringsprocessen.

När $(AndroidLintEnabled)=Sant används följande egenskaper:

Följande byggåtgärder kan också användas:

Mer information om Android-verktyg finns i lint.

AndroidLintEnabledIssues (Aktiverade problem i Android Lint)

En strängegenskap som är en kommaavgränsad lista över lintproblem som ska aktiveras.

Används endast när $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

En strängegenskap som är en kommaavgränsad lista över lint-problem som ska inaktiveras.

Används endast när $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

En strängegenskap som är en kommaavgränsad lista över lintproblem att kontrollera.

Används endast när $(AndroidLintEnabled)=True.

Obs! Endast dessa problem kontrolleras.

AndroidManagedSymbols

En boolesk egenskap som styr om sekvenspunkter genereras så att filnamn och radnummerinformation kan extraheras från Release stackspårningar.

AndroidManifest

Anger ett filnamn som ska användas som mall för appens AndroidManifest.xml. Under bygget kommer alla andra nödvändiga värden att sammanfogas för att skapa den faktiska AndroidManifest.xml. $(AndroidManifest) Måste innehålla paketnamnet i attributet/manifest/@package.

AndroidManifestMerger

Anger implementeringen för sammanslagning avAndroidManifest.xml filer. Det här är en uppräkningsliknande egenskap där legacy du väljer den ursprungliga C#-implementeringen och manifestmerger.jar väljer Googles Java-implementering.

Standardvärdet är för närvarande manifestmerger.jar. Om du vill använda den gamla versionen lägger du till följande i csproj

<AndroidManifestMerger>legacy</AndroidManifestMerger>

Googles sammanslagning möjliggör stöd för xmlns:tools="http://schemas.android.com/tools" enligt beskrivningen i Android-dokumentationen.

AndroidManifestMergerExtraArgs

En strängegenskap som ger argument till Android-dokumentationsverktyget .

Om du vill ha detaljerade utdata från verktyget kan du lägga till följande i .csproj.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

En enum-egenskap med giltiga värden för Xamarin eller GoogleV2. Detta styr vilken lagringsplats som används av InstallAndroidDependencies syfte för att identifiera vilka Android-paket och paketversioner som är tillgängliga och som kan installeras.

Xamarin är arkivet Godkänd lista (rekommenderad) inom Visual Studio SDK Manager.

GoogleV2 är lagringsplatsen Fullständig lista (stöds inte) i Visual Studio SDK Manager.

Om $(AndroidManifestType) inte har angetts används det Xamarin .

AndroidManifestSource

En strängegenskap som anger en absolut URI eller en befintlig lokal filsökväg för manifestfilen för lagringsplatsen som används av InstallAndroidDependencies mål. När den här egenskapen inte har angetts används standardlagringsplatsmanifestet som valts av $(AndroidManifestType) .

Som exempel:

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

AndroidManifestPlaceholders

En semikolonavgränsad lista över nyckel/värde-ersättningspar för AndroidManifest.xml, där varje par har formatet key=value.

Ett egenskapsvärde assemblyName=$(AssemblyName) för definierar till exempel en ${assemblyName} platshållare som sedan kan visas i AndroidManifest.xml:

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

På så sätt kan du infoga variabler från byggprocessen i filenAndroidManifest.xml .

AndroidMultiDexClassListExtraArgs

En strängegenskap som tillåter utvecklare att överföra argument till com.android.multidex.MainDexListBuilder när de genererar multidex.keep-filen.

Ett specifikt fall är om du får följande fel under kompilering dx .

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

Om du får det här felet kan du lägga till följande i .csproj.

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

vilket kommer att tillåta dx steget att lyckas.

AndroidNdkDirectory

Egenskapen $(AndroidNdkDirectory) anger en anpassad Android NDK-installationskatalog. Sökvägen kan anges i projektfilen eller på kommandoraden:

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

Om den här egenskapen inte har angetts letar .NET för Android upp NDK från den konfigurerade Android-utvecklingsmiljön.

AndroidPackageFormat

En enum-egenskap med giltiga värden för apk eller aab. Anger om du vill paketera Android-programmet som en APK-fil eller Android App Bundle. Apppaket är ett nytt format för Release versioner som är avsedda att skickas in på Google Play. Standardvärdet är apk.

När $(AndroidPackageFormat) är inställt på aabanges andra MSBuild-egenskaper, som krävs för Android App Bundles:

Den här egenskapen kommer att vara inaktuell för .net 6. Användarna bör växla över till den nyare AndroidPackageFormats.

AndroidPackageFormats

En semikolonavgränsad egenskap med giltiga värden för apk och aab. Anger om du vill paketera Android-programmet som en APK-fil eller Android App Bundle. Apppaket är ett nytt format för Release versioner som är avsedda att skickas in på Google Play.

När du skapar en Release-version kanske du vill generera både en aab och en apk för distribution till olika butiker.

Inställningen AndroidPackageFormats till aab;apk resulterar i att båda genereras. Om du anger AndroidPackageFormats till antingen aab eller apk genereras endast en fil.

Standardvärdet är aab;apk endast för Release versioner. Det går snabbare att använda apk för felsökning, men aab stöds också med snabb distribution om det behövs (till exempel vid testning av tillgångspaket).

AndroidPackageNamingPolicy

En enumerationstypegenskap för att ange Java-paketnamnen för genererad Java-källkod.

Det enda värde som stöds är LowercaseCrc64.

AndroidPrepareForBuildDependsOn

En semikolonavgränsad egenskap som kan användas för att utöka Android-byggprocessen. MSBuild-mål som läggs till i den här egenskapen kommer att köras tidigt i bygget för både program- och biblioteksprojekttyper. Den här egenskapen är standardmässigt tom.

Exempel:

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

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

AndroidProguardMappingFile

Anger -printmapping proguard-regeln för r8. Detta innebär att mapping.txt filen kommer att skapas i mappen $(OutputPath). Den här filen kan sedan användas när du laddar upp paket till Google Play Store.

Som standard skapas den här filen automatiskt när du använder AndroidLinkTool=r8 och genererar följande fil $(OutputPath)mapping.txt.

Om du inte vill generera den här mappningsfilen kan du använda AndroidCreateProguardMappingFile egenskapen för att sluta skapa den . Lägg till följande i projektet

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

eller använd -p:AndroidCreateProguardMappingFile=False på kommandoraden.

AndroidD8IgnoreWarnings

Anger --map-diagnostics warning info att ska skickas till d8. Standardvärdet är True, men kan anges till False för att framtvinga striktare beteende. Mer information finns i källkoden D8 och R8 .

Har lagts till i .NET 8.

AndroidR8IgnoreWarnings

Anger -ignorewarnings proguard-regeln för r8. Detta gör att r8 kan fortsätta med dex-kompilering även när vissa varningar påträffas. Standardvärdet är True, men kan anges till False för att framtvinga striktare beteende. Mer information finns i ProGuard-manualen .

Från och med .NET 8 specificeras --map-diagnostics warning info. Mer information finns i källkoden D8 och R8 .

AndroidR8JarPath

Sökvägen till r8.jar för användning med r8 dex-compiler och shrinker. Standardvärdet är en sökväg till installationen av .NET för Android-arbetsuppgiften. Mer information finns i vår dokumentation om D8 och R8.

AndroidR8ObfuscationMode

En egenskap av enum-typ som anger hur r8 fördunklar Java-namn när $(AndroidLinkTool) är r8. Värden som stöds är:

  • private-membersbevarar Java klass- och gränssnittsnamn och offentliga eller skyddade medlemsnamn. Privata och paket-privata medlemmar kan döljas och R8-optimering aktiveras.
  • disabled inaktiverar obfuskering, bevarar alla Java-namn och använder Android R8:s standardinställningar utan optimering.

Den här egenskapen inaktiverar inte R8-kodkrympning.

Den här egenskapen introducerades i en .NET 10 serviceversion. Standardvärdet är disabled i .NET 10 och i private-members .NET 11 och senare.

AndroidResgenExtraArgs

Anger kommandoradsalternativ som ska skickas till aapt-kommandot vid bearbetning av Android-tillgångar och -resurser.

AndroidResgenFile

Anger namnet på resursfilen som ska genereras. Standardmallen anger detta till Resource.designer.cs.

AndroidResourceDesignerClassModifier

Anger klassmodifieraren för den mellanliggande Resource klass som genereras. Giltiga värden är public och internal.

Som standard blir detta public.

Har lagts till i .NET 9.

AndroidSdkBuildToolsVersion

Android SDK-byggverktygspaketet innehåller bland annat aapt- och zipalign-verktygen. Flera olika versioner av byggverktygspaketet kan installeras samtidigt. Det build-tools-paket som valts för paketering görs genom att söka efter och använda en "önskad" version av build-tools om den finns. Om den "föredragna" versionen inte finns används det högst versionerade installerade build-tools-paketet.

Egenskapen $(AndroidSdkBuildToolsVersion) MSBuild innehåller önskad version av build-tools. .NET för Android-byggsystemet innehåller ett standardvärde i Xamarin.Android.Common.targets, och standardvärdet kan åsidosättas i projektfilen för att välja en alternativ version av build-tools, om (till exempel) den senaste aapt kraschar ut medan en tidigare aapt-version är känd för att fungera.

Android-signeringsnyckelalias

Anger aliaset för nyckeln i nyckelarkivet. Detta är keytool -alias-värdet som används när du skapar keystore.

AndroidSigningKeyPass

Anger lösenordet för nyckeln i nyckelarkivfilen. Det här är värdet som anges när keytool du frågar Ange nyckellösenord för $(AndroidSigningKeyAlias).

Den här egenskapen stöder env:file: och prefix som kan användas för att ange en miljövariabel eller fil som innehåller lösenordet. De här alternativen är ett sätt att förhindra att lösenordet visas i byggloggar.

Om du till exempel vill använda en miljövariabel med namnet AndroidSigningPassword:

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

Så här använder du en fil som finns på C:\Users\user1\AndroidSigningPassword.txt:

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

Anmärkning

Prefixet env: stöds inte när $(AndroidPackageFormat) är inställt på aab.

AndroidSigningKeyStore

Anger filnamnet för nyckelarkivfilen som skapats av keytool. Detta motsvarar värdet som anges i alternativet keytool -keystore .

AndroidSigningStorePass

Anger lösenordet till $(AndroidSigningKeyStore). Det här är värdet som angavs när keytool du skapade nyckellagringsfilen och frågade Ange nyckellagringslösenord:.

Den här egenskapen stöder env:file: och prefix som kan användas för att ange en miljövariabel eller fil som innehåller lösenordet. De här alternativen är ett sätt att förhindra att lösenordet visas i byggloggar.

Om du till exempel vill använda en miljövariabel med namnet AndroidSigningPassword:

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

Så här använder du en fil som finns på C:\Users\user1\AndroidSigningPassword.txt:

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

Anmärkning

Prefixet env: stöds inte när $(AndroidPackageFormat) är inställt på aab.

Androidsigneringsplattformnyckel

Anger den nyckelfil som ska användas för att signera apk:en. Detta används endast när system applikationer skapas.

AndroidSigningPlatformCert

Anger den certifikatfil som ska användas för att signera apk:en. Detta används endast när system applikationer skapas.

AndroidStripILAfterAOT

En bool-egenskap som anger om metodkropparna för AOT-kompilerade metoder ska tas bort eller inte.

Standardvärdet är false, och metodkropparna för AOT-kompilerade metoder tas inte bort.

När det är inställt på true, $(AndroidEnableProfiledAot) är inställt på false som standard. Det innebär att i Release-konfigurationsbyggen, där $(RunAOTCompilation) är true som standard, är AOT aktiverat för hela. Detta kan leda till ökade appstorlekar. Det här beteendet kan åsidosättas genom att uttryckligen ställa in $(AndroidEnableProfiledAot) till true i din projektfil.

Experimentellt stöd för den här egenskapen lades till i .NET 8, som togs bort i .NET 10.

AndroidStripNativeLibraries

En bool-egenskap som instruerar paketeringsprocessen att ta bort felsökningssymboler från de inbyggda delade biblioteken (.so filer).

Standardvärdet är false och eventuella felsökningssymboler bevaras vid paketering.

AndroidSupportedAbis

En strängegenskap som innehåller en semikolonavgränsad; lista över API:er som ska ingå i .apk.

Värden som stöds är:

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

AndroidTlsProvider

Den här egenskapen är föråldrad och bör inte användas.

AndroidTypeMapImplementation

En egenskap av enum-typ som väljer typmappningsimplementeringen. Giltiga värden är llvm-ir och trimmable.

Standardvärdet är trimmable när $(PublishAot) är true och llvm-ir på annat sätt.

AndroidUseApkSigner

En bool-egenskap som gör att utvecklaren kan använda apksigner-verktyget i stället för jarsigner.

AndroidUseDefaultAotProfile

En bool-egenskap som gör att utvecklaren inte kan använda AOT-standardprofilerna.

Om du vill utelämna AOT-standardprofilerna anger du egenskapen till false.

AndroidUseDesignerAssembly

En boolesk egenskap som styr om byggsystemet ska generera en _Microsoft.Android.Resource.Designer.dll istället för en Resource.Designer.cs fil. Fördelarna med detta är mindre program och snabbare starttid.

Standardvärdet är true i .NET 8.

Som Nuget-författare rekommenderar vi att du skickar tre versioner av sammansättningen om du vill behålla bakåtkompatibiliteten. En för MonoAndroid, en för net6.0-android och en för net8.0-android. Du kan göra detta med hjälp av Xamarin.Legacy.Sdk. Detta krävs endast om nuget-biblioteksprojektet använder AndroidResource objekt i projektet eller via ett beroende.

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

Du kan också inaktivera den här inställningen tills både Classic och net7.0-android har blivit inaktuella.

.NET 8-projekt som väljer att inaktivera den här inställningen kan inte använda referenser som använder den. Om du försöker använda en sammansättning som har den här funktionen aktiverad i ett projekt som inte gör det får du ett XA1034 byggfel.

Har lagts till i .NET 8.

AndroidUseInstrumentation

En boolesk egenskap som anger att applikationen startas genom sitt <instrumentation/>-element i stället för ett <activity/>, till exempel en test- eller BenchmarkDotNet-värd.

När true, dotnet run hämtar $(AndroidInstrumentation) från den genererade AndroidManifest.xml och startar den med adb shell am instrument, även om appen också deklarerar en aktivitet som kan startas.

Standardvärdet är true när $(EnableMSTestRunner) är true, och false annars. Observera att en app som inte har någon startbar <activity/> startas via sin <instrumentation/> oavsett denna egenskap.

Introducerades i .NET 11.

AndroidUseInterpreter

En boolesk egenskap som gör att en MonoVM .apk innehåller Mono-tolken och inte den normala JIT:en. Det är en monoinställning och är inte en CoreCLR-inställning. Android har ingen tolk i .NET 11 och senare.

Experimentellt.

AndroidUseLegacyVersionCode

En boolesk egenskap som gör att utvecklaren kan återställa versionCode-beräkningen till sitt gamla beteende före Xamarin.Android 8.2. Detta bör ENDAST användas för utvecklare med befintliga program i Google Play Store. Vi rekommenderar starkt att den nya $(AndroidVersionCodePattern) egenskapen används.

AndroidUseManagedDesignTimeResourceGenerator

En boolesk egenskap som växlar över designtidskompileringarna för att använda den hanterade resursparsern i stället för aapt.

AndroidUseNegotiateAuthentication

En boolesk egenskap som möjliggör stöd för NTLMv2/Negotiate-autentisering i AndroidMessageHandler. Standardvärdet är False.

Har lagts till i .NET 7.

AndroidUseSharedRuntime

Den här egenskapen är föråldrad och bör inte användas.

AndroidVersionCode

En MSBuild-egenskap som kan användas som ett alternativ till /manifest/@android:versionCode i AndroidManifest.xml filen. Om du vill välja den här funktionen måste du också aktivera <GenerateApplicationManifest>true</GenerateApplicationManifest>. Detta är standardinställningen framöver i .NET 6.

Den här egenskapen ignoreras om $(AndroidCreatePackagePerAbi) och $(AndroidVersionCodePattern) används.

@android:versionCode är ett heltalsvärde som måste ökas för varje Google Play-version. Mer information om kraven för finns i Android-dokumentationen./manifest/@android:versionCode

AndroidVersionKodMönster

En strängegenskap som gör att utvecklaren kan anpassa versionCode i manifestet. Se Skapa versionskoden för APK för information om hur du bestämmer en versionCode.

Vissa exempel, om abi är armeabi och versionCode i manifestet är 123, {abi}{versionCode} skapar en versionKod för 1123 när $(AndroidCreatePackagePerAbi) är Sant, annars genereras värdet 123. Om abi är x86_64 och versionCode i manifestet är 44. Detta kommer att producera 544 när $(AndroidCreatePackagePerAbi) är Sant, annars kommer att generera ett värde på 44.

Om vi inkluderar en formatsträng med vänsterutfyllnad {abi}{versionCode:0000} skulle det producera 50044 eftersom vi utfyller versionCode med 0. Du kan också använda decimalutfyllnad, till exempel {abi}{versionCode:D4} som gör samma sak som i föregående exempel.

Endast utfyllnadsformatsträngarna "0" och "Dx" stöds eftersom värdet MÅSTE vara ett heltal.

Fördefinierade nyckelobjekt

  • abi – Infogar mål-abi för appen

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK – Infogar det minsta Sdk-värde som stöds från AndroidManifest.xml eller 11 om inget har definierats.

  • versionCode – använder versionskoden direkt från Properties\AndroidManifest.xml.

Du kan definiera anpassade objekt med hjälp av $(AndroidVersionCodeProperties) egenskapen (definieras härnäst).

Som standard anges värdet till {abi}{versionCode:D6}. Om en utvecklare vill behålla det gamla beteendet kan du åsidosätta standardinställningen $(AndroidUseLegacyVersionCode) genom att ange egenskapen till true

AndroidVersionCodeEgenskaper

En strängegenskap som gör att utvecklaren kan definiera anpassade objekt som ska användas med $(AndroidVersionCodePattern). De är i form av ett key=value par. Alla objekt i value ska vara heltalsvärden. Till exempel: screen=23;target=$(_AndroidApiLevel). Som du ser kan du använda befintliga eller anpassade MSBuild-egenskaper i strängen.

ApplicationId

En MSBuild-egenskap som kan användas som ett alternativ till /manifest/@package i AndroidManifest.xml filen. Om du vill välja den här funktionen måste du också aktivera <GenerateApplicationManifest>true</GenerateApplicationManifest>. Detta är standardinställningen framöver i .NET 6.

Mer information om kraven för finns i Android-dokumentationen./manifest/@package

Applikationstitel

En MSBuild-egenskap som kan användas som ett alternativ till /manifest/application/@android:label i AndroidManifest.xml filen. Om du vill välja den här funktionen måste du också aktivera <GenerateApplicationManifest>true</GenerateApplicationManifest>. Detta är standardinställningen framöver i .NET 6.

Mer information om kraven för finns i Android-dokumentationen./manifest/application/@android:label

Applikationsversion

En MSBuild-egenskap som kan användas som ett alternativ till /manifest/@android:versionName i AndroidManifest.xml filen. Om du vill välja den här funktionen måste du också aktivera <GenerateApplicationManifest>true</GenerateApplicationManifest>. Detta är standardinställningen framöver i .NET 6.

Mer information om kraven för finns i Android-dokumentationen./manifest/@android:versionName

AotAssemblies

En boolesk egenskap som avgör om sammansättningar ska kompileras i förväg till intern kod och inkluderas i program. Den här egenskapen är False som standard.

Inaktuell i .NET 7. Migrera till den nya $(RunAOTCompilation) MSBuild-egenskapen, eftersom stöd för $(AotAssemblies) tas bort i en framtida version.

AProfUtilExtraOptions

Extra alternativ för att skicka till aprofutil.

BeforeBuildAndroidAssetPacks

MSBuild-mål som anges i den här egenskapen körs direkt innan objekten AssetPack skapas.

Har lagts till i .NET 9

BeforeGenerateAndroidManifest

MSBuild-mål som anges i den här egenskapen körs direkt före _GenerateJavaStubs.

Konfiguration

Anger den byggkonfiguration som ska användas, till exempel "Felsök" eller "Release". Egenskapen Configuration används för att fastställa standardvärden för andra egenskaper som avgör målbeteendet. Ytterligare konfigurationer kan skapas i din IDE.

Som standardinställning resulterar konfigurationen Debug i Install och SignAndroidPackage syftar till att skapa ett mindre Android-paket som kräver förekomst av andra filer och paket för att fungera.

Release Standardkonfigurationen resulterar i att Install och SignAndroidPackage har som mål att skapa ett Android-paket som är fristående och kan användas utan att installera några andra paket eller filer.

DebugSymbols

Ett booleskt värde som bestämmer om Android-paketet är debuggbar, i kombination med egenskapen $(DebugType). Ett felsökningsbart paket innehåller felsökningssymboler, ställer in //application/@android:debuggable attributet till true, och lägger automatiskt till INTERNET behörighet så att ett felsökningsprogram kan ansluta till processen. Ett program är felsökbart om DebugSymbols är TrueochDebugType är antingen den tomma strängen eller Full.

DebugType

Anger vilken typ av felsökningssymboler som ska genereras som en del av bygget, vilket också påverkar om applikationen kan felsökas. Möjliga värden är:

  • Full: Fulla symboler genereras. Om DebugSymbols MSBuild-egenskapen är också True, och då är programpaketet debaggningsbart.

  • PdbOnly: "PDB"-symboler genereras. Programpaketet är inte avlusningsbart.

Om DebugType inte har angetts eller är en tom sträng, styr egenskapen DebugSymbols om applikationen är avlusningsbar eller inte.

Device

Anger vilken Android-enhet eller emulator som ska riktas när du använder dotnet run --device <Device> eller MSBuild-mål som interagerar med enheter (till exempel Run, Installeller Uninstall).

Värdet måste vara det fullständiga enhetsserienumret eller identifieraren som returneras av adb devices. Om enhetsserienumret till exempel är emulator-5554måste du använda -p:Device=emulator-5554.

När inställd, används den här egenskapen för att initiera AdbTarget med värdet -s "<Device>".

Mer information om enhetsval finns i specifikationen för .NET SDK-enhetsval.

DiagnostiskAdress

Ett värde som tillhandahålls av dotnet-dsrouter till exempel 127.0.0.1, IP-adresskomponenten $(DiagnosticConfiguration) för eller DOTNET_DiagnosticPorts.

När den här egenskapen inte är tom och $(AndroidEnableProfiler) inte uttryckligen är inställd på false, aktiveras Android-diagnostik implicit. För CoreCLR sparas den resulterande TCP-slutpunkten normalt på loopback och används av dotnet-dsrouter. För en Android-emulator använder du 10.0.2.2 för att nå utvecklingsdatorn. För en fysisk enhet använder du 127.0.0.1 med Android-portvidarebefordring aktiverat av dotnet-dsrouter server-server --tcp-server 127.0.0.1:9000 --forward-port Android.

Standardinställningen är 127.0.0.1.

Diagnostisk konfiguration

Ett värde som tillhandahålls av dotnet-dsrouter till DOTNET_DiagnosticPorts exempel:

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

När diagnostik aktiveras utan en explicit konfiguration är de härledda standardvärdena adress 127.0.0.1, port 9000, DiagnosticSuspend=falseoch DiagnosticListenMode=connect.

Observera att tecknet , måste undgå med %2c om det används i kommandoraden till dotnet build.

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

Detta anger automatiskt miljövariabeln DOTNET_DiagnosticPorts som paketeras i programmet. I connect-läge ansluter Android-körmiljön till den konfigurerade TCP-slutpunkten och dotnet-dsrouter vidarebefordrar den anslutningen till det lokala diagnostikverktyget. Slutpunkten är oautentiserad och okrypterad, så behåll den på ett lokalt utvecklingsgränssnitt.

Om du anger den här egenskapen, eller någon av komponentegenskaperna nedan, aktiveras implicit Android-diagnostik när $(AndroidEnableProfiler) inte uttryckligen har angetts till false.

DiagnosticListenMode

Ett värde som tillhandahålls av dotnet-dsrouter såsom till exempel connect, för lyssningslägeskomponenten $(DiagnosticConfiguration) eller DOTNET_DiagnosticPorts.

När den här egenskapen inte är tom och $(AndroidEnableProfiler) inte uttryckligen är inställd på false, aktiverar den implicit Android-diagnostik.

Standardinställningen är connect.

DiagnosticPort

Ett värde som tillhandahålls av dotnet-dsrouter, till exempel portkomponenten i 9000 eller $(DiagnosticConfiguration).

När den här egenskapen inte är tom och $(AndroidEnableProfiler) inte uttryckligen är inställd på false, aktiveras Android-diagnostik implicit.

Standardinställningen är 9000.

DiagnosticSuspend

Ett booleskt värde som tillhandahålls av dotnet-dsrouter till exempel true/suspend eller false/nosuspend, en komponent i $(DiagnosticConfiguration) eller DOTNET_DiagnosticPorts.

När den här egenskapen inte är tom och $(AndroidEnableProfiler) inte uttryckligen är inställd på false, aktiveras Androiddiagnostik implicit.

Standardinställningen är false.

EmbedAssembliesIntoApk

En boolesk egenskap som avgör om appens sammansättningar ska bäddas in i programpaketet eller inte.

Den här egenskapen är inversen till $(AndroidEnableFastDeployment). Nya projekt ska använda $(AndroidEnableFastDeployment) för att styra snabb distribution. Om båda egenskaperna har angetts, gäller $(EmbedAssembliesIntoApk).

Den här egenskapen ska vara True för Versionsversioner och False för felsökningsversioner. Den kan behöva finnas True i felsökningsversioner om snabb distribution inte stöder målenheten.

Aktivera kraschrapportering

En boolesk egenskap som anger DOTNET_EnableCrashReport miljövariabeln till 1 när du använder CoreCLR- eller NativeAOT-körningen. Detta möjliggör generering av kraschrapporter vid programstart.

Den här egenskapen är False som standard och ignoreras när $(UseMonoRuntime) är True.

AktiveraDiagnostik

En egenskap i Android SDK/MSBuild som aktiverar diagnostik för den valda körmiljön. Det är en synonym för $(AndroidEnableProfiler) för Mono-program. För CoreCLR aktiverar det konfigurationen för diagnostikporten som används av dotnet-trace och dotnet-gcdump.

$(EnableDiagnostics) är inte samma sak som miljövariabeln DOTNET_EnableDiagnostics för CoreCLR-körningen. Den förra utvärderas av Android SDK/MSBuild-målen; den senare läses av körmiljön när den anges som en miljövariabel.

Den här egenskapen är False som standard.

EnableLLVM

En boolesk egenskap som avgör om LLVM ska användas vid kompilering i förväg till intern kod.

Android NDK måste installeras för att skapa ett projekt som har den här egenskapen aktiverad.

Den här egenskapen är False som standard.

Om inte MSBuild-egenskapen är $(AotAssemblies), ignoreras den här egenskapen.

EnableMSTestRunner

En boolesk egenskap som aktiverar MSTest-löparen för Android-testprojekt. När det är inställt till dotnet run kommer true att starta programmet via am instrument i stället för am start, vilket gör det möjligt att rapportera testresultat via Androids instrumentationsprotokoll.

Den här egenskapen är False som standard.

Introducerades i .NET 11.

EnableProguard

En boolesk egenskap som avgör om proguard körs som en del av paketeringsprocessen för att länka Java-kod.

Den här egenskapen är False som standard.

När True -filer i @(ProguardConfiguration) används kommer de att styra proguard exekveringen.

EventSourceSupport

När värdet är inställt på falseinaktiveras . NET:s EventSource-stöd från trimmade Android-program. Om du inaktiverar den här funktionen kan du förhindra att .NET-diagnostikverktyg som dotnet-counters fungerar, men med den minskade programstorleken.

Ange som false standard i Release läge, såvida inte $(EnableDiagnostics) eller $(AndroidEnableProfiler) är aktiverat.

GenereraApplikationsmanifest

Aktiverar eller inaktiverar följande MSBuild-egenskaper som genererar värden i den slutliga AndroidManifest.xml filen:

Standardvärdet $(GenerateApplicationManifest) är true.

JavaMaximumHeapSize

Anger värdet för java-parametervärdet-Xmx som ska användas när du skapar .dex filen som en del av paketeringsprocessen. Om det inte anges -Xmx tillhandahåller alternativet java med värdet 1G. Detta visade sig vara vanligt i Windows jämfört med andra plattformar.

Det är nödvändigt att ange den här egenskapen om målet _CompileDex genererar en java.lang.OutOfMemoryError.

Anpassa värdet genom att ändra:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

Anger kommandoradsalternativ som ska skickas till java när filen skapas .dex .

JarsignerTimestampAuthorityCertificateAlias

Med den här egenskapen kan du ange ett alias i nyckelarkivet för en tidsstämpelsmyndighet. Se Java dokumentationen för signaturens tidsstämpelstöd för mer detaljer.

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

JarsignerTimestampAuthorityUrl

Med den här egenskapen kan du ange en URL till en tidsstämpelutfärdartjänst. Detta kan användas för att se till att din .apk signatur innehåller en tidsstämpel. Se Java dokumentationen för signaturens tidsstämpelstöd för mer detaljer.

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

LinkerDumpDependencies

En bool-egenskap som möjliggör generering av länkningsberoendefil. Den här filen kan användas som indata för illinkanalyzer-verktyget .

Beroendefilen med namnet linker-dependencies.xml.gz skrivs till projektkatalogen. På .NET5/6 skrivs det ut bredvid de länkade assembly:erna i obj/<Configuration>/android<ABI>/linked katalogen.

Standardvärdet är False.

MandroidI18n

Den här MSBuild-egenskapen är föråldrad och stöds inte längre.

MauiEnableFullReadyToRun

En boolesk egenskap för .NET MAUI Android-program som använder CoreCLR och är inbyggda i Release konfigurationen med ReadyToRun aktiverat. När den här egenskapen inte har angetts eller falseanvänder MAUI partiell ReadyToRun med sina standard-MIBC-profiler. Ange den här egenskapen till true för att aktivera fullständig ReadyToRun. Den här egenskapen har ingen effekt när $(PublishReadyToRun) är false.

Full ReadyToRun ökar program- och nedladdningsstorleken, men kan potentiellt förbättra körningsprestanda eftersom fler metoder är förkompilerade.

Mer information om CoreCLR och ReadyToRun i .NET MAUI finns i Runtimes och kompilering i .NET MAUI.

MetricsSupport

När värdet är inställt på falseinaktiveras . NET:s måttstöd från trimmade Android-program. Om du inaktiverar den här funktionen förhindras API:er, till exempel System.Diagnostics.Metrics från att fungera, men till förmån för minskad programstorlek.

Ange som false standard i Release läge, såvida inte $(EnableDiagnostics) eller $(AndroidEnableProfiler) är aktiverat.

MonoAndroidAssetPrefix

Anger ett sökvägsprefix som tas bort från början av filnamn med en Build-åtgärd på AndroidAsset. Detta gör det möjligt att ändra var resurserna finns.

Standardvärdet är Assets. Ändra detta till assets för Java-projektstrukturen.

MonoAndroidResourcePrefix

Anger ett sökvägsprefix som tas bort från början av filnamn med en Build-åtgärd på AndroidResource. Detta gör det möjligt att ändra var resurserna finns.

Standardvärdet är Resources. Ändra detta till res för Java-projektstrukturen.

MonoSymbolArchive

Anmärkning

Det här var en äldre MSBuild-egenskap från Xamarin.Android. Inte tillgängligt i .NET 6+.

En boolesk egenskap som styr om .mSYM artefakter skapas för senare användning med mono-symbolicate, för att extrahera "korrekt" filnamn och radnummerinformation från Versionsstackspårningar.

Detta är Sant som standard för "Release"-appar som har felsökningssymboler aktiverade: $(EmbedAssembliesIntoApk) är Sant, $(DebugSymbols) är Sant, och $(Optimize) är Sant.

PublishReadyToRun

En boolesk egenskap som styr om sammansättningar kompileras till ReadyToRun-format när du använder CoreCLR. ReadyToRun-sammansättningar innehåller både MSIL och intern kod. Detta kan förbättra programmets starttid samtidigt som JIT-kompatibiliteten bibehålls, men program- och nedladdningsstorleken ökar.

För Android-program som använder CoreCLR är den här egenskapen standard true i Release konfigurationen och är inte aktiverad som standard i Debug konfigurationen. ReadyToRun gäller inte när du använder Mono eller NativeAOT.

ReadyToRun kräver trimning. Om $(PublishTrimmed) inte är true inaktiverar .NET för Android PublishReadyToRun och $(PublishReadyToRunComposite) och genererar varningen XA0119.

ReadyToRun-kompilering är kombinerad som standard. Se även $(PublishReadyToRunComposite). .NET MAUI använder också partiell ReadyToRun med standard-MIBC-profiler. Se $(MauiEnableFullReadyToRun) om du vill anmäla dig till fullständig ReadyToRun.

Mer information finns i Körningsmiljöer och kompilering i .NET MAUI.

PublishReadyToRunComposite

En boolesk egenskap som styr om ReadyToRun-kompilering kombinerar programsammansättningar till en sammansatt bild. Sammansatt ReadyToRun-kompilering möjliggör optimeringar mellan sammansättningar, men kan öka byggtiden.

För Android-program som använder CoreCLR är den här egenskapen som standard true när $(PublishReadyToRun) är true. ReadyToRun, inklusive sammansatt ReadyToRun, kräver att $(PublishTrimmed) är true.

RunAOTCompilation

En boolesk egenskap som avgör om sammansättningar ska kompileras i förväg med Mono AOT-kompilatorn och ingår i program som använder Mono-körningen. Den här egenskapen är False som standard för Debug versioner och True som standard för Release versioner som använder Mono. Den aktiverar inte ReadyToRun eller NativeAOT.

Den här MSBuild-egenskapen ersätter $(AotAssemblies) egenskapen MSBuild från Xamarin.Android. Det här är samma egenskap som används för Blazor WASM.

UseMonoRuntime

En boolesk egenskap som styr om Android-applikationer använder Mono-körningsmiljön i stället för CoreCLR för .NET 10 och tidigare mål som stöds. Ange den här egenskapen till true för att använda Mono eller false för att använda CoreCLR på dessa mål. $(PublishAot) har företräde och väljer NativeAOT för publicering eller optimerade versioner som stöds när det är inställt på true.

Den här egenskapen är standard i true .NET 10 och tidigare, så Android-program använder Mono. I .NET 11 och senare är standardvärdet false, så Android-program använder CoreCLR och ett explicit true värde avvisas med NETSDK1242.

Mer information finns i Körningsmiljöer och kompilering i .NET MAUI.

WaitForExit

En boolesk egenskap som styr beteendet dotnet run för när du startar Android-program.

När $(WaitForExit) inte är false (standard), dotnet run kommer:

  • Starta Android-programmet
  • Strömma logcat utdata filtrerade till applikationens process
  • Vänta tills programmet avslutas eller för att användaren ska trycka på Ctrl+C
  • Tvinga programmet att stoppas när Ctrl+C trycks ned

När $(WaitForExit) är falsedotnet run startar helt enkelt programmet och returnerar omedelbart utan att vänta på att programmet ska avsluta eller strömma utdata.

Den här egenskapen styr även om adb shell am instrument skickas -w när programmet startas via dess $(AndroidInstrumentation):

$(WaitForExit) Startar en <activity/> Start av en <instrumentation/>
true (standardinställning) adb shell am start -S -W adb shell am instrument -w -r
false adb shell am start -S adb shell am instrument -r

Eftersom adb shell am instrument endast rapporterar resultat när instrumentationen har slutförts får $(WaitForExit) det inte vara false om du behöver instrumentationens utdata eller en meningsfull slutkod. Detta är viktigt för scenarier som att köra tester eller en BenchmarkDotNet-värd , vilket är anledningen till att dotnet test alltid använder standardvärdet.

Introducerades i .NET 11.