Freigeben über


Buildeigenschaften

MSBuild-Eigenschaften steuern das Verhalten der Ziele.

Sie werden in der Projektdatei angegeben, z . B. "MyApp.csproj", innerhalb einer MSBuild PropertyGroup.

Hinweis

In .NET für Android gibt es technisch keinen Unterschied zwischen einer Anwendung und einem Bindungsprojekt, sodass Eigenschaften in beiden funktionieren. In der Praxis wird dringend empfohlen, separate Anwendungs- und Bindungsprojekte zu erstellen. Eigenschaften, die in erster Linie in Bindungsprojekten verwendet werden, werden im Referenzhandbuch für MSBuild-Bindungen zu Projekteigenschaften dokumentiert.

AdbTarget

Die $(AdbTarget)-Eigenschaft gibt das Android-Zielgerät an, auf dem das Android-Paket installiert oder entfernt werden soll. Der Wert dieser Eigenschaft ist identisch mit der Zielgerätoption adb.

AfterGenerateAndroidManifest

Die in dieser Eigenschaft aufgelisteten MSBuild-Ziele werden direkt nach dem internen _GenerateJavaStubs-Ziel ausgeführt. Dabei wird die Datei AndroidManifest.xml im $(IntermediateOutputPath) generiert. Wenn Sie Änderungen an der generierten Datei AndroidManifest.xml vornehmen möchten, können Sie dies über diesen Erweiterungspunkt tun.

AndroidAapt2CompileExtraArgs

Gibt Befehlszeilenoptionen an, die beim Verarbeiten von Android-Ressourcen und -Ressourcen an den aapt2-Kompilierungsbefehl übergeben werden sollen.

AndroidAapt2LinkExtraArgs

Gibt Befehlszeilenoptionen an, die beim Verarbeiten von Android-Ressourcen und -Ressourcen an den aapt2-Verknüpfungsbefehl übergeben werden sollen.

AndroidAddKeepAlives

Hierbei handelt es sich um eine boolesche Eigenschaft, die steuert, ob der Linker GC.KeepAlive()-Aufrufe in Bindungsprojekten einfügt, um eine vorzeitige Objektsammlung zu verhindern.

Der Standardwert ist True für Releasekonfigurationsbuilds.

AndroidAotAdditionalArguments

Eine Zeichenfolgeneigenschaft, die das Übergeben von Optionen an den Mono-Compiler während der Aot Aufgabe für Projekte ermöglicht, die entweder $(AndroidEnableProfiledAot) festgelegt oder $(AotAssemblies) auf .true Der Zeichenfolgenwert der-Eigenschaft wird zur Antwortdatei hinzugefügt, wenn der Mono-Cross-Compiler aufgerufen wird.

Diese Eigenschaft sollte im Allgemeinen leer bleiben, bietet aber in bestimmten speziellen Szenarios möglicherweise eine nützliche Flexibilität.

Die $(AndroidAotAdditionalArguments) Eigenschaft unterscheidet sich von der zugehörigen $(AndroidExtraAotOptions) Eigenschaft. $(AndroidAotAdditionalArguments) Übergibt vollständige eigenständige, durch Leerzeichen getrennte Optionen wie --verbose oder --debug an den AOT-Compiler, enthält jedoch $(AndroidExtraAotOptions) kommagetrennte Argumente, die Teil der --aot Option des AOT-Compilers sind.

AndroidAotCustomProfilePath

Die Datei, die von aprofutil erstellt werden soll, um Profilerdaten zu speichern.

AndroidAotProfiles

Eine Zeichenfolgeneigenschaft, die es Entwicklern ermöglicht, AOT-Profile über die Befehlszeile hinzuzufügen. Es ist eine durch Semikolons oder kommagetrennte Liste absoluter Pfade.

AndroidAotProfilerPort

Der Port, über den aprofutil beim Abrufen von Profilerstellungsdaten eine Verbindung herstellen soll.

AndroidAotEnableLazyLoad

Aktivieren Sie das faule (verzögerte) Laden von AOT-d-Assemblys, anstatt sie beim Start vorab zu laden. Der Standardwert ist True für Releasebuilds mit aktivierter AOT-Form.

In .NET 6 eingeführt.

AndroidApkDigestAlgorithm

Ein Zeichenfolgenwert, der den Digestalgorithmus angibt, mit jarsigner -digestalgdem verwendet werden soll.

Der Standardwert ist SHA-256.

AndroidApkSignerAdditionalArguments

Eine Zeichenfolgeneigenschaft, die es dem Entwickler ermöglicht, dem Tool Argumente apksigner bereitzustellen.

AndroidApkSigningAlgorithm

Ein Zeichenfolgenwert, der den zu verwendenden jarsigner -sigalgSignaturalgorithmus angibt.

Der Standardwert ist SHA256withRSA.

AndroidApplication

Ein boolescher Wert, der angibt, ob das Projekt für eine Android-Anwendung (True) oder für ein Android-Bibliotheksprojekt (False oder nicht vorhanden) vorgesehen ist.

Es darf nur ein Projekt mit <AndroidApplication>True</AndroidApplication> in einem Android-Paket vorhanden sein. (Leider wird diese Anforderung nicht überprüft, was zu subtilen und bizarren Fehlern in Bezug auf Android-Ressourcen führen kann.)

AndroidApplicationJavaClass

Der vollständige Java-Klassenname, der anstelle von android.app.Application verwendet werden soll, wenn eine Klasse von Android.App.Application erbt.

Die $(AndroidApplicationJavaClass) Eigenschaft wird in der Regel durch andere Eigenschaften festgelegt, z. B. die $(AndroidEnableMultiDex) MSBuild-Eigenschaft.

AndroidAvoidEmitForPerformance

Eine boolesche Eigenschaft, die bestimmt, ob System.Reflection.Emit "vermieden" wird, um die Startleistung zu verbessern. Standardmäßig ist diese Eigenschaft True.

Die Nutzung hat System.Reflection.Emit eine spürbare Auswirkung auf die Startleistung auf Android. Dieses Verhalten ist für die folgenden Featureoptionen standardmäßig deaktiviert:

  • Switch.System.Reflection.ForceInterpretedInvoke: nach dem zweiten Aufruf MethodInfo.Invoke() oder ConstructorInfo.Invoke(), Code wird ausgegeben, um die Leistung wiederholter Aufrufe zu verbessern.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: Nach dem zweiten Aufruf zum Abrufen eines Diensts aus einem Abhängigkeitseinfügungscontainer wird Code ausgegeben, um die Leistung wiederholter Aufrufe zu verbessern.

Es ist in den meisten Android-Anwendungen wünschenswert, dieses Verhalten zu deaktivieren.

Ausführliche Informationen zu verfügbaren Featureoptionen finden Sie in der Dokumentation zu Featureoptionen für Basisklassenbibliotheken.See the Base Class Libraries Feature Switches documentation for details about available feature switches.

In .NET 8 hinzugefügt.

AndroidBinUtilsPath

Ein Pfad zu einem Verzeichnis, das die binutils von Android enthält, z. B. den nativen Linker ld und den nativen Assembler as. Diese Tools sind in .NET für Android-Workload enthalten.

Der Standardwert ist $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Ein Zeichenfolgenwert, der angibt, wie Ausnahmen weitergegeben werden sollen, wenn ein .NET für Android bereitgestellter Typ einen .NET-Typ oder eine Schnittstelle in Bezug auf Java-Typen implementiert, zAndroid.Runtime.InputStreamInvoker. B. und System.IO.Stream, oder Android.Runtime.JavaDictionary und .System.Collections.IDictionary

  • Java: Der ursprüngliche Java-Ausnahmetyp wird wie folgt verteilt.

    Javabedeutet, dass die API beispielsweise nicht ordnungsgemäß implementiert System.IO.Stream wirdStream.Read(), InputStreamInvoker da Java.IO.IOException anstelle von System.IO.IOException.

  • System: Der ursprüngliche Java-Ausnahmetyp wird abgefangen und in einen entsprechenden .NET-Ausnahmetyp eingeschlossen.

    Systembedeutet, dass z. BInputStreamInvoker. ordnungsgemäß implementiert System.IO.Streamwird und Stream.Read() keine Instanzen ausgelöst Java.IO.IOException werden. (Es kann stattdessen ein enthaltenes Element System.IO.IOException Java.IO.IOException als Exception.InnerException Wert auslösen.)

    Der Standardwert lautet System.

AndroidBoundInterfacesContainConstants

Eine boolesche Eigenschaft, die bestimmt, ob Bindungskonstanten für Schnittstellen unterstützt werden, oder die Problemumgehung zum Erstellen einer IMyInterfaceConsts Klasse wird verwendet.

Der Standardwert ist True.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Eine boolesche Eigenschaft, die angibt, ob Standard- und statische Member auf Schnittstellen unterstützt werden, oder eine alte Problemumgehung zum Erstellen einer gleichgeordneten Klasse mit statischen Elementen wie abstract class MyInterface.

Der Standardwert ist True in .NET 6 und False für legacy.

AndroidBoundInterfacesContainTypes

Eine boolesche Eigenschaft, die an Schnittstellen geschachtelte Typen unterstützt wird, oder die Problemumgehung zum Erstellen eines nicht geschachtelten Typs wie IMyInterfaceMyNestedClass.

Der Standardwert ist True in .NET 6 und False für legacy.

AndroidBuildApplicationPackage

Ein boolescher Wert, der angibt, ob das Paket erstellt und signiert werden soll (APK-Datei). Das Festlegen dieses Werts True entspricht der Verwendung der SignAndroidPackage Buildziel.

Standardmäßig ist diese Eigenschaft False.

AndroidBundleConfigurationFile

Gibt einen Dateinamen an, der als Konfigurationsdatei für bundletool verwendet werden soll, wenn ein Android App Bundle erstellt wird. Diese Datei steuert einige Aspekte für die Generierung von APKs aus dem Bundle, z. B. in welche Dimensionen das Bundle aufgeteilt wird, um APKs zu erzeugen. .NET für Android konfiguriert einige dieser Einstellungen automatisch, einschließlich der Liste der Dateierweiterungen, um nicht komprimiert zu bleiben.

Diese Eigenschaft ist nur relevant, wenn $(AndroidPackageFormat) auf aab festgelegt ist.

AndroidBundleToolExtraArgs

Gibt Befehlszeilenoptionen an, die beim Erstellen von App-Bündeln an den Bundletool-Befehl übergeben werden sollen.

AndroidClassParser

Eine Zeichenfolgeneigenschaft, die steuert, wie .jar Dateien analysiert werden. Mögliche Werte sind:

  • class-parse: Verwendet class-parse.exe, um Java-Bytecode direkt (ohne Unterstützung durch eine JVM) zu analysieren.

  • jar2xml: Dieser Wert ist veraltet und wird nicht mehr unterstützt.

AndroidCodegenTarget

Eine Zeichenfolgeneigenschaft, die das ABI-Ziel der Codegenerierung steuert. Mögliche Werte sind:

  • XamarinAndroid: Dieser Wert ist veraltet und wird nicht mehr unterstützt.

  • XAJavaInterop1: Verwendet Java.Interop für JNI-Aufrufe. Bindungsassemblys, die XAJavaInterop1 verwenden, können nur mit Xamarin.Android 6.1 oder höher erstellt und ausgeführt werden. Xamarin.Android 6.1 oder höher bindet Mono.Android.dll mit diesem Wert.

Der Standardwert ist XAJavaInterop1.

AndroidCreatePackagePerAbi

Eine boolesche Eigenschaft, die bestimmt, ob eine Gruppe von Dateien pro ABI erstellt werden soll, die in $(AndroidSupportedAbis)"-" angegeben ist, anstatt unterstützung für alle ABIs in einem einzigen .apk.

Weitere Informationen finden Sie auch im Leitfaden zum Erstellen von ABI-spezifischen APKs.

AndroidCreateProguardMappingFile

Eine boolesche Eigenschaft, die steuert, ob eine Proguard-Zuordnungsdatei als Teil des Buildprozesses generiert wird.

Wenn Sie Folgendes zu Ihrem csproj hinzufügen, wird die Datei generiert, und die AndroidProguardMappingFile Eigenschaft wird verwendet, um den Speicherort der endgültigen Zuordnungsdatei zu steuern.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

Beim Erstellen von .aab Dateien wird die Zuordnungsdatei automatisch in Ihr Paket eingeschlossen. Es ist nicht erforderlich, es manuell in den Google Play Store hochzuladen. Bei der Verwendung von .apk Dateien muss die AndroidProguardMappingFile Datei manuell hochgeladen werden.

Der Standardwert ist True bei Verwendung von $(AndroidLinkTool)=r8.

AndroidDebugKeyAlgorithm

Gibt den Standardalgorithmus zur Verwendung mit dem debug.keystore an. Der Standardwert ist RSA.

AndroidDebugKeyValidity

Gibt den Standardwert für die Gültigkeit zur Verwendung mit dem debug.keystore an. Der Standardwert ist 10950 oder oder 30 * 365 30 years.

AndroidDebugStoreType

Gibt das Dateiformat für den Schlüsselspeicher an, das für debug.keystore verwendet werden soll. Es ist standardmäßig pkcs12.

AndroidDeviceUserId

Diese Eigenschaft ermöglicht das Bereitstellen und Debuggen der Anwendung mit Gast- oder Geschäftskonten. Der Wert ist der uid-Wert, den Sie über den folgenden adb-Befehl erhalten:

adb shell pm list users

Der obige Befehl gibt die folgenden Daten zurück:

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

Der uid-Wert ist der erste ganzzahlige Wert. In der obigen Ausgabe sind 0 und 10.

AndroidDexTool

Eine Enumerationsart-Eigenschaft mit einem gültigen Wert von d8. Zuvor wurde ein Wert von dx in Xamarin.Android unterstützt.

Gibt an, welcher Android dex Compiler während des .NET für Android-Buildprozesses verwendet wird. Der Standardwert ist d8. Lesen Sie unsere Dokumentation zu D8 und R8.

AndroidEnableDesugar

Eine boolesche Eigenschaft, die bestimmt, ob desugar aktiviert ist. Android unterstützt derzeit nicht alle Java 8-Features, und die Standardtoolkette implementiert die neuen Sprachfeatures durch Bytecodetransformationen, die aufgerufen desugarwerden, für die Ausgabe des javac Compilers. Der Standardwert ist False bei Verwendung $(AndroidDexTool)=dx und True bei Verwendung von $(AndroidDexTool)=d8.

AndroidEnableGooglePlayStoreChecks

Eine bool-Eigenschaft, mit der Entwickler die folgenden Google Play Store-Prüfungen deaktivieren können: XA1004, XA1005 und XA1006. Das Deaktivieren dieser Prüfungen ist für Entwickler nützlich, die nicht auf den Google Play Store abzielen und diese Prüfungen nicht ausführen möchten.

AndroidEnableMarshalMethods

Eine bool-Eigenschaft, die bestimmt, ob LLVM-Marshallmethoden aktiviert sind. LLVM Marshal-Methoden sind eine App-Startoptimierung, die systemeigene Einstiegspunkte für die Registrierung von Java-Methoden native verwendet.

Diese Eigenschaft ist standardmäßig false.

In .NET 8 hinzugefügt.

AndroidEnableMultiDex

Eine boolesche Eigenschaft, die bestimmt, ob Multi-Dex-Unterstützung in der endgültigen .apk-Datei verwendet wird.

Standardmäßig ist diese Eigenschaft False.

AndroidEnableObsoleteOverrideInheritance

Eine boolesche Eigenschaft, die bestimmt, ob gebundene Methoden attribute automatisch von Methoden erben [Obsolete] , die sie überschreiben.

Unterstützung für diese Eigenschaft wurde in .NET 8 hinzugefügt.

Standardmäßig ist diese Eigenschaft True.

AndroidEnablePreloadAssemblies

Eine boolesche Eigenschaft, die steuert, ob alle verwalteten Assemblys, die im Anwendungspaket gebündelt sind, während des Prozessstarts geladen werden oder nicht.

Bei Festlegung auf True werden alle im Anwendungspaket gebündelten Assemblys während des Prozessstarts geladen, bevor Anwendungscode aufgerufen wird.

Bei Festlegung auf False, werden Assemblys nur bei Bedarf geladen. Das Laden von Assemblys nach Bedarf ermöglicht es Anwendungen, schneller zu starten und ist auch mit der Desktop-.NET-Semantik konsistent. Um die Zeitersparnis anzuzeigen, legen Sie die Systemeigenschaft debug.mono.log so fest, dass sie timing einschließt, und suchen Sie nach der Meldung Finished loading assemblies: preloaded in adb logcat.

Anwendungen oder Bibliotheken, die Abhängigkeitseinfügung verwenden, erfordern möglicherweise, dass diese Eigenschaft sein True muss, wenn sie wiederum erfordern, dass AppDomain.CurrentDomain.GetAssemblies() alle Assemblys innerhalb des Anwendungsbundles zurückgegeben werden, auch wenn die Assembly sonst nicht erforderlich wäre.

Dieser Wert ist standardmäßig "False".

AndroidEnableProfiledAot

Eine boolesche Eigenschaft, die bestimmt, ob während der Vorabkompilierung AOT-Profile verwendet werden.

Die Profile sind in der Elementgruppe @(AndroidAotProfile) Elementgruppe. Diese Elementgruppe enthält Standardprofile. Sie können diese überschreiben, indem Sie die vorhandenen Profile entfernen und Ihre eigenen AOT-Profile hinzufügen.

Standardmäßig ist diese Eigenschaft False.

AndroidEnableRestrictToAttributes

Eine Enumerationseigenschaft mit gültigen Werten von obsolete und disable.

Bei Festlegung auf obsolete, werden Typen und Member, die mit der Java-Anmerkung androidx.annotation.RestrictTo gekennzeichnet sind oder sich in nicht exportierten Java-Paketen befinden, mit einem [Obsolete] Attribut in der C#-Bindung gekennzeichnet.

Dieses [Obsolete] Attribut enthält eine beschreibende Meldung, in der erläutert wird, dass der Java-Paketbesitzer die API als "intern" betrachtet und warnt gegen die Verwendung.

Dieses Attribut verfügt auch über einen benutzerdefinierten Warnungscode XAOBS001 , sodass es unabhängig von der "normalen" veralteten API unterdrückt werden kann.

Bei Festlegung auf disable" wird die API ohne zusätzliche Attribute als normal generiert. (Dies ist das gleiche Verhalten wie vor .NET 8.)

Das Hinzufügen von [Obsolete] Attributen anstelle der automatischen Entfernung der API wurde durchgeführt, um die API-Kompatibilität mit vorhandenen Paketen beizubehalten. Wenn Sie stattdessen Elemente entfernen möchten, die über die @RestrictTo Anmerkung verfügen oder sich in nicht exportierten Java-Paketen befinden, können Sie zusätzlich zu dieser Eigenschaft Transform-Dateien verwenden, um zu verhindern, dass diese Typen gebunden werden:

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

Unterstützung für diese Eigenschaft wurde in .NET 8 hinzugefügt.

Diese Eigenschaft ist standardmäßig festgelegt obsolete .

AndroidEnableSGenConcurrent

Eine boolesche Eigenschaft, die bestimmt, ob der gleichzeitige Garbage Collector von Mono verwendet wird.

Standardmäßig ist diese Eigenschaft False.

AndroidErrorOnCustomJavaObject

Eine boolesche Eigenschaft, die bestimmt, ob Typen Android.Runtime.IJavaObjectohne gleichzeitiges Erben von Java.Lang.Object oder Java.Lang.Throwable implementieren können:

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

    public void Dispose()
    {
    }
}

Wenn diese Eigenschaft TRUE ist, generieren solche Typen einen XA4212-Fehler. Andernfalls wird eine XA4212-Warnung generiert.

Standardmäßig ist diese Eigenschaft True.

AndroidExplicitCrunch

Diese Eigenschaft wird nicht mehr unterstützt.

AndroidExtraAotOptions

Eine Zeichenfolgeneigenschaft, die das Übergeben von Optionen an den Mono-Compiler während der Aot Aufgabe für Projekte ermöglicht, die entweder $(AndroidEnableProfiledAot) festgelegt oder $(AotAssemblies) auf .true Der Zeichenfolgenwert der-Eigenschaft wird zur Antwortdatei hinzugefügt, wenn der Mono-Cross-Compiler aufgerufen wird.

Diese Eigenschaft sollte im Allgemeinen leer bleiben, bietet aber in bestimmten speziellen Szenarios möglicherweise eine nützliche Flexibilität.

Die $(AndroidExtraAotOptions) Eigenschaft unterscheidet sich von der verwandten $(AndroidAotAdditionalArguments) Eigenschaft; $(AndroidAotAdditionalArguments) platziert kommagetrennte Argumente in die --aot Option des Mono-Compilers. $(AndroidExtraAotOptions) übergibt stattdessen vollkommen eigenständige, durch Leerzeichen getrennte Optionen wie --verbose oder --debug an den Compiler.

AndroidFastDeploymentType

Eine durch Doppelpunkte (:) getrennte Liste von Werten zum Steuern, welche Typen im Verzeichnis für schnelle Bereitstellung auf dem Zielgerät bereitgestellt werden können, wenn die MSBuild-Eigenschaft $(EmbedAssembliesIntoApk) den Wert False aufweist. Wenn eine Ressource schnell bereitgestellt wird, ist sie nicht in die generierte .apk-Datei eingebettet, was die Bereitstellungszeiten beschleunigen kann. (Je schneller bereitgestellt wird, desto seltener müssen die .apk Neuaufbauten erfolgen, und der Installationsprozess kann schneller erfolgen.) Gültige Werte sind:

  • Assemblies: Bereitstellen von Anwendungsassemblys.
  • Dexes: .dex-Dateien, native Bibliotheken und Typzuordnungen werden bereitgestellt. Der Dexes Wert kann nur auf Geräten mit Android 4.4 oder höher (API-19) verwendet werden.

Der Standardwert ist Assemblies.

Die Unterstützung für Ressourcen und Objekte mit schneller Bereitstellung über dieses System wurde in Commit f0d565fe entfernt. Der Grund hierfür war, dass die Nutzung veralteter APIs erforderlich war, damit die Bereitstellung funktionierte.

**Unterstützung für dieses Feature wurde in .NET 9 entfernt.

Experimentell.

AndroidFragmentType

Gibt den standardmäßig vollqualifizierten Typ an, der für alle <fragment>-Layoutelemente bei der Generierung des Layoutbindungscodes verwendet wird. Der Standardwert ist der Standardmäßige Android-Typ Android.App.Fragment .

AndroidGenerateJniMarshalMethods

Eine Bool-Eigenschaft, die das Generieren von JNI-Marshallmethoden im Rahmen des Buildprozesses ermöglicht. Dies reduziert die Verwendung von System.Reflection im Hilfscode für die Bindung erheblich.

Der Standardwert ist False. Wenn Entwickler das neue JNI-Marshal-Methodenfeature verwenden möchten, können sie festlegen.

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

in ihrer .csproj-Datei festlegen. Alternativ können Sie die Eigenschaft auch auf der Befehlszeile angeben über

-p:AndroidGenerateJniMarshalMethods=True

Experimentell. Der Standardwert ist False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Eine Zeichenfolgeneigenschaft, die zum Hinzufügen von Parametern zum Aufruf verwendet werden kann und für das jnimarshalmethod-gen.exe Debuggen nützlich ist, sodass Optionen wie -v, , -doder --keeptemp verwendet werden können.

Der Standardwert ist eine leere Zeichenfolge. Er kann in der .csproj-Datei oder an der Befehlszeile festgelegt werden. Zum Beispiel:

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

oder:

-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

AndroidGenerateLayoutBindings

Ermöglicht bei der Festlegung auf true die Generierung von Layout-CodeBehind oder deaktiviert dies bei Festlegung auf false vollständig.

Der Standardwert ist false.

AndroidGenerateResourceDesigner

Der Standardwert ist true. Bei Festlegung auf false, deaktiviert die Generierung von Resource.designer.cs.

AndroidHttpClientHandlerType

Steuert die Standardimplementierung von System.Net.Http.HttpMessageHandler, die vom System.Net.Http.HttpClient-Standardkonstruktor verwendet wird. Der Wert ist ein Name mit Assemblyqualifikation einer HttpMessageHandler-Unterklasse und eignet sich für die Verwendung mit System.Type.GetType(string).

In .NET 6 und höher hat diese Eigenschaft nur auswirkungen, wenn sie zusammen mit $(UseNativeHttpHandler)=true. Für diese Eigenschaft werden am häufigsten die folgenden Werte zurückgegeben:

  • Xamarin.Android.Net.AndroidMessageHandler: Verwenden Sie die Android-Java-APIs, um HTTP-Anforderungen auszuführen. Es ähnelt der Legacyversion Xamarin.Android.Net.AndroidClientHandler mit mehreren Verbesserungen. Es unterstützt HTTP 1.1 und TLS 1.2. Dies ist der standardmäßige HTTP-Nachrichtenhandler.

  • System.Net.Http.SocketsHttpHandler, System.Net.Http: Der Standardnachrichtenhandler in .NET. Er unterstützt HTTP/2, TLS 1.2 und ist der empfohlene HTTP-Nachrichtenhandler für die Verwendung mit Grpc.Net.Client. Dieser Wert entspricht $(UseNativeHttpHandler)=false.

  • Nicht festgelegt/die leere Zeichenfolge, die entspricht System.Net.Http.HttpClientHandler, System.Net.Http

    Entspricht der Standardoption auf den Visual Studio-Eigenschaftenseiten.

    Der Assistent für neue Projekte wählt diese Option für neue Projekte aus, wenn die Niedrigste zulässige Android-Version auf Android 4.4.87 oder höher in Visual Studio oder für die Option Zielplattformen in Visual Studio für Mac Moderne Entwicklung oder Maximale Kompatibilität festgelegt ist.

  • System.Net.Http.HttpClientHandler, System.Net.Http: Verwenden Sie die verwaltete HttpMessageHandler.

    Entspricht der Option "Verwaltet" auf den Eigenschaftenseiten von Visual Studio.

Hinweis

In .NET 6 darf der von Ihnen angegebene Typ nicht oder Xamarin.Android.Net.AndroidClientHandler System.Net.Http.HttpClientHandler von einer dieser Klassen erben. Wenn Sie von "classic" Xamarin.Android migrieren, verwenden AndroidMessageHandler oder leiten Sie stattdessen Ihren benutzerdefinierten Handler daraus ab.

Hinweis

Die Unterstützung für die $(AndroidHttpClientHandlerType) Eigenschaft funktioniert durch Festlegen der XA_HTTP_CLIENT_HANDLER_TYPE Umgebungsvariable. Ein $XA_HTTP_CLIENT_HANDLER_TYPE Wert in einer Datei mit einer Buildaktion von @(AndroidEnvironment) hat Vorrang.

AndroidIncludeWrapSh

Ein boolescher Wert, der angibt, ob das Android-Wrapper-Skript (wrap.sh) in das APK verpackt werden soll. Der Standardwert liegt false daran, dass das Wrapperskript die Art und Weise beeinflussen kann, wie die Anwendung gestartet wird und funktioniert, und das Skript sollte nur bei Bedarf einbezogen werden, z. B. beim Debuggen oder anderweitigen Ändern des Anwendungsstart-/Laufzeitverhaltens.

Das Skript wird dem Projekt mit der Buildaktion hinzugefügt,@(AndroidNativeLibrary) Buildaktion, da sie im selben Verzeichnis wie architekturspezifische systemeigene Bibliotheken platziert wird und benannt wrap.shwerden muss.

Die einfachste Möglichkeit, den Pfad zum wrap.sh-Skript anzugeben, besteht darin, es in einem Verzeichnis zu platzieren, das nach der Zielarchitektur benannt ist. Dieser Ansatz funktioniert, wenn Sie pro Architektur über nur eine Datei wrap.sh verfügen:

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

Wenn Ihr Projekt jedoch mehr als eine Datei wrap.sh pro Architektur benötigt, funktioniert er nicht. In solchen Fällen kann stattdessen der Name mit den Link-Metadaten für AndroidNativeLibrary angegeben werden:

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

Wenn die Link-Metadaten verwendet werden, muss es sich bei dem im zugehörigen Wert angegebenen Pfad um einen gültigen nativen architekturspezifischen Bibliothekspfad relativ zum APK-Stammverzeichnis handeln. Das Format des Pfads ist lib\ARCH\wrap.sh, wobei ARCH einer der folgenden Werte sein kann:

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

AndroidIncludeAssetPacksInPackage

Diese Eigenschaft steuert, ob ein Asset Packs-Build automatisch in der endgültigen .aab Datei enthalten ist. Sie wird standardmäßig auf true.

In bestimmten Fällen möchte der Benutzer möglicherweise eine Zwischenversion freigeben. In diesen Fällen muss der Benutzer das Asset Pack nicht aktualisieren. Insbesondere, wenn sich der Inhalt des Bestandspakets nicht geändert hat. Mit dieser Eigenschaft kann der Benutzer die Ressourcenpakete überspringen, wenn sie nicht erforderlich sind.

Hinzugefügt in .NET 9

AndroidInstallJavaDependencies

Der Standardwert ist true für Befehlszeilenbuilds. Bei Festlegung auf true, aktiviert die Installation des Java SDK beim Ausführen des Ziels <InstallAndroidDependencies/> .

Unterstützung für diese Eigenschaft wurde in .NET 9 hinzugefügt.

AndroidJavadocVerbosity

Gibt an, wie ausführliche C#-XML-Dokumentationskommentare beim Importieren der Javadoc-Dokumentation in Bindungsprojekten sein sollen.

Erfordert die Verwendung der @(JavaSourceJar) Buildaktion.

Die $(AndroidJavadocVerbosity) Eigenschaft ist aufzählend, mit möglichen Werten von full oder intellisense:

Der Standardwert ist intellisense.

AndroidKeyStore

Ein boolescher Wert, der angibt, ob benutzerdefinierte Signaturinformationen verwendet werden sollen. Der Standardwert ist False. Dies bedeutet, dass der Debugsignatur-Standardschlüssel verwendet wird, um Pakete zu signieren.

AndroidLaunchActivity

Die Android-Aktivität zum Starten.

AndroidLinkMode

Gibt an, welcher Typ von Verknüpfung für Assemblys ausgeführt werden soll, die im Android-Paket enthalten sind. Wird nur in Android-Anwendungsprojekten verwendet. Der Standardwert ist SdkOnly. Gültige Werte sind:

  • Keiner: Es wird keine Verknüpfung versucht.

  • SdkOnly: Verknüpfung wird nur für die Basisklassenbibliotheken ausgeführt, nicht für die Assemblys des Benutzers.

  • Full: Verknüpfung wird für die Basisklassenbibliotheken und die Assemblys des Benutzers ausgeführt.

    Hinweis

    Die Verwendung des AndroidLinkMode-Werts Full führt häufig zu fehlerhaften Apps, insbesondere beim Einsatz von Reflektion. Vermeiden Sie diesen Wert (es sei denn, Sie wissen wirklich, was Sie tun).

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

Wenn true, das Buildsystem verknüpft die geschachtelten Typen der Resource.Designer.cs Resource Klasse in allen Assemblys. Der IL-Code, der diese Typen verwendet, wird aktualisiert, um die Werte direkt zu verwenden, anstatt auf Felder zuzugreifen.

Das Verknüpfen der geschachtelten Typen kann einen kleinen Einfluss auf die Verringerung der APK-Größe haben und kann auch bei der Startleistung helfen. Nur "Release"-Builds sind verknüpft.

Experimentell. Nur für die Arbeit mit Code wie z. B.

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

Alle anderen Szenarien (z. B. Spiegelung) werden nicht unterstützt.

AndroidLinkSkip

Gibt eine durch Semikolons (;) getrennte Liste von Assemblynamen (ohne Dateierweiterungen) von Assemblys an, die nicht verknüpft werden sollen. Wird nur in Android-Anwendungsprojekten verwendet.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

Eine Eigenschaft im Enumerationsstil mit gültigen Werten von proguard oder r8. Gibt an, welcher Code-Shrinker für Java-Code verwendet wird. Der Standardwert ist eine leere Zeichenfolge oder proguard wenn $(AndroidEnableProguard) dies der Wert ist True. Lesen Sie unsere Dokumentation zu D8 und R8.

AndroidLintEnabled

Eine bool-Eigenschaft, mit der der Entwickler das Android-Tool lint als Teil des Paketprozesses ausführen kann.

Wenn $(AndroidLintEnabled) den Wert TRUE hat, werden die folgenden Eigenschaften verwendet:

Die folgenden Buildaktionen können ebenfalls verwendet werden:

Weitere Informationen zu den Android-lint-Tools finden Sie in der Lint-Hilfe.

AndroidLintEnabledIssues

Eine Zeichenfolgeneigenschaft, die eine durch Trennzeichen getrennte Liste der zu aktivierenden Lintprobleme ist.

Wird nur verwendet, wenn $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Eine Zeichenfolgeneigenschaft, die eine durch Trennzeichen getrennte Liste von Lintproblemen ist, die deaktiviert werden sollen.

Wird nur verwendet, wenn $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

Eine Zeichenfolgeneigenschaft, die eine durch Trennzeichen getrennte Liste der zu überprüfenden Lintprobleme ist.

Wird nur verwendet, wenn $(AndroidLintEnabled)=True.

Hinweis: Es werden nur diese Probleme überprüft.

AndroidManagedSymbols

Eine boolesche Eigenschaft, die steuert, ob Sequenzpunkte generiert werden, sodass Dateinamen- und Zeilennummerinformationen aus Release-Stapelüberwachungen extrahiert werden können.

AndroidManifest

Gibt einen Dateinamen an, der als Vorlage für die Datei AndroidManifest.xml der App verwendet werden soll. Während des Builds werden alle anderen notwendigen Werte gemergt, um die eigentliche Datei AndroidManifest.xml zu generieren. $(AndroidManifest) muss den Paketnamen im /manifest/@package-Attribut enthalten.

AndroidManifestMerger

Gibt die Implementierung für die Zusammenführung von AndroidManifest.xml-Dateien an. Hierbei handelt es sich um eine Enumerationseigenschaft, bei der legacy die ursprüngliche C#-Implementierung und manifestmerger.jar die Java-Implementierung von Google auswählt.

Der derzeitige Standardwert ist manifestmerger.jar. Wenn Sie die alte Version verwenden möchten, fügen Sie Ihrem csproj Folgendes hinzu:

<AndroidManifestMerger>legacy</AndroidManifestMerger>

Der Merger von Google ermöglicht die Unterstützung für xmlns:tools="http://schemas.android.com/tools" (siehe Beschreibung in der Android-Dokumentation).

AndroidManifestMergerExtraArgs

Eine Zeichenfolgeneigenschaft zum Bereitstellen von Argumenten für das Android-Dokumentationstool .

Wenn Sie eine detaillierte Ausgabe des Tools benötigen, können Sie Folgendes zu der .csprojDatei hinzufügen.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

Eine Eigenschaft im Enumerationsstil mit gültigen Werten von Xamarin oder GoogleV2. Dadurch wird gesteuert, welches Repository vom InstallAndroidDependencies Ziel, um zu bestimmen, welche Android-Pakete und Paketversionen verfügbar sind und installiert werden können.

Xamarin ist das Repository für genehmigte Liste (empfohlen) im Visual Studio SDK Manager.

GoogleV2 ist das Vollständige Listen-Repository (nicht unterstützt) im Visual Studio SDK Manager.

Wenn $(AndroidManifestType) sie nicht festgelegt ist, wird sie Xamarin verwendet.

AndroidManifestPlaceholders

Eine durch Semikolons getrennte Liste der Schlüssel-Wert-Ersatzpaare für AndroidManifest.xml, wobei jedes Paar das Format key=value aufweist.

Ein Eigenschaftswert von assemblyName=$(AssemblyName) definiert beispielsweise einen ${assemblyName}-Platzhalter, der dann in AndroidManifest.xml angezeigt werden kann.

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

Dies bietet eine Möglichkeit, Variablen aus dem Buildprozess in die Datei AndroidManifest.xml einzufügen.

AndroidMultiDexClassListExtraArgs

Eine Zeichenfolgeneigenschaft, mit der com.android.multidex.MainDexListBuilder Entwickler Argumente beim Generieren der multidex.keep Datei übergeben können.

Ein spezieller Fall ist, wenn bei der dx-Kompilierung der folgende Fehler angezeigt wird.

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

Wenn Sie diesen Fehler erhalten, können Sie in der .csproj-Datei Folgendes hinzufügen.

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

wodurch der dx Schritt erfolgreich ausgeführt werden kann.

AndroidPackageFormat

Eine Eigenschaft im Enumerationsstil mit gültigen Werten von apk oder aab. Gibt an, ob Sie die Android-Anwendung als APK-Datei oder Android App Bundle verpacken möchten. App-Bundles sind ein neues Format für Release-Builds, die für die Übermittlung auf Google Play vorgesehen sind. Der Standardwert ist apk.

Wenn $(AndroidPackageFormat) auf aabfestgelegt ist, werden andere MSBuild-Eigenschaften festgelegt, die für Android-App-Bundles erforderlich sind:

Diese Eigenschaft ist für .net 6 veraltet. Benutzer sollten zum neueren AndroidPackageFormatsWechseln wechseln.

AndroidPackageFormats

Eine durch Semikolons getrennte Eigenschaft mit gültigen Werten von apk und aab. Gibt an, ob Sie die Android-Anwendung als APK-Datei oder Android App Bundle verpacken möchten. App-Bundles sind ein neues Format für Release-Builds, die für die Übermittlung auf Google Play vorgesehen sind.

Beim Erstellen eines Releasebuilds möchten Sie möglicherweise sowohl als aab auch eine apk Verteilung für verschiedene Stores erstellen.

aab;apk Die Einstellung AndroidPackageFormats führt dazu, dass beide generiert werden. Die Einstellung AndroidPackageFormats auf eine aab oder apk nur eine Datei wird generiert.

Der Standardwert ist aab;apk nur für Release Builds vorgesehen. Es wird empfohlen, dass Sie weiterhin nur apk für das Debuggen verwenden.

AndroidPackageNamingPolicy

Eine Eigenschaft im Enumerationsstil zum Angeben der Java-Paketnamen des generierten Java-Quellcodes.

Der einzige unterstützte Wert lautet LowercaseCrc64.

AndroidPrepareForBuildDependsOn

Eine durch Semikolons getrennte Eigenschaft, die zum Erweitern des Android-Buildprozesses verwendet werden kann. MSBuild-Ziele, die dieser Eigenschaft hinzugefügt werden, werden frühzeitig im Build für Anwendungs- und Bibliotheksprojekttypen ausgeführt. Diese Eigenschaft ist standardmäßig leer.

Beispiel:

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

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

AndroidProguardMappingFile

Gibt die ProGuard-Regel -printmapping für r8 an. Dies bedeutet, dass die Datei mapping.txt im Ordner $(OutputPath) erstellt wird. Diese Datei kann dann verwendet werden, wenn Pakete in den Google Play Store hochgeladen werden.

Standardmäßig wird diese Datei bei Verwendung AndroidLinkTool=r8 automatisch erstellt und generiert die folgende Datei $(OutputPath)mapping.txt.

Wenn Sie diese Zuordnungsdatei nicht generieren möchten, können Sie die Eigenschaft verwenden, um die AndroidCreateProguardMappingFile Erstellung zu beenden. Fügen Sie Folgendes in Ihrem Projekt hinzu:

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

oder verwenden Sie -p:AndroidCreateProguardMappingFile=False sie in der Befehlszeile.

AndroidD8IgnoreWarnings

Gibt an --map-diagnostics warning info , an d8die übergeben werden soll. Der Standardwert ist True, kann jedoch so festgelegt werden, dass False ein strengeres Verhalten erzwungen wird. Ausführliche Informationen finden Sie im Quellcode von D8 und R8.

In .NET 8 hinzugefügt.

AndroidR8IgnoreWarnings

Gibt die ProGuard-Regel -ignorewarnings für r8 an. Dadurch kann r8 mit der DEX-Kompilierung fortfahren, auch wenn bestimmte Warnungen auftreten. Der Standardwert ist True, kann jedoch so festgelegt werden, dass False ein strengeres Verhalten erzwungen wird. Weitere Informationen finden Sie im ProGuard-Leitfaden.

Gibt ab .NET 8 an --map-diagnostics warning info. Ausführliche Informationen finden Sie im Quellcode von D8 und R8.

AndroidR8JarPath

Der Pfad zur Datei r8.jar zur Verwendung mit dem r8 dex-Compiler und -Shrinker. Der Standardwert ist ein Pfad zur .NET für Android-Workloadinstallation. Weitere Informationen finden Sie in unserer Dokumentation zu D8 und R8.

AndroidResgenExtraArgs

Gibt Befehlszeilenoptionen an, die beim Verarbeiten von Android-Ressourcen und -Ressourcen an den aapt-Befehl übergeben werden sollen.

AndroidResgenFile

Gibt den Namen der zu generierenden Ressourcendatei an. Die Standardvorlage legt diese Option auf Resource.designer.cs fest.

AndroidResourceDesignerClassModifier

Gibt den Klassenmodifizierer für die zwischengeschaltete Resource Klasse an, die generiert wird. Gültige Werte sind public und internal.

Standardmäßig lautet publicdies .

In .NET 9 hinzugefügt.

AndroidSdkBuildToolsVersion

Das Buildtoolpaket des Android SDK enthält unter anderem die Tools aapt und zipalign. Mehrere verschiedene Versionen des build-tools-Pakets können gleichzeitig installiert werden. Das build-tools-Paket, das für die Paketerstellung ausgewählt wird, wird durch Überprüfen und Verwenden einer „bevorzugten“ build-tools-Version ermittelt, wenn diese vorhanden ist. Wenn die „bevorzugte“ Version nicht vorhanden ist, wird das Paket mit der höchsten installierten build-tools-Version verwendet.

Die MSBuild-Eigenschaft $(AndroidSdkBuildToolsVersion) enthält die bevorzugte build-tools-Version. Das .NET für Android-Buildsystem bietet einen Standardwert in Xamarin.Android.Common.targets, und der Standardwert kann in Ihrer Projektdatei außer Kraft gesetzt werden, um eine alternative Buildtools-Version auszuwählen, wenn (z. B.) das neueste aapt abstürzt, während eine vorherige aapt-Version bekannt ist.

AndroidSigningKeyAlias

Gibt den Alias für den Schlüssel im Keystore an. Dies ist der Wert keytool -alias, der beim Erstellen des Keystore verwendet wird.

AndroidSigningKeyPass

Gibt das Kennwort des Schlüssels in der Keystoredatei an. Dies ist der Wert, der eingegeben wird, wenn keytool die folgende Aufforderung ausgibt: Enter key password for $(AndroidSigningKeyAlias).

Diese Eigenschaft unterstützt auch die Präfixe env: und file:, die verwendet werden können, um eine Umgebungsvariable oder eine Datei anzugeben, die das Kennwort enthält. Diese Optionen bieten eine Möglichkeit, zu verhindern, dass das Kennwort in Buildprotokollen auftaucht.

So wird beispielsweise eine Umgebungsvariable mit dem Namen AndroidSigningPassword verwendet:

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

So verwenden Sie die Datei C:\Users\user1\AndroidSigningPassword.txt:

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

Hinweis

Das Präfix env: wird nicht unterstützt, wenn $(AndroidPackageFormat) auf aab festgelegt ist.

AndroidSigningKeyStore

Gibt den Dateinamen der von keytool erstellten Keystoredatei an. Dies entspricht dem Wert, der der Option keytool -keystore zur Verfügung gestellt wird.

AndroidSigningStorePass

Gibt das Kennwort für $(AndroidSigningKeyStore) an. Dies ist der Wert, der keytool beim Erstellen der Keystoredatei zur Verfügung gestellt wird, wenn die folgende Aufforderung ausgegeben wird: Enter keystore password:.

Diese Eigenschaft unterstützt auch die Präfixe env: und file:, die verwendet werden können, um eine Umgebungsvariable oder eine Datei anzugeben, die das Kennwort enthält. Diese Optionen bieten eine Möglichkeit, zu verhindern, dass das Kennwort in Buildprotokollen auftaucht.

So wird beispielsweise eine Umgebungsvariable mit dem Namen AndroidSigningPassword verwendet:

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

So verwenden Sie die Datei C:\Users\user1\AndroidSigningPassword.txt:

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

Hinweis

Das Präfix env: wird nicht unterstützt, wenn $(AndroidPackageFormat) auf aab festgelegt ist.

AndroidSigningPlatformKey

Gibt die Schlüsseldatei an, die zum Signieren der APK verwendet werden soll. Dies wird nur beim Erstellen von system Anwendungen verwendet.

AndroidSigningPlatformCert

Gibt die Zertifikatdatei an, die zum Signieren der APK verwendet werden soll. Dies wird nur beim Erstellen von system Anwendungen verwendet.

AndroidStripILAfterAOT

Eine Bool-Eigenschaft, die angibt, ob die Methodentexte der kompilierten AOT-Methoden entfernt werden.

Der Standardwert ist false, und die Methodentexte der kompilierten AOT-Methoden werden nicht entfernt.

Bei Festlegung auf true, $(AndroidEnableProfiledAot) ist standardmäßig festgelegt false . Dies bedeutet, dass in Releasekonfigurationsbuilds – in denen $(RunAOTCompilation) true standardmäßig – AOT für alles aktiviert ist. Dies kann zu erhöhten App-Größen führen. Dieses Verhalten kann überschrieben werden, indem sie explizit in der Projektdatei festgelegt $(AndroidEnableProfiledAot) true wird.

Unterstützung für diese Eigenschaft wurde in .NET 8 hinzugefügt.

AndroidSupportedAbis

Eine Zeichenfolgeneigenschaft, die eine durch Semikolons (;) getrennte Liste von ABIs enthält, die in die .apk-Datei aufgenommen werden sollen.

Unterstützte Werte sind:

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

AndroidTlsProvider

Diese Eigenschaft ist veraltet und sollte nicht verwendet werden.

AndroidUseAapt2

Eine boolesche Eigenschaft, mit der der Entwickler die Verwendung des Tools für das aapt2 Verpacken steuern kann. Standardmäßig ist dies "True".

Diese Eigenschaft kann nicht auf "false" festgelegt werden.

AndroidUseApkSigner

Eine Bool-Eigenschaft, die es dem Entwickler ermöglicht, das apksigner Tool anstelle von jarsigner.

AndroidUseDefaultAotProfile

Eine boolesche Eigenschaft, die es Entwicklern ermöglicht, die Verwendung der AOT-Standardprofile zu unterdrücken.

Zum Unterdrücken der standardmäßigen AOT-Profile wird die-Eigenschaft auf falsefestgelegt.

AndroidUseDesignerAssembly

Eine Bool-Eigenschaft, die steuert, ob das Buildsystem eine _Microsoft.Android.Resource.Designer.dll Datei als Apposed für eine Resource.Designer.cs Datei generiert. Die Vorteile sind kleinere Anwendungen und schnellere Startzeit.

Der Standardwert ist true in .NET 8.

Als Nuget Author wird empfohlen, drei Versionen der Assembly zu versenden, wenn Sie die Abwärtskompatibilität beibehalten möchten. One for MonoAndroid, one for net6.0-android and one for net8.0-android. Dazu können Sie Xamarin.Legacy.Sdk verwenden. Dies ist nur erforderlich, wenn Ihr Nuget Library-Projekt Elemente im Projekt oder über eine Abhängigkeit verwendet AndroidResource .

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

Alternativ können Sie diese Einstellung deaktivieren, bis beispielsweise "Classic" und "net7.0-android" veraltet sind.

.NET 8 Projekte, die diese Einstellung deaktivieren, können keine Verweise verwenden, die sie verwenden. Wenn Sie versuchen, eine Assembly zu verwenden, die dieses Feature in einem Projekt aktiviert hat, das nicht funktioniert, erhalten Sie einen XA1034 Buildfehler.

In .NET 8 hinzugefügt.

AndroidUseInterpreter

Eine boolesche Eigenschaft, die den .apk Mono-Interpreter und nicht den normalen JIT enthält.

Experimentell.

AndroidUseLegacyVersionCode

Eine boolesche Eigenschaft, mit der der Entwickler die VersionCode-Berechnung wieder auf das alte Verhalten vor Xamarin.Android 8.2 zurücksetzen kann. Dies sollte NUR für Entwickler verwendet werden, die an im Google Play Store vorhandenen Anwendungen arbeiten. Es wird dringend empfohlen, die neue $(AndroidVersionCodePattern)-Eigenschaft zu verwenden.

AndroidUseManagedDesignTimeResourceGenerator

Eine boolesche Eigenschaft, die über die Entwurfszeitbuilds wechselt, um den verwalteten Ressourcenparser anstelle von aapt.

AndroidUseNegotiateAuthentication

Eine boolesche Eigenschaft, die die Unterstützung der NTLMv2/Negotiate-Authentifizierung in AndroidMessageHandlerermöglicht. Der Standardwert ist Falsch.

In .NET 7 hinzugefügt.

AndroidUseSharedRuntime

Diese Eigenschaft ist veraltet und sollte nicht verwendet werden.

AndroidVersionCode

Eine MSBuild-Eigenschaft, die als Alternative zu /manifest/@android:versionCode der AndroidManifest.xml Datei verwendet werden kann. Um dieses Feature zu aktivieren, müssen Sie auch aktivieren <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dies ist der Standardwert in .NET 6.

Diese Eigenschaft wird ignoriert, wenn $(AndroidCreatePackagePerAbi) sie $(AndroidVersionCodePattern) verwendet werden.

@android:versionCode ist ein ganzzahliger Wert, der für jede Google Play-Version erhöht werden muss. Weitere Details zu den Anforderungen finden /manifest/@android:versionCodeSie in der Android-Dokumentation.

AndroidVersionCodePattern

Eine Zeichenfolgeneigenschaft, mit der der Entwickler das versionCode Manifest anpassen kann. Informationen zur Entscheidung für einen versionCodefinden Sie unter Erstellen des Versionscodes für das APK.

Einige Beispiele: Wenn abiarmeabi ist und versionCode im Manifest 123 ist, generiert {abi}{versionCode} einen versionCode von 1123, wenn $(AndroidCreatePackagePerAbi) TRUE ist, andernfalls wird ein Wert von 123 generiert. Wenn abix86_64 ist und versionCode im Manifest 44 ist: Dies generiert 544, wenn $(AndroidCreatePackagePerAbi) TRUE ist, andernfalls wird ein Wert von 44 generiert.

Wenn wir eine Formatzeichenfolge für Auffüllung links {abi}{versionCode:0000} einschließen, wird 50044 generiert, weil wir versionCode links mit 0 auffüllen. Alternativ können Sie die Dezimalauffüllung verwenden, wie z.B. ,{abi}{versionCode:D4} dies entspricht dem vorherigen Beispiel.

Nur die Formatzeichenfolgen „0“ und „Dx“ für Auffüllung werden unterstützt, da der Wert eine ganze Zahl sein MUSS.

Vordefinierte Schlüsselelemente

  • abi – Fügt das zielorientierte Abi für die App ein.

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK – Fügt den minimal unterstützten SDK-Wert aus dem AndroidManifest.xml oder 11 wenn keine definiert ist.

  • versionCode – Verwendet den Versionscode direkt von Properties\AndroidManifest.xml.

Sie können mithilfe der $(AndroidVersionCodeProperties)-Eigenschaft (definiert als Nächstes) benutzerdefinierte Elemente definieren.

Standardmäßig ist der Wert auf {abi}{versionCode:D6} festgelegt. Wenn Sie das vorherige Verhalten beibehalten möchten, können Sie die Standardeinstellung überschreiben, indem Sie die $(AndroidUseLegacyVersionCode)-Eigenschaft auf true festlegen.

AndroidVersionCodeProperties

Eine Zeichenfolgeneigenschaft, mit der der Entwickler benutzerdefinierte Elemente definieren kann, die mit der $(AndroidVersionCodePattern). Diese liegen in Form eines key=value-Paares vor. Alle Elemente im value sollten ganzzahlige Werte sein. Beispiel: screen=23;target=$(_AndroidApiLevel) Wie Sie sehen können, können Sie vorhandene oder benutzerdefinierte MSBuild-Eigenschaften in der Zeichenfolge verwenden.

ApplicationId

Eine MSBuild-Eigenschaft, die als Alternative zu /manifest/@package der AndroidManifest.xml Datei verwendet werden kann. Um dieses Feature zu aktivieren, müssen Sie auch aktivieren <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dies ist der Standardwert in .NET 6.

Weitere Details zu den Anforderungen finden /manifest/@packageSie in der Android-Dokumentation.

ApplicationTitle

Eine MSBuild-Eigenschaft, die als Alternative zu /manifest/application/@android:label der AndroidManifest.xml Datei verwendet werden kann. Um dieses Feature zu aktivieren, müssen Sie auch aktivieren <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dies ist der Standardwert in .NET 6.

Weitere Details zu den Anforderungen finden /manifest/application/@android:labelSie in der Android-Dokumentation.

ApplicationVersion

Eine MSBuild-Eigenschaft, die als Alternative zu /manifest/@android:versionName der AndroidManifest.xml Datei verwendet werden kann. Um dieses Feature zu aktivieren, müssen Sie auch aktivieren <GenerateApplicationManifest>true</GenerateApplicationManifest>. Dies ist der Standardwert in .NET 6.

Weitere Details zu den Anforderungen finden /manifest/@android:versionNameSie in der Android-Dokumentation.

AotAssemblies

Eine boolesche Eigenschaft, die bestimmt, ob Assemblys vorab in systemeigenen Code kompiliert und in Anwendungen eingeschlossen werden. Standardmäßig ist diese Eigenschaft False.

Veraltet in .NET 7. Migrieren Sie stattdessen zur neuen $(RunAOTCompilation) MSBuild-Eigenschaft, da die Unterstützung für $(AotAssemblies) eine zukünftige Version entfernt wird.

AProfUtilExtraOptions

Zusätzliche Optionen für die Übergabe an aprofutil.

BeforeBuildAndroidAssetPacks

MSBuild-Ziele, die in dieser Eigenschaft aufgeführt sind, werden direkt ausgeführt, bevor die AssetPack Elemente erstellt werden.

Hinzugefügt in .NET 9

BeforeGenerateAndroidManifest

Die in dieser Eigenschaft aufgelisteten MSBuild-Ziele werden direkt vor _GenerateJavaStubs ausgeführt.

Konfiguration

Gibt die zu verwendende Buildkonfiguration an, z. B. „Debug“ oder „Release“. Die Configuration-Eigenschaft wird verwendet, um Standardwerte für andere Eigenschaften zu ermitteln, die das Zielverhalten bestimmen. In der IDE können ggf. zusätzliche Konfigurationen erstellt werden.

Standardmäßig führt die Debug Konfiguration zu der Install und SignAndroidPackage zielt darauf ab, ein kleineres Android-Paket zu erstellen, das das Vorhandensein anderer Dateien und Pakete erfordert, um zu arbeiten.

Die Standardkonfiguration Release führt zu der Install und SignAndroidPackagezielt darauf ab, ein Android-Paket zu erstellen, das eigenständig ist und verwendet werden kann, ohne andere Pakete oder Dateien zu installieren.

DebugSymbols

Ein boolescher Wert, der bestimmt, ob das Android-Paket debuggierbar ist, in Kombination mit der $(DebugType) Eigenschaft. Ein debugfähiges Paket enthält Debugsymbole, legt das //application/@android:debuggable Attribut fest trueund fügt das Attribut automatisch hinzu.INTERNET Berechtigung, damit ein Debugger an den Prozess anfügen kann. Eine Anwendung kann debuggt werden, wenn DebugSymbols den Wert True aufweist und DebugType entweder die leere Zeichenfolge oder Full ist.

DebugType

Gibt den Typ von Debugsymbolen an, die als Teil des Builds generiert werden sollen. Dies wirkt sich ebenfalls darauf aus, ob die Anwendung debuggt werden kann. Mögliche Werte sind:

  • Full: Vollständige Symbole werden generiert. Wenn die MSBuild-Eigenschaft DebugSymbols MSBuild-Eigenschaft ist auch True, dann ist das Anwendungspaket debuggierbar.

  • PdbOnly: Es werden PDB-Symbole generiert. Das Anwendungspaket kann nicht debuggt werden.

Wenn DebugType nicht festgelegt wurde oder die leere Zeichenfolge ist, steuert die DebugSymbols-Eigenschaft, ob die Anwendung debuggt werden kann.

EmbedAssembliesIntoApk

Eine boolesche Eigenschaft, die bestimmt, ob die Assemblys der App in das Anwendungspaket eingebettet werden sollen.

Diese Eigenschaft sollte True für Releasebuilds und False für Debugbuilds sein. Sie muss ggf. True in Debugbuilds sein, wenn die schnelle Bereitstellung das Zielgerät nicht unterstützt.

Wenn diese Eigenschaft lautet False, dann $(AndroidFastDeploymentType) MsBuild-Eigenschaft steuert auch, was in die .apkEingebettet werden soll, was sich auf die Bereitstellungs- und Neuerstellungszeiten auswirken kann.

EnableLLVM

Eine boolesche Eigenschaft, die bestimmt, ob LLVM verwendet wird, wenn Assemblys vorab in nativen Code kompiliert werden.

Zum Erstellen eines Projekts, für das diese Eigenschaft aktiviert ist, muss das Android-NDK installiert sein.

Standardmäßig ist diese Eigenschaft False.

Diese Eigenschaft wird ignoriert, wenn die MSBuild-Eigenschaft $(AotAssemblies) nicht den Wert True aufweist.

EnableProguard

Eine boolesche Eigenschaft, die bestimmt, ob ProGuard als Teil des Paketerstellungsprozesses ausgeführt wird, um Java-Code zu verknüpfen.

Standardmäßig ist diese Eigenschaft False.

Wenn True, werden @(ProguardConfiguration)-Dateien verwendet, um die proguard-Ausführung zu steuern.

GenerateApplicationManifest

Aktiviert oder deaktiviert die folgenden MSBuild-Eigenschaften, die Werte in der endgültigen AndroidManifest.xml Datei ausgeben:

Der Standardwert $(GenerateApplicationManifest) ist true.

JavaMaximumHeapSize

Gibt den Wert des Java-Parameters-Xmx an, der beim Erstellen der .dex-Datei als Teil des Paketerstellungsprozesses verwendet werden soll. Wenn nicht angegeben, stellt die Option -Xmxjava mit einem Wert von 1G bereit. Dies wurde unter Windows im Vergleich zu anderen Plattformen als häufig erforderlich erachtet.

Die Angabe dieser Eigenschaft ist erforderlich, wenn das _CompileDex-Ziel einen java.lang.OutOfMemoryError auslöst.

Passen Sie den Wert durch folgende Änderungen an:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

Gibt Befehlszeilenoptionen an, die beim Erstellen der .dex Datei an Java übergeben werden sollen.

JarsignerTimestampAuthorityCertificateAlias

Über diese Eigenschaft können Sie einen Alias im Keystore für eine Zeitstempelautorität angeben. Weitere Informationen finden Sie in der Java Dokumentation zur Zeitstempelunterstützung für Signaturen.

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

JarsignerTimestampAuthorityUrl

Über diese Eigenschaft können Sie eine URL zu einem Zeitstempelautoritätsdienst angeben. Diese kann verwendet werden, um sicherzustellen, dass die .apk-Signatur einen Zeitstempel enthält. Weitere Informationen finden Sie in der Java Dokumentation zur Zeitstempelunterstützung für Signaturen.

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

LinkerDumpDependencies

Eine Bool-Eigenschaft, die das Generieren von Linkerabhängigkeiten-Datei ermöglicht. Diese Datei kann als Eingabe für das Illinkanalyzer-Tool verwendet werden.

Die Abhängigkeitsdatei linker-dependencies.xml.gz wird in das Projektverzeichnis geschrieben. Bei .NET 5/6 wird sie neben den verknüpften Assemblys in das Verzeichnis obj/<Configuration>/android<ABI>/linked geschrieben.

Der Standardwert ist Falsch.

MandroidI18n

Diese MSBuild-Eigenschaft ist veraltet und wird nicht mehr unterstützt.

MonoAndroidResourcePrefix

Gibt ein Pfadpräfix an, das am Anfang von Dateinamen mit einer Buildaktion von AndroidResource entfernt wird. Damit soll ermöglicht werden, den Speicherort von Ressourcen zu ändern.

Der Standardwert ist Resources. Ändern Sie diese Option für die Java-Projektstruktur in res.

MonoSymbolArchive

Eine boolesche Eigenschaft, die steuert, ob .mSYM Artefakte für die spätere Verwendung mit mono-symbolicate, um "reale" Dateinamen- und Zeilennummerninformationen aus Releasestapelablaufverfolgungen zu extrahieren.

Dies ist standardmäßig "True" für "Release"-Apps mit aktivierten Debugsymbolen: $(EmbedAssembliesIntoApk) ist "True", $(DebugSymbols) ist wahr, und $(Optimize) ist True.

RunAOTCompilation

Eine boolesche Eigenschaft, die bestimmt, ob Assemblys vorab in systemeigenen Code kompiliert und in Anwendungen eingeschlossen werden. Diese Eigenschaft ist False standardmäßig für Debug Builds und True standardmäßig für Release Builds vorgesehen.

Diese MSBuild-Eigenschaft ersetzt die $(AotAssemblies) MSBuild-Eigenschaft von Xamarin.Android. Dies ist die gleiche Eigenschaft, die für Blazor WASM verwendet wird.