Buildziele

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

Entwickeln

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.slnx

BuildAndStartAotProfiling

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

Dieses Legacyziel gilt für unterstützte .NET 10-und-frühere Projekte, die Mono verwenden. Es konfiguriert kein CoreCLR- oder NativeAOT-Profiling.

Der standardmäßige TCP-Port ist 9999.

Hinzugefügt in Xamarin.Android 10.2.

Reinigen

Hiermit werden alle vom Buildprozess generierten Dateien entfernt.

ComputeAvailableDevices

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.

Dieses Legacyziel gilt für unterstützte .NET 10-und-frühere Projekte, die Mono verwenden.

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.

Um zusätzliche Optionen an aprofutil zu übergeben, legen Sie sie in der $(AProfUtilExtraOptions)-Eigenschaft.

Das entspricht:

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

Hinzugefügt in Xamarin.Android 10.2.

GetAndroidDependencies

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

GetApplicationArtifacts

Erstellt und gibt die @(ApplicationArtifact) Elementgruppe zurück, die die APK- und Android-App-Bundle-Dateien enthält, die vom Build erstellt wurden.

Dieses Ziel hängt immer vom erforderlichen Ziel Build ab, das Plattformartefakte in @(ApplicationArtifact) erzeugt und sammelt. Spätere Importe können Ziele für $(GetApplicationArtifactsDependsOn) festlegen oder hinzufügen, um diese vorhandenen Elemente vor der Rückgabe durch dieses Ziel oder das Ziel Publish mit zusätzlichen Metadaten zu aktualisieren. $(GetApplicationArtifactsDependsOn) Durch das Ersetzen wird die erforderliche Build Abhängigkeit nicht entfernt.

Allgemeine Anwendungsmetadaten werden aus dem endgültigen zusammengeführten AndroidManifest.xml gelesen, bevor die Artefakte gesammelt werden. Endgültige Manifestwerte haben Vorrang vor den entsprechenden Projekteigenschaften, z. B. wenn ein benutzerdefiniertes Manifest generierte Werte überschreibt oder $(GenerateApplicationManifest) ist false. Ein android:label Ressourcenverweis wie @string/app_name bleibt ein Ressourcenverweis; es wird kein Gebietsschema ausgewählt, wenn die Metadaten zurückgegeben werden.

Rufen Sie dieses Ziel direkt auf, wenn ein CI-Job oder ein benutzerdefiniertes Tool die Pfade zu den Build-Ausgabeartefakten benötigt:

dotnet build MyApp.csproj -t:GetApplicationArtifacts -getTargetResult:GetApplicationArtifacts

Verwenden Sie das Zielergebnis Publish, wenn der Aufrufer die kopierten veröffentlichten Ausgaben in $(PublishDir) benötigt:

dotnet build MyApp.csproj -t:Publish -getTargetResult:Publish

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.

Veröffentlichen

Erstellt die Anwendung, kopiert endgültige APK- und Android-App-Bundle-Dateien in $(PublishDir)und gibt die @(ApplicationArtifact) Elementgruppe zurück. Zurückgegebene Elemente verwenden die kopierten Publish-Verzeichnispfade und behalten Artefaktmetadaten wie %(PackageFormat), %(Signed), %(Abi), %(PackageId), %(ApplicationId), %(ApplicationTitle), %(ApplicationName), %(ApplicationDisplayVersion) und %(ApplicationVersion) bei.

Publish wird als Erstes ausgeführt GetApplicationArtifacts, wodurch das Projekt erstellt und @(ApplicationArtifact) mit den von der Plattform erzeugten Artefakten gefüllt wird. Ziele, die an $(GetApplicationArtifactsDependsOn) angehängt werden, werden dann für diese vorhandenen Elemente ausgeführt, bevor Publish die zu veröffentlichenden Dateien berechnet und bevor Publish@(ApplicationArtifact) zurückgibt, sodass spätere Importe Metadaten für Aufrufer der Veröffentlichung hinzufügen können.

Um beispielsweise die veröffentlichten Artefakte abzufragen:

dotnet build MyApp.csproj -t:Publish -getTargetResult:Publish

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 zeigen auf dem Bildschirm angezeigte Nachrichten den Speicherort der Logcat-Datei mit den protokollierten Nachrichten an.

Eigenschaften, die sich auf die Funktionsweise des Ziels auswirken:

  • /p:RunLogVerbose=true ermöglicht eine noch ausführlichere Protokollierung zur Laufzeit
  • /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.

Von diesem Ziel erstellte Paketdateien sind in der @(ApplicationArtifact) Elementgruppe verfügbar.

StartAndroidActivity

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

Legen Sie zum Starten einer anderen Aktivität für die Eigenschaft $(AndroidLaunchActivity)-Eigenschaft zu dem Aktivitätsnamen hinzufügen.

Das entspricht:

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

Hinzugefügt in Xamarin.Android 10.2.

StopAndroidPackage

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

Das entspricht:

adb shell am force-stop @PACKAGE_NAME@

Hinzugefügt in Xamarin.Android 10.2.

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.