Buildeigenschaften
MSBuild-Eigenschaften steuern das Verhalten der Ziele. Sie werden in der Projektdatei angegeben, z . B. "MyApp.csproj", innerhalb einer MSBuild PropertyGroup.
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.
Ab Xamarin.Android, Version 9.4 verfügbar.
AndroidAapt2CompileExtraArgs
Gibt Befehlszeilenoptionen an, die beim Verarbeiten von Android-Ressourcen und -Ressourcen an den aapt2-Kompilierungsbefehl übergeben werden sollen.
Hinzugefügt in Xamarin.Android 9.1.
AndroidAapt2LinkExtraArgs
Gibt Befehlszeilenoptionen an, die beim Verarbeiten von Android-Ressourcen und -Ressourcen an den aapt2-Verknüpfungsbefehl übergeben werden sollen.
Hinzugefügt in Xamarin.Android 9.1.
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.
Diese Eigenschaft wurde in Xamarin.Android 11.2 hinzugefügt.
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. Ab Xamarin.Android 10.1 verfügbar.
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 -digestalg
dem verwendet werden soll.
Der Standardwert ist SHA-256
. In Xamarin.Android 10.0 und früher war der Standardwert SHA1
.
Ab Xamarin.Android, Version 9.4 verfügbar.
AndroidApkSignerAdditionalArguments
Eine Zeichenfolgeneigenschaft, die es dem Entwickler ermöglicht, dem Tool Argumente apksigner
bereitzustellen.
Hinzugefügt in Xamarin.Android 8.2.
AndroidApkSigningAlgorithm
Ein Zeichenfolgenwert, der den zu verwendenden jarsigner -sigalg
Signaturalgorithmus angibt.
Der Standardwert ist SHA256withRSA
. In Xamarin.Android 10.0 und früher war der Standardwert md5withRSA
.
Hinzugefügt in Xamarin.Android 8.2.
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.
In Xamarin.Android 6.1 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 der Xamarin.Android-Installation enthalten.
Der Standardwert ist $(MonoAndroidBinDirectory)\binutils\bin\
.
Ab Xamarin.Android 10.0 verfügbar.
AndroidBoundExceptionType
Ein Zeichenfolgenwert, der angibt, wie Ausnahmen weitergegeben werden sollen, wenn ein von Xamarin.Android bereitgestellter Typ einen .NET-Typ oder eine .NET-Schnittstelle mit Java-Typen implementiert, z. B. Android.Runtime.InputStreamInvoker
und System.IO.Stream
oder Android.Runtime.JavaDictionary
und System.Collections.IDictionary
.
Java
: Der ursprüngliche Java-Ausnahmetyp wird wie folgt verteilt.Java
bedeutet, dass die API beispielsweise nicht ordnungsgemäß implementiertSystem.IO.Stream
wirdStream.Read()
,InputStreamInvoker
daJava.IO.IOException
anstelle vonSystem.IO.IOException
.Java
ist das Ausnahmeverteilungsverhalten in allen Versionen von Xamarin.Android, einschließlich Xamarin.Android 13.0.System
: Der ursprüngliche Java-Ausnahmetyp wird abgefangen und in einen entsprechenden .NET-Ausnahmetyp eingeschlossen.System
bedeutet, dass z. BInputStreamInvoker
. ordnungsgemäß implementiertSystem.IO.Stream
wird undStream.Read()
keine Instanzen ausgelöstJava.IO.IOException
werden. (Es kann stattdessen ein enthaltenes ElementSystem.IO.IOException
Java.IO.IOException
alsException.InnerException
Wert auslösen.)System
ist der Standardwert in .NET 6.0.
Ab Xamarin.Android 10.2 verfügbar.
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
in .NET 6 und False
für legacy.
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.
Unterstützung für diese Eigenschaft wurde nach Xamarin.Android 7.1 hinzugefügt.
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.
Xamarin.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.
Ab Xamarin.Android 10.3 verfügbar.
AndroidBundleToolExtraArgs
Gibt Befehlszeilenoptionen an, die beim Erstellen von App-Bündeln an den Bundletool-Befehl übergeben werden sollen.
Diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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: Verwendet
jar2xml.jar
, um Java-Reflektion zu verwenden, um Typen und Member aus einer.jar
-Datei zu extrahieren.
class-parse
besitzt die folgenden Vorteile im Vergleich zu jar2xml
:
class-parse
kann Parameternamen aus Java-Bytecode extrahieren, der Debugsymbole enthält (bytecode kompiliert mitjavac -g
).class-parse
überspringt keine Klassen, die von nicht aufgelösten Typen erben oder enthalten.
Hinzugefügt in Xamarin.Android 6.0.
Der Standardwert befindet sich jar2xml
in "Legacy" Xamarin.Android und class-parse
in .NET 6 und höher.
Die Unterstützung für jar2xml
ist veraltet und jar2xml
wird in .NET 6 entfernt.
AndroidCodegenTarget
Eine Zeichenfolgeneigenschaft, die das ABI-Ziel der Codegenerierung steuert. Mögliche Werte sind:
XamarinAndroid: Verwendet die JNI-Bindungs-API, die seit Mono für Android 1.0 vorhanden ist. Bindungsassemblys, die mit Xamarin.Android 5.0 oder höher erstellt wurden, können nur unter Xamarin.Android 5.0 oder höher (API-/ABI-Erweiterungen) ausgeführt werden, aber die Quelle ist kompatibel mit früheren Produktversionen.
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 bindetMono.Android.dll
mit diesem Wert.
Die Vorteile von XAJavaInterop1
umfassen Folgendes:
Kleinere Assemblys.
jmethodID
-Zwischenspeicherung fürbase
Methodenaufrufe, solange alle anderen Bindungstypen in der Vererbungshierarchie mitXAJavaInterop1
oder höher erstellt werden.jmethodID
-Zwischenspeicherung von durch Java aufrufbare Wrapperkonstruktoren für verwaltete Unterklassen.
Der Standardwert ist XAJavaInterop1
.
Die Unterstützung für XamarinAndroid
ist veraltet, und die Unterstützung für XamarinAndroid
wird mit .NET 6 eingestellt.
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.
Hinzugefügt in Xamarin.Android 12.3.
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
.
Ab Xamarin.Android 10.2 verfügbar.
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
.
Die $(AndroidDeviceUserId)
Eigenschaft wurde in Xamarin.Android 11.2 hinzugefügt.
AndroidDexTool
Eine Eigenschaft im Enumerationsstil mit gültigen Werten von dx
oder d8
. Gibt an, welcher Android-Dex-Compiler im Xamarin.Android-Buildprozess verwendet wird.
Der Standardwert ist dx
. 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 desugar
werden, 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.
Ab Xamarin.Android, Version 9.4 verfügbar.
AndroidEnableMultiDex
Eine boolesche Eigenschaft, die bestimmt, ob Multi-Dex-Unterstützung in der endgültigen .apk
-Datei verwendet wird.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 5.1 hinzugefügt.
Standardmäßig ist diese Eigenschaft False
.
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.
Das Vorabladen von Assemblys ist die Funktionsweise von Xamarin.Android.
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 wird standardmäßig für Xamarin.Android festgelegt True
und für .NET 6+-Builds festgelegt False
.
Hinzugefügt in Xamarin.Android 9.2.
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.
Diese Eigenschaft wird ab Xamarin.Android, Version 9.4 unterstützt.
Standardmäßig ist diese Eigenschaft False
.
AndroidEnableSGenConcurrent
Eine boolesche Eigenschaft, die bestimmt, ob der gleichzeitige Garbage Collector von Mono verwendet wird.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 7.2 hinzugefügt.
Standardmäßig ist diese Eigenschaft False
.
AndroidErrorOnCustomJavaObject
Eine boolesche Eigenschaft, die bestimmt, ob Typen Android.Runtime.IJavaObject
ohne 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.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 8.1 hinzugefügt.
Standardmäßig ist diese Eigenschaft True
.
AndroidExplicitCrunch
Ab Xamarin.Android 11.0 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.
Ab Xamarin.Android 10.2 verfügbar.
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. DerDexes
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.
Experimentell. Diese Eigenschaft wurde in Xamarin.Android 6.1 hinzugefügt.
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. Hinzugefügt in Xamarin.Android 9.2.
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
, , -d
oder --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"
Hinzugefügt in Xamarin.Android 9.2.
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
.
Hinzugefügt in .NET 6 RC 1. In Xamarin.Android nicht unterstützt.
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)
.
Für diese Eigenschaft werden am häufigsten die folgenden Werte zurückgegeben:
Xamarin.Android.Net.AndroidClientHandler
: Verwenden Sie die Android-Java-APIs, um Netzwerkanforderungen auszuführen. Die Verwendung von Java-APIs ermöglicht den Zugriff auf TLS 1.2-URLs, wenn die zugrunde liegende Android-Version TLS 1.2 unterstützt. Nur Android 5.0 und höhere Versionen stellen zuverlässige TLS 1.2-Unterstützung durch Java bereit.Entspricht der Android-Option auf den Eigenschaftenseiten von Visual Studio und der Option "AndroidClientHandler" auf den Eigenschaftenseiten Visual Studio für Mac.
Der Assistent für neue Projekte wählt diese Option für neue Projekte aus, wenn die Niedrigste zulässige Android-Version auf Android 5.0 (Lollipop) oder höher in Visual Studio oder für die Option Zielplattformen in Visual Studio für Mac Aktuelle und Interessanteste festgelegt ist.
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 verwalteteHttpMessageHandler
.Entspricht der Option "Verwaltet" auf den Eigenschaftenseiten von Visual Studio.
Hinweis
Wenn TLS 1.2-Unterstützung in Android-Versionen vor 5.0 erforderlich ist oder TLS 1.2-Unterstützung mit dem System.Net.WebClient
und zugehörigen APIs benötigt wird, sollte $(AndroidTlsProvider)
verwendet werden.
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.
In Xamarin.Android 6.1 hinzugefügt
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.sh
werden 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
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
:
intellisense
: Geben Sie nur die XML-Kommentare aus:<exception/>
,<param/>
,<returns/>
, .<summary/>
full
: Emittieren Sieintellisense
Elemente sowie<remarks/>
<seealso/>
, und alles andere, was unterstützt werden kann.
Der Standardwert ist intellisense
.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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.
In Xamarin.Android 6.1 hinzugefügt
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 legacy
. Dieser wird in einer zukünftigen Version in manifestmerger.jar
, um das Verhalten an Android Studio auszugleichen.
Der Merger von Google ermöglicht die Unterstützung für xmlns:tools="http://schemas.android.com/tools"
(siehe Beschreibung in der Android-Dokumentation).
Neu in Xamarin.Android 10.2
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 .csproj
Datei hinzufügen.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
Eingeführt in Xamarin.Android 11.x
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.
Hinzugefügt in Xamarin.Android 13.0. Wenn nicht festgelegt, $(AndroidManifestType)
wird in Xamarin.Android 13.0 verwendet Xamarin
.
Vor Xamarin.Android 13.0 hat die Einstellung $(AndroidManifestType)
keine Auswirkung und GoogleV2
wird 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.
Hinzugefügt in Xamarin.Android 8.3.
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 aab
festgelegt ist, werden andere MSBuild-Eigenschaften festgelegt, die für Android-App-Bundles erforderlich sind:
$(AndroidUseAapt2)
istTrue
.$(AndroidUseApkSigner)
istFalse
.$(AndroidCreatePackagePerAbi)
istFalse
.
Diese Eigenschaft ist für .net 6 veraltet. Benutzer sollten zum neueren AndroidPackageFormats
Wechseln 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.
Für .net 6 AndroidPackageFormats
wird nur für Release
Builds festgelegtaab;apk
. Es wird empfohlen, dass Sie weiterhin nur apk
für das Debuggen verwenden.
Für Legacy Xamarin.Android Der Standardwert ist ""
.
Daher produziert Legacy Xamarin.Android nicht standardmäßig sowohl als Teil eines Releasebuilds. Wenn ein Benutzer beide Ausgaben erstellen möchte, muss er folgendes in seiner Release
Konfiguration definieren.
<AndroidPackageFormats>aab;apk</AndroidPackageFormats>
Sie müssen auch die vorhandene AndroidPackageFormat
Konfiguration entfernen, wenn sie vorhanden ist.
Hinzugefügt in Xamarin.Android 11.5.
AndroidPackageNamingPolicy
Eine Eigenschaft im Enumerationsstil zum Angeben der Java-Paketnamen des generierten Java-Quellcodes.
In Xamarin.Android 10.2 und höher ist LowercaseCrc64
der einzige unterstützte Wert.
In Xamarin.Android 10.1 war auch der Übergangswert LowercaseMD5
verfügbar, der einen Wechsel zurück zum ursprünglichen Java-Paketnamenformat ermöglichte, das in Xamarin.Android 10.0 und früher verwendet wurde. Diese Option wurde in Xamarin.Android 10.2 entfernt, um die Kompatibilität mit Buildumgebungen zu verbessern, in denen FIPS-Konformität erzwungen wird.
Ab Xamarin.Android 10.1 verfügbar.
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.
Diese Eigenschaft wurde in Xamarin.Android 11.2 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.
Ab Xamarin.Android 10.3 verfügbar.
AndroidR8JarPath
Der Pfad zur Datei r8.jar
zur Verwendung mit dem r8 dex-Compiler und -Shrinker. Der Standardwert ist ein Pfad in der Xamarin.Android-Installation. 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.
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 Xamarin.Android-Buildsystem stellt einen Standardwert in Xamarin.Android.Common.targets
zur Verfügung, und der Standardwert kann in Ihrer Projektdatei überschrieben werden, um eine alternative build-tools-Version auszuwählen, wenn (zum Beispiel) die letzte Version von aapt abstürzt, während eine frühere aapt-Version bekanntermaßen funktioniert.
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).
In Xamarin.Android 10.0 und früher unterstützt diese Eigenschaft nur Klartextkennwörter.
In Xamarin.Android 10.1 und höher unterstützt diese Eigenschaft auch die Präfixe env:
und file:
, mit denen eine Umgebungsvariable oder Datei angegeben werden kann, 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:.
In Xamarin.Android 10.0 und früher unterstützt diese Eigenschaft nur Klartextkennwörter.
In Xamarin.Android 10.1 und höher unterstützt diese Eigenschaft auch die Präfixe env:
und file:
, mit denen eine Umgebungsvariable oder Datei angegeben werden kann, 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.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
AndroidSigningPlatformCert
Gibt die Zertifikatdatei an, die zum Signieren der APK verwendet werden soll.
Dies wird nur beim Erstellen von system
Anwendungen verwendet.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 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
: Erfordert Xamarin.Android 5.1 oder höher.x86_64
: Erfordert Xamarin.Android 5.1 oder höher.
AndroidTlsProvider
Ein Zeichenfolgenwert, der angibt, welcher TLS-Anbieter in einer Anwendung verwendet werden soll. Dabei sind folgende Werte möglich:
Nicht festgelegt/die leere Zeichenfolge: In Xamarin.Android 7.3 und höher entspricht dies dem.
btls
In Xamarin.Android 7.1 entspricht dies
legacy
.Dies entspricht der Einstellung Standard auf den Eigenschaftenseiten von Visual Studio.
btls
: Verwendet BoringSSL für die TLS-Kommunikation mit HttpWebRequest.Dies ermöglicht die Verwendung von TLS 1.2 in allen Android-Versionen.
Dies entspricht der Einstellung Native TLS 1.2+ auf den Eigenschaftenseiten von Visual Studio.
legacy
: Verwenden Sie in Xamarin.Android 10.1 und früher die historische verwaltete SSL-Implementierung für die Netzwerkinteraktion. Dies unterstützt TLS 1.2 nicht .Dies entspricht der Einstellung Verwaltete TLS 1.0 auf den Eigenschaftenseiten von Visual Studio.
In Xamarin.Android 10.2 und höher wird dieser Wert ignoriert und die
btls
-Einstellung verwendet.default
: Dieser Wert wird in Xamarin.Android-Projekten nicht verwendet. Es wird empfohlen, stattdessen die leere Zeichenfolge zu verwenden, die der Einstellung Standard auf den Eigenschaftenseiten von Visual Studio entspricht.Der Wert
default
wird auf den Eigenschaftenseiten von Visual Studio nicht angeboten.Dies entspricht zurzeit
legacy
.
In Xamarin.Android 7.1 hinzugefügt.
AndroidUseAapt2
Eine boolesche Eigenschaft, mit der der Entwickler die Verwendung des Tools für das aapt2
Verpacken steuern kann.
Standardmäßig ist dies FALSE, und Xamarin.Android verwendet aapt
.
Wenn Entwickler die neue aapt2
-Funktion verwenden möchten, fügen sie
<AndroidUseAapt2>True</AndroidUseAapt2>
in ihrer .csproj
-Datei festlegen. Alternativ können Sie die Eigenschaft auch an der Befehlszeile angeben:
/p:AndroidUseAapt2=True
Diese Eigenschaft wurde in Xamarin.Android 8.3 hinzugefügt. Das Festlegen von AndroidUseAapt2
auf false
ist ab Xamarin.Android 11.2 veraltet.
AndroidUseApkSigner
Eine Bool-Eigenschaft, die es dem Entwickler ermöglicht, das apksigner
Tool anstelle von jarsigner
.
Hinzugefügt in Xamarin.Android 8.2.
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 false
festgelegt.
Ab Xamarin.Android 10.1 verfügbar.
AndroidUseInterpreter
Eine boolesche Eigenschaft, die den .apk
Mono-Interpreter und nicht den normalen JIT enthält.
Experimentell.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
AndroidUseLegacyVersionCode
Eine boolesche Eigenschaft, die es dem Entwickler ermöglicht, die VersionCode-Berechnung wieder in das alte Verhalten vor Xamarin.Android 8.2 zu rückgängig machen. 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.
Hinzugefügt in Xamarin.Android 8.2.
AndroidUseManagedDesignTimeResourceGenerator
Eine boolesche Eigenschaft, die über die Entwurfszeitbuilds wechselt, um den verwalteten Ressourcenparser anstelle von aapt
.
Hinzugefügt in Xamarin.Android 8.1.
AndroidUseSharedRuntime
Eine boolesche Eigenschaft, die bestimmt, ob die Shared Runtime-Pakete erforderlich sind, um die Anwendung auf dem Zielgerät auszuführen. Durch die Verwendung der Shared Runtime-Pakete kann das Anwendungspaket kleiner werden, wodurch der Vorgang der Paketerstellung und -bereitstellung beschleunigt wird, was zu einem schnelleren Verarbeitungszyklus für Build/Bereitstellung/Debuggen führt.
Vor Xamarin.Android 11.2 sollte diese Eigenschaft auf True
für Debugbuilds und False
für Releaseprojekte festgelegt sein.
Diese Eigenschaft wurde in Xamarin.Android 11.2 entfernt.
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:versionCode
Sie in der Android-Dokumentation.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
AndroidVersionCodePattern
Eine Zeichenfolgeneigenschaft, mit der der Entwickler das versionCode
Manifest anpassen kann.
Informationen zur Entscheidung für einen versionCode
finden Sie unter Erstellen des Versionscodes für das APK.
Einige Beispiele: Wenn abi
armeabi
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 abi
x86_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
- 2 –
minSDK – Fügt den minimal unterstützten SDK-Wert aus dem
AndroidManifest.xml
oder11
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.
Hinzugefügt in Xamarin.Android 7.2.
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.
Hinzugefügt in Xamarin.Android 7.2.
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/@package
Sie in der Android-Dokumentation.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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:label
Sie in der Android-Dokumentation.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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:versionName
Sie in der Android-Dokumentation.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
AotAssemblies
Eine boolesche Eigenschaft, die festlegt, ob Assemblys vorzeitig in nativen Code kompiliert und in die .apk
-Datei eingefügt werden.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 5.1 hinzugefügt.
Standardmäßig ist diese Eigenschaft False
.
AProfUtilExtraOptions
Zusätzliche Optionen für die Übergabe an aprofutil
.
BeforeGenerateAndroidManifest
Die in dieser Eigenschaft aufgelisteten MSBuild-Ziele werden direkt vor _GenerateJavaStubs
ausgeführt.
Ab Xamarin.Android, Version 9.4 verfügbar.
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 SignAndroidPackage
zielt 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 true
und 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 undDebugType
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 auchTrue
, 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 .apk
Eingebettet 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.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 5.1 hinzugefügt.
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.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 5.1 hinzugefügt.
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
in .NET 6 und false
in "legacy" Xamarin.Android.
Unterstützung für diese Eigenschaft wurde in Xamarin.Android 11.3 hinzugefügt.
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 -Xmx
java mit einem Wert von 1G
bereit. Dies wurde unter Windows im Vergleich zu anderen Plattformen als häufig erforderlich erachtet.
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
Gibt die Internationalisierungsunterstützung an, die in der Anwendung enthalten ist, wie z. B. Sortierung und Sortieren von Tabellen. Der Wert ist eine durch Kommas oder Semikolons getrennte Liste von mindestens einem der folgenden Werte, für den nicht zwischen Groß-/Kleinschreibung unterschieden wird:
Keiner: Keine zusätzliche Codierung einbeziehen.
All: Alle verfügbaren Codierungen einschließen.
CJK: Schließen Sie chinesische, japanische und koreanische Codierungen wie Japanisch (EUC) [enc-jp, CP51932], Japanisch (Shift-JIS) [iso-2022-jp, shift_jis, CP932], Japanisch (JIS) [CP50220], Chinesisch (GB2312) [gb2312) [gb2312, CP936], Koreanisch (UHC) [ks_c_5601-1987, CP949], Koreanisch (EUC) [euc-kr, CP51949], Chinesisch (Big5) [big5, CP950] und Chinesisch vereinfacht (GB18030) [GB18030, CP54936].
MidEast: Include Middle-Eastern encodings such as Turkish (Windows) [iso-8859-9, CP1254], Hebräisch (Windows) [windows-1255, CP1255], Arabic (Windows) [windows-1256, CP1256], Arabisch (ISO) [iso-8859-6, CP28596], Hebräisch (ISO) [iso-8859-8, CP28598], Lateinisch 5 (ISO) [iso-8859-9, CP28599] und Hebräisch (Iso-Alternative) [iso-8859-8, CP38598].
Weitere Codierungen wie Cyrillic (Windows) [CP1251], Baltic (Windows) [iso-8859-4, CP1257], Vietnamesisch (Windows) [CP1258], Cyrillic (KOI8-R) [koi8-r, CP1251], Ukrainisch (KOI8-U) [koi8-u, CP1251], Baltic (ISO) [iso-8859-4, CP1257], Cyrillic (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011] und Thai (Windows) [CP874].
Selten: Enthalten seltene Codierungen wie IBM EBCDIC (Türkisch) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (US-Kanada mit Euro) [CP1140], IBM EBCDIC (Deutschland mit Euro) [CP1141] [CP1141 ], IBM EBCDIC (Dänemark/Norwegen mit Euro) [CP1142], IBM EBCDIC (Finnland/Schweden mit Euro) [CP1143], IBM EBCDIC (Italien mit Euro) [CP1144], IBM EBCDIC (Lateinamerika/Spanien mit Euro) [CP1145], IBM EBCDIC (Vereinigtes Königreich mit Euro) [CP1146], IBM EBCDIC (Frankreich mit Euro) [CP1147], IBM EBCDIC (International with Euro) [CP1148], IBM EBCDIC (Islandisch mit Euro) [CP1149], IBM EBCDIC (Deutschland) [CP20273], IBM EBCDIC (Dänemark/Norwegen) [CP20277], IBM EBCDIC (Finnland/Schweden) [CP20278], IBM EBCDIC (Italien) [CP20280], IBM EBCDIC (Lateinamerika/Spanien) [CP20284], IBM EBCDIC (Vereinigtes Königreich) [CP20285], IBM EBCDIC (Japanisch Katakana Extended) [CP20290], IBM EBCDIC (Frankreich) [CP20297], IBM EBCDIC (Arabisch) [CP20420], IBM EBCDIC (Hebräisch) [CP20424], IBM EBCDIC (Islandisch) [CP20871], IBM EBCDIC (Kyrillisch - Serbisch, Bulgarisch) [CP21025], IBM EBCDIC (USA-Kanada) [CP37], IBM EBCDIC (International) [CP500], Arabisch (ASMO 708) [CP708], Mitteleuropäische (DOS) [CP852], Kyrillisch (DOS) [CP855], Türkisch (DOS) [CP857], Westeuropäisch (DOS mit Euro) [CP858], Hebräisch (DOS) [CP862], Arabisch (DOS) [CP864], Russisch (DOS) [CP866], Griechisch (DOS) [CP869], IBM EBCDIC (Lateinisch 2) [CP870] und IBM EBCDIC (Griechisch) [CP875].
West: Schließen Sie westliche Codierungen wie Westeuropäisch (Mac) [Macintosh, CP10000], Island (Mac) [x-mac-islandisch, CP10079], Mitteleuropäisch (Windows) [iso-8859-2, CP1250], Westeuropäisch (Windows) [iso-8859-1, CP1252], Griechisch (Windows) [iso-8859-7, CP1253], Mitteleuropäisch (ISO) [iso-8859-2, CP28592], Lateinisch 3 (ISO) [iso-8859-3, CP28593], Griechisch (ISO) [iso-8859-7, CP28597], Lateinisch 9 (ISO) [iso-8859-15, CP28605], OEM USA [CP437], Westeuropäisch (DOS) [CP850], Portugiesisch (DOS) [CP860], Island (DOS) [CP861], Französisch (DOS) [CP863] und Nordic (DOS) [CP865].
<MandroidI18n>West</MandroidI18n>
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.
In Xamarin.Android 7.1 hinzugefügt.