Buildelemente
Buildelemente steuern, wie ein Projekt für eine Xamarin.Android-Anwendung oder -Bibliothek erstellt wird.
AndroidAsset
Unterstützt Android-Ressourcen, also Dateien, die in einem Java-Android-Projekt im Ordner assets
gespeichert werden.
AndroidAarLibrary
Die Buildaktion von AndroidAarLibrary
sollte verwendet werden, um direkt auf .aar
-Dateien zu verweisen. Diese Buildaktion wird am häufigsten von Xamarin-Komponenten verwendet. Nämlich Verweise auf .aar
Dateien einzuschließen, die erforderlich sind, um Google Play und andere Dienste zum Funktionieren zu bringen.
Dateien mit dieser Buildaktion werden ähnlich behandelt wie die eingebetteten Ressourcen in Bibliotheksprojekten. Die .aar
-Datei wird in das Zwischenverzeichnis extrahiert. Danach werden Objekte, Ressourcen und .jar
-Dateien in die entsprechenden Elementgruppen eingefügt.
AndroidAotProfile
Wird zur Bereitstellung eines AOT-Profils zur Verwendung mit einem profilgesteuerten AOT verwendet.
Dieses Element kann auch in Visual Studio verwendet werden, indem die Buildaktion AndroidAotProfile
auf eine Datei mit einem AOT-Profil festgelegt wird.
AndroidAppBundleMetaDataFile
Gibt eine Datei an, die als Metadaten in das Android-App-Paket eingeschlossen wird.
Das Format des Flagwerts gibt <bundle-path>:<physical-file>
bundle-path
den Dateispeicherort im Metadatenverzeichnis des App-Bundles an und physical-file
ist eine vorhandene Datei, die die zu speichernden Rohdaten enthält.
<ItemGroup>
<AndroidAppBundleMetaDataFile
Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
/>
</ItemGroup>
Weitere Informationen finden Sie in der bundletool-Dokumentation .
In Xamarin.Android 12.3 hinzugefügt.
AndroidBoundLayout
Gibt an, dass für die Layoutdatei CodeBehind generiert werden soll, falls die Eigenschaft AndroidGenerateLayoutBindings
auf false
gesetzt ist. In allen anderen Aspekten ist es identisch mit AndroidResource
, wie vorstehend beschrieben. Diese Aktion kann nur mit Layoutdateien verwendet werden:
<AndroidBoundLayout Include="Resources\layout\Main.axml" />
AndroidEnvironment
Dateien mit einer Buildaktion von AndroidEnvironment
werden verwendet, um Umgebungsvariablen und Systemeigenschaften während des Prozessstarts zu initialisieren.
Die Buildaktion AndroidEnvironment
kann auf mehrere Dateien angewendet werden. Diese werden in keiner bestimmten Reihenfolge ausgewertet (geben Sie daher nicht die gleiche Umgebungsvariable oder Systemeigenschaft in mehreren Dateien an).
AndroidJavaLibrary
Dateien mit der Aktion "Erstellen" AndroidJavaLibrary
sind Java-Archive ( .jar
Dateien), die in das endgültige Android-Paket eingeschlossen werden.
AndroidJavaSource
Dateien mit der Buildaktion von AndroidJavaSource
sind Java-Quellcode, der im endgültigen Android-Paket enthalten ist.
Ab .NET 7 verfügen alle **\*.java
Dateien im Projektverzeichnis automatisch über die Buildaktion AndroidJavaSource
und werden vor dem Assemblybuild gebunden. Ermöglicht C#-Code die einfache Verwendung von Typen und Membern, die in den **\*.java
Dateien vorhanden sind.
Legen Sie auf False fest %(AndroidJavaSource.Bind)
, um dieses Verhalten zu deaktivieren.
AndroidLibrary
AndroidLibrary ist eine neue Buildaktion, die das Einschließen von .jar
- und .aar
-Dateien in Projekte vereinfacht.
In jedem Projekt kann Folgendes angegeben werden:
<ItemGroup>
<AndroidLibrary Include="foo.jar" />
<AndroidLibrary Include="bar.aar" />
</ItemGroup>
Das Ergebnis des obigen Codeausschnitts unterscheidet sich je nach Xamarin.Android-Projekttyp:
- Anwendungs- und Klassenbibliotheksprojekte:
foo.jar
ist AndroidJavaLibrary zugeordnet.bar.aar
ist AndroidAarLibrary zugeordnet.
- Java-Bindungsprojekte:
foo.jar
ist EmbeddedJar zugeordnet.foo.jar
ist EmbeddedReferenceJar zugeordnet, wenn die MetadatenBind="false"
hinzugefügt werden.bar.aar
ist LibraryProjectZip zugeordnet.
Durch diese Vereinfachung können Sie AndroidLibrary überall verwenden.
Diese Buildaktion wurde in Xamarin.Android 11.2 hinzugefügt.
AndroidLintConfig
Die Buildaktion AndroidLintConfig sollte in Verbindung mit der -Eigenschaft verwendet werden.$(AndroidLintEnabled)
-Eigenschaft. Dateien mit dieser Buildaktion werden zusammengeführt und an die Android-lint
-Tools übergeben. Dies sollten XML-Dateien sein, die Informationen zu Tests enthalten, die aktiviert und deaktiviert werden sollen.
Weitere Details finden Sie in der Lint-Dokumentation.
AndroidManifestOverlay
Die AndroidManifestOverlay
Buildaktion kann verwendet werden, um Dateien für das Manifestzusammenführungstool bereitzustellenAndroidManifest.xml
.
Dateien mit dieser Buildaktion werden zusammen mit dem Standard AndroidManifest.xml
Datei- und Manifestdateien aus Verweisen an die Manifestzusammenführung übergeben. Diese Dateien werden dann im endgültigen Manifest zusammengeführt.
Sie können diese Buildaktion verwenden, um Je nach Buildkonfiguration Änderungen und Einstellungen für Ihre App bereitzustellen. Wenn Sie z. B. eine bestimmte Berechtigung nur beim Debuggen benötigen, können Sie diese durch die Überlagerung beim Debuggen einfügen. Bei einer Überlagerungsdatei mit dem folgenden Inhalt:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
</manifest>
Sie können Folgendes verwenden, um eine Manifestüberlagerung für einen Debugbuild hinzuzufügen:
<ItemGroup>
<AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>
Diese Buildaktion wurde in Xamarin.Android 11.2 eingeführt.
AndroidInstallModules
Gibt die Module an, die beim Installieren von App-Bündeln mit dem Befehl bundletool installiert werden.
Diese Buildaktion wurde in Xamarin.Android 11.3 eingeführt.
AndroidNativeLibrary
Native Bibliotheken werden dem Build hinzugefügt, indem ihre Buildaktion auf AndroidNativeLibrary
festgelegt wird.
Beachten Sie, dass das Buildsystem die ABI kennen muss, für die die native Bibliothek erstellt wurde, da Android mehrere Binäre Anwendungsschnittstellen (APPLICATION Binary Interfaces, ABIs) unterstützt. Es gibt zwei Möglichkeiten, wie die ABI angegeben werden kann:
- Pfadermittlung.
- Verwenden der
%(Abi)
Elementmetadaten.
Bei der Pfadermittlung wird der Name des übergeordneten Verzeichnisses der nativen Bibliothek verwendet, um die ABI anzugeben, die die Bibliothek als Ziel verwendet. Wenn Sie dem Build also lib/armeabi-v7a/libfoo.so
hinzufügen, wird die ABI als armeabi-v7a
„ermittelt“.
Elementattributname
Abi : Gibt die ABI der nativen Bibliothek an.
<ItemGroup>
<AndroidNativeLibrary Include="path/to/libfoo.so">
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
AndroidResource
Alle Dateien mit einer AndroidResource-Buildaktion werden während des Buildprozesses in Android-Ressourcen kompiliert und über $(AndroidResgenFile)
zugänglich gemacht.
<ItemGroup>
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
Fortgeschrittene Benutzer wünschen sich vielleicht, dass verschiedene Ressourcen in verschiedenen Konfigurationen, aber mit demselben effektiven Pfad verwendet werden. Dies kann erreicht werden, indem mehrere Ressourcenverzeichnisse und Dateien mit den gleichen relativen Pfaden innerhalb dieser verschiedenen Verzeichnisse vorhanden sind und MSBuild-Bedingungen verwendet werden, um bedingt verschiedene Dateien in verschiedenen Konfigurationen einzubinden. Zum Beispiel:
<ItemGroup Condition="'$(Configuration)'!='Debug'">
<AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
<MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>
LogicalName : Gibt den Ressourcenpfad explizit an. Ermöglicht das "Aliasing" von Dateien, sodass sie als mehrere verschiedene Ressourcennamen verfügbar sind.
<ItemGroup Condition="'$(Configuration)'!='Debug'">
<AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
<AndroidResource Include="Resources-Debug/values/strings.xml">
<LogicalName>values/strings.xml</LogicalName>
</AndroidResource>
</ItemGroup>
AndroidResourceAnalysisConfig
Die Buildaktion AndroidResourceAnalysisConfig
markiert eine Datei als Schweregradkonfigurationsdatei für das Xamarin Android Designer-Layoutdiagnosetool. Diese wird derzeit nur im Layout-Editor und nicht in Buildmeldungen verwendet.
Weitere Informationen finden Sie in der Dokumentation zur Android-Ressourcenanalyse.
Ab Xamarin.Android 10.2 verfügbar.
Inhalt
Die normale Content
-Buildaktion wird nicht unterstützt (da wir noch nicht herausgefunden haben, wie wir sie ohne einen möglicherweise kostspieligen ersten Ausführungsschritt unterstützen können).
Ab Xamarin.Android 5.1 führt der Versuch, die @(Content)
-Buildaktion zu verwenden, zu einer XA0101
-Warnung.
EmbeddedJar
Bei Xamarin.Android-Bindungsprojekten bindet die Buildaktion EmbeddedJar die Java-/Kotlin-Bibliothek und bettet die .jar
-Datei in die Bibliothek ein. Wenn ein Xamarin.Android-Anwendungsprojekt die Bibliothek nutzt, kann es auf die Java-/Kotlin-APIs von C# zugreifen und schließt den Java-/Kotlin-Code in die endgültige Android-Anwendung ein.
Seit Xamarin.Android 11.2 können Sie alternativ die Buildaktion AndroidLibrary verwenden, z. B. wie folgt:
<Project>
<ItemGroup>
<AndroidLibrary Include="Library.jar" />
</ItemGroup>
</Project>
EmbeddedNativeLibrary
Bei Klassenbibliotheksprojekten oder Java-Bindungsprojekten in Xamarin.Android packt die Buildaktion EmbeddedNativeLibrary eine native Bibliothek wie lib/armeabi-v7a/libfoo.so
in die Bibliothek. Wenn eine Xamarin.Android-Anwendung die Bibliothek nutzt, wird die Datei libfoo.so
in die endgültige Android-Anwendung eingeschlossen.
Seit Xamarin.Android 11.2 können Sie alternativ die Buildaktion AndroidNativeLibrary verwenden.
EmbeddedReferenceJar
Bei Xamarin.Android-Bindungsprojekten bettet die Buildaktion EmbeddedReferenceJar die .jar
-Datei in die Bibliothek ein, erstellt jedoch im Gegensatz zu EmbeddedJar keine C#-Bindung. Wenn ein Xamarin.Android-Anwendungsprojekt die Bibliothek nutzt, schließt es den Java-/Kotlin-Code in die endgültige Android-Anwendung ein.
Seit Xamarin.Android 11.2 können Sie alternativ die Buildaktion AndroidLibrary verwenden, z. B. mit <AndroidLibrary Include="..." Bind="false" />
:
<Project>
<ItemGroup>
<!-- A .jar file to bind & embed -->
<AndroidLibrary Include="Library.jar" />
<!-- A .jar file to only embed -->
<AndroidLibrary Include="Dependency.jar" Bind="false" />
</ItemGroup>
</Project>
JavaDocJar
In einem Xamarin.Android-Bindungsprojekt wird die JavaDocJar-Buildaktion für .jar
Dateien verwendet, die Javadoc-HTML enthalten. Der Javadoc-HTML-Code wird analysiert, um Parameternamen zu extrahieren.
Es werden nur bestimmte „Javadoc-HTML-Dialekte“ unterstützt, einschließlich:
javadoc
-Ausgabe in JDK 1.7javadoc
-Ausgabe in JDK 1.8- Droiddoc-Ausgabe
Diese Buildaktion ist ab Xamarin.Android 11.3 veraltet und wird in .NET 6 nicht unterstützt.
Die Buildaktion @(JavaSourceJar)
wird bevorzugt.
JavaSourceJar
In einem Xamarin.Android-Bindungsprojekt wird die JavaSourceJar-Buildaktion für .jar
Dateien verwendet, die Java-Quellcode enthalten und Javadoc-Dokumentationskommentare enthalten.
Vor Xamarin.Android 11.3 wurden die Javadoc-Kommentare mit dem Hilfsprogramm javadoc
zur Buildzeit in HTML konvertiert und später in eine XML-Dokumentation umgewandelt.
Ab Xamarin.Android 11.3 werden Javadoc-Kommentare stattdessen in C#-XML-Dokumentationskommentare im generierten Bindungsquellcode konvertiert.
$(AndroidJavadocVerbosity)
steuert, wie ausführlich oder vollständig die importierten Javadoc-Kommentare sind.
Ab Xamarin.Android 11.3 werden die folgenden MSBuild-Metadaten unterstützt:
%(CopyrightFile)
: Ein Pfad zu einer Datei, die Copyrightinformationen für die Javadoc-Inhalte enthält, die an alle importierten Dokumentationen angefügt werden.%(UrlPrefix)
: Ein URL-Präfix, das das Verknüpfen mit der Onlinedokumentation in importierten Dokumentationen unterstützt.%(UrlStyle)
: Hiermit wird der „Stil“ der URLs angegeben, die für die Verlinkung auf die Onlinedokumentation generiert werden sollen. Derzeit wird nur ein Stil unterstützt:developer.android.com/reference@2020-Nov
.
Ab Xamarin.Android 12.3 werden die folgenden MSBuild-Metadaten unterstützt:
%(DocRootUrl)
: Ein URL-Präfix, das anstelle aller {@docroot}-Instanzen in der importierten Dokumentation verwendet werden soll.
LibraryProjectZip
Bei Xamarin.Android-Bindungsprojekten bindet die Buildaktion LibraryProjectZip die Java-/Kotlin-Bibliothek und bettet die .zip
- oder .aar
-Datei in die Bibliothek ein. Wenn ein Xamarin.Android-Anwendungsprojekt die Bibliothek nutzt, kann es auf die Java-/Kotlin-APIs von C# zugreifen und schließt den Java-/Kotlin-Code in die endgültige Android-Anwendung ein.
Hinweis
Ein Xamarin.Android-Bindungsprojekt kann die Buildaktion LibraryProjectZip immer nur einmal enthalten. Diese Einschränkung wird in .NET 6 entfernt.
LinkDescription
Dateien mit einer LinkDescription-Buildaktion werden verwendet, um das Verhalten des Linkers zu steuern.
ProguardConfiguration
Dateien mit einer ProguardConfiguration-Buildaktion enthalten Optionen, mit denen das Verhalten von proguard
gesteuert werden kann. Weitere Informationen zu dieser Buildaktion finden Sie unter ProGuard.
Diese Dateien werden ignoriert, sofern die MSBuild-Eigenschaft $(EnableProguard)
DIE MSBuild-Eigenschaft ist True
.