Buildelemente

Buildelemente steuern, wie ein Projekt für eine Xamarin.Android-Anwendung oder -Bibliothek erstellt wird.

AndroidAsset

Unterstützt Android-Objekte, Dateien, die im Ordner in einem Java Android-Projekt enthalten wären.

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. Sie wird insbesondere verwendet, um Verweise auf .aar-Dateien einzuschließen, die erforderlich sind, damit Google Play und andere Dienste funktionieren.

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.

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 der Buildaktion AndroidEnvironment werden verwendet, um AndroidEnvironment 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).

AndroidFragmentType

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

AndroidJavaLibrary

Dateien mit einer Buildaktion von AndroidJavaLibrary sind Java-Archive (.jar-Dateien), die im endgültigen Android-Paket enthalten sein werden.

AndroidJavaSource

Dateien mit einer Buildaktion von AndroidJavaSource sind Java-Quellcode, der im endgültigen Android-Paket enthalten sein wird.

AndroidLibrary

AndroidLibrary ist eine neue Buildaktion zur Vereinfachung der Aufnahme von - und .aar -Dateien in Projekte.

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 foo.jar zugeordnet.
    • bar.aar ist bar.aar zugeordnet.
  • Java-Bindungsprojekte:
    • foo.jar ist foo.jar zugeordnet.
    • foo.jar ist foo.jar zugeordnet, wenn die Metadaten hinzugefügt werden.
    • bar.aar ist bar.aar 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. Es sollten XML-Dateien sein, die Informationen darüber enthalten, welche Tests aktiviert bzw. deaktiviert werden sollen.

Weitere Details finden Sie in der Lint-Dokumentation.

AndroidManifestOverlay

Die AndroidManifestOverlay Buildaktion kann verwendet werden, um AndroidManifest.xml zusätzliche Dateien für das AndroidManifestOverlay bereitzustellen. Dateien mit dieser Buildaktion werden zusammen mit der Hauptdatei AndroidManifest.xml und allen weiteren Manifestdateien aus Verweisen an Manifest Merger übergeben. Diese Dateien werden dann im endgültigen Manifest zusammengeführt.

Sie können diese Buildaktion verwenden, um zusätzliche Änderungen und Einstellungen für Ihre App je nach Buildkonfiguration 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>

Können Sie zum Hinzufügen für einen Debugbuild beispielsweise Folgendes verwenden:

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

Diese Buildaktion wurde in Xamarin.Android 11.2 eingeführt.

AndroidNativeLibrary

Native Bibliotheken werden dem Build hinzugefügt, indem ihre Buildaktion auf festgelegt wird.

Beachten Sie Folgendes: Da Android mehrere ABIs (Application Binary Interfaces) unterstützt, muss das Buildsystem wissen, für welche ABI die native Bibliothek erstellt wird. Es gibt zwei Möglichkeiten, dies zu erreichen:

  1. Pfadermittlung.
  2. Verwenden des Abi Elementattributs.

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 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 unterschiedliche 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

In einem Xamarin.Android-Bindungsprojekt bindet die EmbeddedJar-Buildaktion die Java/Kotlin-Bibliothek und bettet die 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

In einer Xamarin.Android-Klassenbibliothek oder einem Java-Bindungsprojekt bündelt die EmbeddedNativeLibrary-Buildaktion eine native Bibliothek wie in der 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

In einem Xamarin.Android-Bindungsprojekt bettet die EmbeddedReferenceJar-Buildaktion die Datei in die Bibliothek ein, erstellt aber keine C#-Bindung wie EmbeddedJar. 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 :

<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 Dateien verwendet, die Javadoc-HTMLenthalten. 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 Dateien mit Java-Quellcodeverwendet, die 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 zur Unterstützung der Verknüpfung mit Onlinedokumentation innerhalb der importierten Dokumentation.

  • %(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.

LibraryProjectZip

In einem Xamarin.Android-Bindungsprojekt bindet die Buildaktion LibraryProjectZip die Java/Kotlin-Bibliothek und bettet die - oder -Datei in die Bibliothek .aar 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, die zum Steuern des Verhaltens verwendet werden. Weitere Informationen zu dieser Buildaktion finden Sie unter ProGuard.

Diese Dateien werden ignoriert, sofern die MSBuild-Eigenschaft $(EnableProguard)MSBuild-Eigenschaft ist True .