From f6899795a868dd1e64d30c1464d70551ff54a6ae Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Thu, 4 Dec 2025 16:37:04 -0600 Subject: [PATCH] [xabt] Implement `DeployToDevice` target Context: https://github.com/dotnet/sdk/blob/c164a9bc1246c48191fb780992530f0fe975141b/documentation/specs/dotnet-run-for-maui.md Implements the `DeployToDevice` MSBuild target per the `dotnet run` spec for .NET MAUI scenarios. This target allows deploying an already-built app to a device without rebuilding, supporting the `dotnet run` workflow. The target reuses existing deployment logic but skips the full build, enabling faster iteration when only deployment is needed e.g. `--no-build`. Also consolidates `$(SignAndroidPackageDependsOn)`, `$(InstallDependsOnTargets)`, and `$(UninstallDependsOnTargets)` properties into `BuildOrder.targets` to keep all target dependency ordering in one place. Adds test coverage to verify the target deploys successfully and the app can be launched via adb commands. --- .../Microsoft.Android.Sdk.BuildOrder.targets | 42 +++++++++++++++++++ .../Xamarin.Android.Common.targets | 32 +------------- .../Tests/InstallAndRunTests.cs | 25 +++++++++++ 3 files changed, 68 insertions(+), 31 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets index 736930a4cea..01f6959aed2 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets @@ -94,6 +94,48 @@ properties that determine build ordering. + + + SignAndroidPackage; + _DeployApk; + _DeployAppBundle; + + + AndroidPrepareForBuild; + _Uninstall + + + <_MinimalSignAndroidPackageDependsOn> + BuildOnlySettings; + _CreatePropertiesCache; + ResolveReferences; + PrepareResources; + CreateSatelliteAssemblies; + _CopyPackage; + _Sign; + _CreateUniversalApkFromBundle; + + + Build; + Package; + _Sign; + _CreateUniversalApkFromBundle; + + + $(_MinimalSignAndroidPackageDependsOn); + + + + $(_MinimalSignAndroidPackageDependsOn); + _Upload; + + + $(_MinimalSignAndroidPackageDependsOn); + _DeployApk; + _DeployAppBundle; + + + $(_AndroidBuildDependsOn); diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index ee24d3a843d..1093614e340 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -2800,28 +2800,10 @@ because xbuild doesn't support framework reference assemblies. - - - Build; - Package; - _Sign; - _CreateUniversalApkFromBundle; - - - - BuildOnlySettings; - _CreatePropertiesCache; - ResolveReferences; - PrepareResources; - CreateSatelliteAssemblies; - _CopyPackage; - _Sign; - _CreateUniversalApkFromBundle; - - + @@ -2938,18 +2920,6 @@ because xbuild doesn't support framework reference assemblies. - - - SignAndroidPackage; - _DeployApk; - _DeployAppBundle; - - - AndroidPrepareForBuild; - _Uninstall - - -