Obiekty docelowe kompilacji

Następujące cele kompilacji są zdefiniowane na platformie .NET dla projektów systemu Android.

Build

Kompiluje kod źródłowy w projekcie i wszystkie zależności.

Ten element docelowy nie tworzy pakietu systemu Android (.apk pliku). Aby utworzyć pakiet systemu Android, użyj elementu docelowego SignAndroidPackagelub ustaw właściwość "$(AndroidBuildApplicationPackage) na true podczas kompilowania:

msbuild /p:AndroidBuildApplicationPackage=True App.slnx

Kompiluj i rozpocznij profilowanie AOT

Kompiluje aplikację za pomocą osadzonego profilera AOT, ustawia port TCP profilera na $(AndroidAotProfilerPort), a następnie uruchamia działanie domyślne.

Ten starszy cel dotyczy obsługiwanych projektów platformy .NET 10 i wcześniejszych, które używają Mono. Nie konfiguruje profilowania CoreCLR ani NativeAOT.

Domyślny port TCP to 9999.

Dodano w programie Xamarin.Android 10.2.

Czysty

Usuwa wszystkie pliki wygenerowane przez proces kompilacji.

ObliczDostępneUrządzenia

Wykonuje zapytania i zwraca listę dostępnych urządzeń z systemem Android i emulatorów, których można używać z dotnet runprogramem .

Ten element docelowy jest wywoływany automatycznie przez polecenie zestawu SDK .NET dotnet run w celu obsługi wyboru urządzenia za pośrednictwem opcji --device. Zwraca grupę @(Devices) elementów, w której każde urządzenie ma następujące metadane:

  • Opis: przyjazna dla człowieka nazwa (np. "Pixel 7 — API 35" dla emulatorów, "Pixel 6 Pro" dla urządzeń fizycznych)
  • Typ: "Urządzenie" lub "Emulator"
  • Stan: Stan urządzenia — "Online", "Offline", "Brak autoryzacji" lub "NoPermissions"
  • Model: identyfikator modelu urządzenia (opcjonalnie)
  • Produkt: nazwa produktu (opcjonalnie)
  • Urządzenie: nazwa urządzenia (opcjonalnie)
  • TransportId: identyfikator transportu adb (opcjonalnie)

Aby na przykład wyświetlić listę wszystkich dostępnych urządzeń:

dotnet build -t:ComputeAvailableDevices

Ten cel jest częścią .NET SDK specyfikacji wyboru urządzenia i umożliwia polecenia takie jak:

dotnet run --device <device-serial>

Po wybraniu urządzenia przez właściwość $(Device), właściwość $(AdbTarget) jest automatycznie ustawiana tak, aby celować w to konkretne urządzenie we wszystkich operacjach adb.

Dodano do platformy .NET 11.

ZakończProfilowanieAOT

Musi być wywoływana po obiekcie docelowym BuildAndStartAotProfiling .

Ten starszy cel dotyczy obsługiwanych .NET 10 i wcześniejszych projektów korzystających z platformy Mono.

Zbiera dane profilera AOT z urządzenia lub emulatora za pośrednictwem portu TCP $(AndroidAotProfilerPort) i zapisuje je do $(AndroidAotCustomProfilePath).

Wartości domyślne portów i profilu niestandardowego to 9999 i custom.aprof.

Aby przekazać dodatkowe opcje do aprofutil, ustaw je w elemencie. $(AProfUtilExtraOptions) właściwość.

Jest to odpowiednik:

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

Dodano w programie Xamarin.Android 10.2.

GetAndroidDependencies

Tworzy grupę @(AndroidDependency) elementów, która jest używana przez element docelowy InstallAndroidDependencies w celu określenia pakietów zestawu SDK systemu Android do zainstalowania.

GetApplicationArtifacts

Tworzy i zwraca grupę @(ApplicationArtifact) elementów zawierającą pliki APK i Android App Bundle utworzone przez kompilację.

Ten obiekt docelowy zawsze zależy od wymaganego obiektu docelowego Build, który generuje i zbiera artefakty dla platformy do @(ApplicationArtifact). Późniejsze importy mogą ustawiać lub dołączać targety w elemencie $(GetApplicationArtifactsDependsOn), aby zaktualizować istniejące elementy dodatkowymi metadanymi, zanim ten target lub target Publish je zwróci. Zastępowanie $(GetApplicationArtifactsDependsOn) nie powoduje usunięcia wymaganej Build zależności.

Wspólne metadane aplikacji są odczytywane z końcowego połączonego pliku AndroidManifest.xml przed zebraniem artefaktów. Ostateczne wartości manifestu mają pierwszeństwo przed odpowiadającymi im właściwościami projektu, również wtedy, gdy niestandardowy manifest zastępuje wygenerowane wartości lub $(GenerateApplicationManifest) jest ustawione na false. Odwołanie android:label do zasobu, takie jak @string/app_name pozostaje odwołaniem do zasobu; nie wybrano ustawień regionalnych podczas zwracania metadanych.

Wywołaj ten cel bezpośrednio, gdy zadanie CI lub narzędzie niestandardowe wymaga ścieżek do artefaktów wyjściowych kompilacji:

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

Użyj wyniku docelowego Publish, gdy wywołujący potrzebuje skopiowanych wyników publikowania w $(PublishDir):

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

Install

Tworzy, podpisuje i instaluje pakiet systemu Android na urządzeniu domyślnym lub urządzeniu wirtualnym.

Właściwość $(AdbTarget) określa urządzenie docelowe systemu Android, z których może zostać zainstalowany pakiet systemu Android lub z niego usunięty.

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

ZainstalujAndroidDependencies

Wywołuje element docelowy GetAndroidDependencies , a następnie instaluje pakiety zestawu ANDROID SDK określone w @(AndroidDependency) grupie elementów.

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

Element -f net8.0-android jest wymagany, ponieważ ten cel jest specyficznym celem .NET dla Androida. Jeśli pominiesz ten argument, zostanie wyświetlony następujący błąd:

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

Właściwości AndroidSdkDirectory i JavaSdkDirectory są wymagane, ponieważ musimy wiedzieć, gdzie zainstalować wymagane składniki. Te katalogi mogą być puste lub istniejące. Składniki zestawu SDK zostaną zainstalowane na podstawie istniejącej instalacji zestawu SDK.

Właściwość $(AndroidManifestType) MSBuild kontroluje, które repozytorium programu Visual Studio SDK Manager jest używane do wykrywania nazw pakietów i wersji pakietu oraz adresów URL do pobrania.

Publish

Kompiluje aplikację, kopiuje końcowe pliki APK i Android App Bundle do $(PublishDir), i zwraca grupę @(ApplicationArtifact) elementów. Zwracane elementy używają skopiowanych ścieżek katalogu publikacji i zachowują metadane artefaktów, takie jak %(PackageFormat), %(Signed), %(ApplicationDisplayVersion), %(ApplicationId), %(Abi), %(ApplicationTitle), %(PackageId), %(ApplicationName) i %(ApplicationVersion).

Publish najpierw uruchamia polecenie GetApplicationArtifacts, które kompiluje projekt i wypełnia @(ApplicationArtifact) je artefaktami utworzonymi przez platformę. Elementy docelowe dołączone do $(GetApplicationArtifactsDependsOn) są następnie uruchamiane względem tych istniejących elementów, zanim Publish obliczy pliki publikowania i zanim Publish zwróci @(ApplicationArtifact), dzięki czemu późniejsze importy mogą dodawać metadane dla wywołań publikowania.

Aby na przykład wykonywać zapytania dotyczące opublikowanych artefaktów:

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

RunWithLogging (Uruchom z logowaniem)

Uruchamia aplikację z włączonym dodatkowym rejestrowaniem. Przydatne podczas raportowania lub badania problemu z aplikacją lub środowiskiem uruchomieniowym. Jeśli to się powiedzie, komunikaty drukowane na ekranie będą wyświetlać lokalizację pliku logcat z zapisanymi komunikatami.

Właściwości wpływające na sposób działania obiektu docelowego:

  • /p:RunLogVerbose=true umożliwia jeszcze bardziej pełne rejestrowanie środowiska uruchomieniowego
  • /p:RunLogDelayInMS=X gdzie X należy zastąpić czas w milisekundach, aby poczekać przed zapisaniem danych wyjściowych dziennika do pliku. Wartość domyślna to 1000.

PodpiszPakietAndroid

Tworzy i podpisuje plik pakietu systemu Android (.apk).

Użyj /p:Configuration=Release do generowania samodzielnych pakietów "Release".

Pliki pakietów utworzone przez ten obiekt docelowy są dostępne w grupie elementów @(ApplicationArtifact).

StartAndroidActivity

Uruchamia domyślne działanie na urządzeniu lub uruchomionym emulatorze.

Aby uruchomić inną aktywność, skonfiguruj $(AndroidLaunchActivity) właściwość na nazwę działania.

Jest to odpowiednik:

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

Dodano w programie Xamarin.Android 10.2.

StopAndroidPackage

Całkowicie zatrzymuje pakiet aplikacji na urządzeniu lub uruchomionym emulatorze.

Jest to odpowiednik:

adb shell am force-stop @PACKAGE_NAME@

Dodano w programie Xamarin.Android 10.2.

Uninstall

Odinstalowuje pakiet systemu Android z urządzenia domyślnego lub urządzenia wirtualnego.

Właściwość $(AdbTarget) określa urządzenie docelowe systemu Android, z których może zostać zainstalowany pakiet systemu Android lub z niego usunięty.

UpdateAndroidResources

Aktualizuje plik Resource.designer.cs.

Ten cel jest zwykle wywoływany przez zintegrowane środowisko programistyczne (IDE), gdy do projektu dodawane są nowe zasoby.