Freigeben über


Buildziele

Die folgenden Buildziele werden in .NET für Android-Projekte definiert.

Erstellen

Hiermit werden der Quellcode und alle Abhängigkeiten in einem Projekt erstellt.

Dieses Ziel erstellt kein Android-Paket (.apk-Datei). Verwenden Sie zum Erstellen eines Android-Pakets das Ziel SignAndroidPackage, oder legen Sie die Eigenschaft $(AndroidBuildApplicationPackage) beim Erstellen auf TRUE fest:

msbuild /p:AndroidBuildApplicationPackage=True App.sln

BuildAndStartAotProfiling

Die App erstellt die App mit einem eingebetteten AOT-Profiler, legt den TCP-Port für den Profiler auf $(AndroidAotProfilerPort) fest und startet die Standardaktivität.

Der standardmäßige TCP-Port ist 9999.

Hinzugefügt in Xamarin.Android 10.2.

Reinigen

Hiermit werden alle vom Buildprozess generierten Dateien entfernt.

BerechneVerfügbareGeräte

Ermittelt und gibt eine Liste der verfügbaren Android-Geräte und Emulatoren zurück, die mit dotnet run verwendet werden können.

Dieses Ziel wird automatisch vom Befehl des .NET SDK dotnet run aufgerufen, um die Geräteauswahl über die --device Option zu unterstützen. Es gibt eine @(Devices) Elementgruppe zurück, in der jedes Gerät über die folgenden Metadaten verfügt:

  • Beschreibung: Ein benutzerfreundlicher Name (z. B. "Pixel 7 – API 35" für Emulatoren, "Pixel 6 Pro" für physische Geräte)
  • Typ: Entweder "Gerät" oder "Emulator"
  • Status: Gerätestatus – "Online", "Offline", "Nicht autorisiert" oder "NoPermissions"
  • Modell: Der Gerätemodellbezeichner (optional)
  • Produkt: Der Produktname (optional)
  • Gerät: Der Gerätename (optional)
  • TransportId: Die adb-Transport-ID (optional)

So können Sie beispielsweise alle verfügbaren Geräte auflisten:

dotnet build -t:ComputeAvailableDevices

Dieses Ziel ist Teil der .NET SDK-Geräteauswahlspezifikation und ermöglicht Befehle wie:

dotnet run --device <device-serial>

Wenn ein Gerät über die $(Device) Eigenschaft ausgewählt wird, wird die $(AdbTarget) Eigenschaft automatisch auf dieses bestimmte Gerät für alle adb-Vorgänge festgelegt.

In .NET 11 hinzugefügt.

FinishAotProfiling

Dieses Ziel muss nach dem Ziel BuildAndStartAotProfiling aufgerufen werden.

Es sammelt AOT-Profilerdaten über den TCP-Port vom Gerät oder Emulator $(AndroidAotProfilerPort) und schreibt sie zu $(AndroidAotCustomProfilePath).

Die Standardwerte für Port und benutzerdefiniertes Profil sind 9999 und custom.aprof.

Wenn Sie zusätzliche Optionen an aprofutil übergeben möchten, legen Sie diese in der $(AProfUtilExtraOptions)-Eigenschaft.

Das entspricht:

aprofutil $(AProfUtilExtraOptions) -s -v -f -p $(AndroidAotProfilerPort) -o "$(AndroidAotCustomProfilePath)"

Ab Xamarin.Android 10.2 verfügbar.

GetAndroidDependencies

Erstellt die @(AndroidDependency) Elementgruppe, die vom InstallAndroidDependencies Ziel verwendet wird, um zu bestimmen, welche Android SDK-Pakete installiert werden sollen.

Installieren

Hiermit wird das Android-Paket auf dem Standardgerät oder virtuellen Gerät erstellt, signiert und installiert.

Die $(AdbTarget)-Eigenschaft gibt das Android-Zielgerät an, auf dem das Android-Paket installiert oder entfernt werden soll.

# Install package onto emulator via -e
# Use `/Library/Frameworks/Mono.framework/Commands/msbuild` on OS X
MSBuild /t:Install ProjectName.csproj /p:AdbTarget=-e

Installiere Android-Abhängigkeiten

Ruft das GetAndroidDependencies Ziel auf und installiert dann die android SDK-Pakete, die in der @(AndroidDependency) Elementgruppe angegeben sind.

dotnet build -t:InstallAndroidDependencies -f net8.0-android "-p:AndroidSdkDirectory=<path to sdk>" "-p:JavaSdkDirectory=<path to java sdk>"

Dies -f net8.0-android ist erforderlich, da dieses Ziel ein .NET für Android-spezifisches Ziel ist. Wenn Sie dieses Argument weglassen, erhalten Sie die folgende Fehlermeldung:

error MSB4057: The target "InstallAndroidDependencies" does not exist in the project.

Die AndroidSdkDirectory und JavaSdkDirectory die Eigenschaften sind erforderlich, da wir wissen müssen, wo die erforderlichen Komponenten installiert werden sollen. Diese Verzeichnisse können leer oder vorhanden sein. Sdk-Komponenten werden oben auf einer vorhandenen SDK-Installation installiert.

Die $(AndroidManifestType) MSBuild-Eigenschaft steuert, welches Visual Studio SDK Manager-Repository für paketname- und paketversionserkennung und URLs zum Herunterladen verwendet wird.

RunWithLogging

Führt die Anwendung mit aktivierter zusätzlicher Protokollierung aus. Hilfreich beim Melden oder Untersuchen eines Problems mit der Anwendung oder der Laufzeit. Bei erfolgreicher Ausführung werden auf dem Bildschirm angezeigte Nachrichten den Speicherort der Logcat-Datei mit den Nachrichten anzeigen.

Eigenschaften, die sich auf die Funktionsweise des Ziels auswirken:

  • /p:RunLogVerbose=true ermöglicht noch verbosere Protokollierung von MonoVM
  • /p:RunLogDelayInMS=X wo X durch die Wartezeit in Millisekunden ersetzt werden soll, bevor die Protokollausgabe in die Datei geschrieben wird. Wird standardmäßig auf 1000 festgelegt.

Android-Paket signieren

Hiermit wird die Android-Paketdatei (.apk) erstellt und signiert.

Verwenden Sie /p:Configuration=Release, um eigenständige „Release“-Pakete zu generieren.

StartAndroidActivity

Startet die Standardaktivität auf dem Gerät oder dem laufenden Emulator.

Um eine andere Aktivität zu starten, legen Sie die entsprechende Eigenschaft fest. $(AndroidLaunchActivity)-Eigenschaft zu dem Aktivitätsnamen hinzufügen.

Das entspricht:

adb shell am start -S -n @PACKAGE_NAME@/$(AndroidLaunchActivity)

Ab Xamarin.Android 10.2 verfügbar.

StopAndroidPackage

Beendet das Anwendungspaket vollständig auf dem Gerät oder dem laufenden Emulator.

Das entspricht:

adb shell am force-stop @PACKAGE_NAME@

Ab Xamarin.Android 10.2 verfügbar.

Deinstallieren

Deinstalliert das Android-Paket vom Standardgerät oder virtuellen Gerät.

Die $(AdbTarget)-Eigenschaft gibt das Android-Zielgerät an, auf dem das Android-Paket installiert oder entfernt werden soll.

Android-RessourcenAktualisieren

Es wird ein Update für die Datei Resource.designer.cs ausgeführt.

Dieses Ziel wird normalerweise von der IDE aufgerufen, wenn dem Projekt neue Ressourcen hinzugefügt werden.