Skapa mål

Följande byggmål definieras i .NET för Android-projekt.

Skapa

Skapar källkoden i ett projekt och alla beroenden.

Det här målet skapar inte ett Android-paket (.apk fil). Om du vill skapa ett Android-paket använder du SignAndroidPackage-måleteller anger egenskapen '$(AndroidBuildApplicationPackage) till True när du skapar:

msbuild /p:AndroidBuildApplicationPackage=True App.slnx

BuildAndStartAotProfiling

Skapar appen med en inbäddad AOT-profilerare, anger profilerar-TCP-porten till $(AndroidAotProfilerPort)och startar standardaktiviteten.

Det här äldre målet gäller för projekt som använder Mono och stöds i .NET 10 eller tidigare. Den konfigurerar inte CoreCLR- eller NativeAOT-profilering.

TCP-standardporten är 9999.

Har lagts till i Xamarin.Android 10.2.

Ren

Tar bort alla filer som genereras av byggprocessen.

BeräknaTillgängligaEnheter

Frågar och returnerar en lista över tillgängliga Android-enheter och emulatorer som kan användas med dotnet run.

Det här målet anropas automatiskt av .NET SDK:s dotnet run kommando för att stödja enhetsval via --device alternativet . Den returnerar en @(Devices) objektgrupp där varje enhet har följande metadata:

  • Beskrivning: Ett människovänligt namn (t.ex. "Pixel 7 – API 35" för emulatorer, "Pixel 6 Pro" för fysiska enheter)
  • Typ: Antingen "Enhet" eller "emulator"
  • Status: Enhetsstatus – "Online", "Offline", "Obehörig" eller "NoPermissions"
  • Modell: Enhetsmodellidentifieraren (valfritt)
  • Produkt: Produktnamnet (valfritt)
  • Enhet: Enhetsnamnet (valfritt)
  • TransportId: ADB-transport-ID (valfritt)

Om du till exempel vill visa en lista över alla tillgängliga enheter:

dotnet build -t:ComputeAvailableDevices

Det här målet är en del av specifikationen för .NET SDK-enhetsval och aktiverar kommandon som:

dotnet run --device <device-serial>

När en enhet väljs via egenskapen $(Device)$(AdbTarget) anges egenskapen automatiskt som mål för den specifika enheten för alla adb-åtgärder.

Har lagts till i .NET 11.

FinishAotProfiling

Måste anropas efter målet BuildAndStartAotProfiling.

Detta äldre mål gäller för projekt som stöds i .NET 10 och tidigare och som använder Mono.

Samlar in AOT-profilerardata från enheten eller emulatorn via TCP-porten $(AndroidAotProfilerPort) och skriver dem till $(AndroidAotCustomProfilePath).

Standardvärdena för port och anpassad profil är 9999 och custom.aprof.

Om du vill skicka ytterligare alternativ till aprofutil, anger du dem i $(AProfUtilExtraOptions)-egenskapen.

Detta motsvarar:

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

Har lagts till i Xamarin.Android 10.2.

GetAndroidDependencies

@(AndroidDependency) Skapar objektgruppen, som används av InstallAndroidDependencies målet för att avgöra vilka Android SDK-paket som ska installeras.

GetApplicationArtifacts

Skapar och returnerar @(ApplicationArtifact) objektgruppen, som innehåller APK- och Android App Bundle-filerna som skapas av bygget.

Det här målet beror alltid på det obligatoriska målet Build, som skapar och samlar in plattformartefakter i @(ApplicationArtifact). Senare importer kan ange eller lägga till mål för $(GetApplicationArtifactsDependsOn) att uppdatera befintliga objekt med ytterligare metadata innan det här målet eller målet Publish returnerar dem. Att $(GetApplicationArtifactsDependsOn) ersätta tar inte bort det nödvändiga Build beroendet.

Vanliga applikationsmetadata läses från den slutligt sammanslagna AndroidManifest.xml innan artefakterna samlas in. Slutliga manifestvärden har företräde framför motsvarande projektegenskaper, inklusive när ett anpassat manifest åsidosätter genererade värden eller $(GenerateApplicationManifest) är false. En android:label resursreferens som @string/app_name förblir en resursreferens. Inga nationella inställningar väljs när metadata returneras.

Anropa det här målet direkt när ett CI-jobb eller ett anpassat verktyg behöver sökvägarna till byggutdataartefakterna:

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

Använd målresultatet Publish när anroparen behöver kopierade publiceringsutdata i $(PublishDir):

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

Installera

Skapar, signerar och installerar Android-paketet på standardenheten eller den virtuella enheten.

Egenskapen $(AdbTarget) anger den Android-målenhet som Android-paketet kan installeras på eller tas bort från.

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

InstalleraAndroidDependencies

GetAndroidDependencies Anropar målet och installerar sedan De Android SDK-paket som anges i @(AndroidDependency) objektgruppen.

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

-f net8.0-android Krävs eftersom det här målet är ett .NET för Android-specifikt mål. Om du utelämnar det här argumentet får du följande fel:

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

Egenskaperna AndroidSdkDirectory och JavaSdkDirectory krävs eftersom vi behöver veta var de nödvändiga komponenterna ska installeras. Dessa kataloger kan vara tomma eller befintliga. Sdk-komponenter installeras ovanpå en befintlig sdk-installation.

Egenskapen $(AndroidManifestType) MSBuild styr vilken Visual Studio SDK Manager-lagringsplats som används för paketnamn och paketversionsidentifiering samt URL:er som ska laddas ned.

Publish

Skapar programmet, kopierar de sista APK- och Android App Bundle-filerna till $(PublishDir)och returnerar @(ApplicationArtifact) objektgruppen. Returnerade objekt använder de kopierade sökvägarna för publiceringskatalogen och bevarar artefaktmetadata som %(PackageFormat), %(Signed), %(PackageId), %(Abi), %(ApplicationId)%(ApplicationTitle), %(ApplicationName), %(ApplicationDisplayVersion)och %(ApplicationVersion).

Publish kör GetApplicationArtifactsförst , som skapar projektet och fyller @(ApplicationArtifact) med de plattformsproducerade artefakterna. Mål som läggs till i $(GetApplicationArtifactsDependsOn) körs sedan mot dessa befintliga objekt innan Publish beräknar publiceringsfiler och innan Publish returnerar @(ApplicationArtifact), så att senare importer kan lägga till metadata för anropare av publicering.

Till exempel, för att fråga efter publicerade artefakter:

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

KörMedLoggning

Kör programmet med ytterligare loggning aktiverat. Användbart när du rapporterar eller undersöker ett problem med programmet eller körningen. Om det lyckas visas platsen för logcat-filen med de loggade meddelandena i meddelanden som skrivs ut på skärmen.

Egenskaper som påverkar hur målet fungerar:

  • /p:RunLogVerbose=true möjliggör ännu mer utförlig körningsloggning
  • /p:RunLogDelayInMS=X där X bör ersättas med tiden i millisekunder att vänta innan loggutdata skrivs till filen. Standardinställningen är 1000.

SignAndroidPackage

Skapar och signerar Android-paketfilen (.apk).

Använd med /p:Configuration=Release för att generera fristående "Release"-paket.

Paketfiler som skapats av det här målet är tillgängliga i @(ApplicationArtifact) objektgruppen.

StartAndroidActivity

Startar standardaktiviteten på enheten eller den emulator som körs.

För att starta en annan aktivitet, ange $(AndroidLaunchActivity)-egenskapen för aktivitetsnamnet.

Detta motsvarar:

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

Har lagts till i Xamarin.Android 10.2.

StopAndroidPackage

Stoppar helt programpaketet på enheten eller den emulator som körs.

Detta motsvarar:

adb shell am force-stop @PACKAGE_NAME@

Har lagts till i Xamarin.Android 10.2.

Uninstall

Avinstallerar Android-paketet från standardenheten eller den virtuella enheten.

Egenskapen $(AdbTarget) anger den Android-målenhet som Android-paketet kan installeras på eller tas bort från.

UppdateraAndroidResurser

Uppdaterar Resource.designer.cs-filen.

Det här målet anropas vanligtvis av IDE när nya resurser läggs till i projektet.