Skip to content

[WIP] Add MAUI Android inner loop deploy measurement scenario#5165

Draft
davidnguyen-tech wants to merge 11 commits intodotnet:mainfrom
davidnguyen-tech:feature/measure-maui-android-deploy
Draft

[WIP] Add MAUI Android inner loop deploy measurement scenario#5165
davidnguyen-tech wants to merge 11 commits intodotnet:mainfrom
davidnguyen-tech:feature/measure-maui-android-deploy

Conversation

@davidnguyen-tech
Copy link
Member

@davidnguyen-tech davidnguyen-tech commented Mar 19, 2026

Adds a scenario to measure the MAUI Android developer inner loop: first full deploy and incremental deploy (after a 1-file edit) to a connected device, with granular MSBuild task/target timings parsed from binlogs.

davidnguyen-tech and others added 9 commits March 18, 2026 15:37
Add a new parser that extracts Android deploy target and task
durations from MSBuild binary logs: FastDeploy, _Upload, _Sign,
_BuildApkFastDev, Aapt2Link, AndroidSignPackage, AndroidApkSigner.

Wire it into Startup.cs via a new MetricType.AndroidInnerLoop
enum value.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a new 'androidinnerloop' subcommand to the test runner that
measures the Android debug inner loop:

  1. First full build+deploy (dotnet build -t:Install)
  2. Edit one source file (simulate developer change)
  3. Incremental build+deploy (only changed assembly via FastDev)
  4. Parse both binlogs under separate scenario names

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
pre.py: Creates MAUI template app, restores packages, and prepares
a modified MainPage.xaml.cs for incremental deploy simulation.

test.py: Invokes the androidinnerloop test type which orchestrates
first deploy, file edit, incremental deploy, and binlog parsing.

post.py: Uninstalls the app from the device and cleans artifacts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add counters for the build portion of the inner loop that were
previously unmeasured: Csc, XamlCTask, GenerateJavaStubs,
LinkAssembliesNoShrink, D8, Javac (tasks) and their corresponding
targets (CoreCompile, XamlC, _GenerateJavaStubs,
_LinkAssembliesNoShrink, _CompileToDalvik, _CompileJava).

These account for the majority of incremental deploy time beyond
the FastDeploy upload itself (e.g., GenerateJavaStubs ~1.2s of a
~4.3s incremental cycle).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add GenerateTypeMappings, ProcessAssemblies,
GenerateJavaCallableWrappers, and FilterAssemblies task counters
to close the gap between measured tasks and total build time.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add GenerateMainAndroidManifest, ResolveSdks, and
GenerateNativeApplicationConfigSources task counters to cover
the remaining significant tasks in the incremental build.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add guard for required --csproj-path argument
- Default scenarioname to 'MAUI Android Deploy' when not provided
- Add trailing newline to file

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@davidnguyen-tech davidnguyen-tech changed the title Add MAUI Android inner loop deploy measurement scenario [WIP] Add MAUI Android inner loop deploy measurement scenario Mar 20, 2026
davidnguyen-tech and others added 2 commits March 20, 2026 17:53
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add Helix-based CI support for the mauiandroidinnerloop scenario which
measures first-deploy and incremental-deploy times for MAUI Android apps.

Changes:
- Create maui_scenarios_android_innerloop.proj with Helix workitems
- Add 4 job entries to sdk-perf-jobs.yml (Mono/CoreCLR x Release/Debug)
- Fix pre.py: automate .csproj TFM fix, cache NuGet packages locally
- Fix post.py: add dotnet build-server shutdown before cleanup

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@davidnguyen-tech
Copy link
Member Author

/azp run

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant