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 AndroidJavaSourceund 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:

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:

  1. Pfadermittlung.
  2. 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.7
  • javadoc-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.