Skip to content

[Android] Add Mono AOT, CoreCLR R2R, CoreCLR R2R Composite, NativeAOT Android SDK configurations #4843

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions eng/performance/maui_scenarios_android.proj
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@

<_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'mono'">/p:UseMonoRuntime=true</_MSBuildArgs>
<_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false</_MSBuildArgs>

<!-- Mono AOT -->
<_MSBuildArgs Condition="'$(CodegenType)' == 'AOT'">$(_MSBuildArgs);/p:RunAOTCompilation=true;/p:AndroidEnableProfiledAot=false</_MSBuildArgs>
<!-- CoreCLR R2R -->
<_MSBuildArgs Condition="'$(CodegenType)' == 'R2R'">$(_MSBuildArgs);/p:PublishReadyToRun=true</_MSBuildArgs>
<!-- CoreCLR R2R composite -->
<_MSBuildArgs Condition="'$(CodegenType)' == 'R2RComposite'">$(_MSBuildArgs);/p:PublishReadyToRun=true;/p:PublishReadyToRunComposite=true</_MSBuildArgs>
<!-- CoreCLR NativeAOT -->
<_MSBuildArgs Condition="'$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true</_MSBuildArgs>

<RunConfigsString>$(RuntimeFlavor)_$(CodegenType)</RunConfigsString>
</PropertyGroup>

Expand All @@ -35,19 +45,19 @@
<ApkName>com.companyname.netandroiddefault-Signed</ApkName>
<PackageName>com.companyname.NetAndroidDefault</PackageName>
</MAUIAndroidScenario>
<MAUIAndroidScenario Include="MAUI Android Default Template">
<MAUIAndroidScenario Include="MAUI Android Default Template" Condition="'$(CodegenType)' != 'NativeAOT'">
<ScenarioDirectoryName>mauiandroid</ScenarioDirectoryName>
<PayloadDirectory>$(ScenariosDir)%(ScenarioDirectoryName)</PayloadDirectory>
<ApkName>com.companyname.mauiandroiddefault-Signed</ApkName>
<PackageName>com.companyname.mauiandroiddefault</PackageName>
</MAUIAndroidScenario>
<MAUIAndroidScenario Include="MAUI Android Sample Content Template">
<MAUIAndroidScenario Include="MAUI Android Sample Content Template" Condition="'$(CodegenType)' != 'NativeAOT'">
<ScenarioDirectoryName>mauisamplecontentandroid</ScenarioDirectoryName>
<PayloadDirectory>$(ScenariosDir)%(ScenarioDirectoryName)</PayloadDirectory>
<ApkName>com.companyname.mauisamplecontentandroid-Signed</ApkName>
<PackageName>com.companyname.mauisamplecontentandroid</PackageName>
</MAUIAndroidScenario>
<MAUIAndroidScenario Include="MAUI Blazor Android Default Template">
<MAUIAndroidScenario Include="MAUI Blazor Android Default Template" Condition="'$(CodegenType)' != 'NativeAOT'">
<ScenarioDirectoryName>mauiblazorandroid</ScenarioDirectoryName>
<PayloadDirectory>$(ScenariosDir)%(ScenarioDirectoryName)</PayloadDirectory>
<ApkName>com.companyname.mauiblazorandroiddefault-Signed</ApkName>
Expand All @@ -67,11 +77,11 @@

<!-- We only run the android tests from Windows machines (at least for now) -->
<ItemGroup>
<HelixWorkItem Include="@(MAUIAndroidScenario -> 'SOD - %(Identity) APK Size')">
<HelixWorkItem Include="@(MAUIAndroidScenario -> 'SOD - %(Identity) APK Size')" Condition="!$(HelixTargetQueue.ToLowerInvariant().Contains('pixel'))">
<PreCommands>echo on; xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y</PreCommands>
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot; $(ScenarioArgs)</Command>
</HelixWorkItem>
<HelixWorkItem Include="@(MAUIAndroidScenario -> 'SOD - %(Identity) Extracted Size')">
<HelixWorkItem Include="@(MAUIAndroidScenario -> 'SOD - %(Identity) Extracted Size')" Condition="!$(HelixTargetQueue.ToLowerInvariant().Contains('pixel'))">
<PreCommands>echo on; xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y; ren %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).apk %(HelixWorkItem.ApkName).zip; powershell.exe -nologo -noprofile -command "&amp; {Expand-Archive %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).zip -DestinationPath %HELIX_WORKITEM_ROOT%\pub\}"; del %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).zip</PreCommands>
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot; $(ScenarioArgs)</Command>
</HelixWorkItem>
Expand Down
80 changes: 78 additions & 2 deletions eng/pipelines/sdk-perf-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ jobs:
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (Mono)
# Maui Android scenario benchmarks (Mono ProfiledAOT)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
Expand All @@ -407,7 +407,26 @@ jobs:
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR)
# Maui Android scenario benchmarks (Mono AOT)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
buildMachines:
- win-x64-android-arm64-pixel
- win-x64-android-arm64-galaxy
isPublic: false
jobParameters:
runKind: maui_scenarios_android
projectFileName: maui_scenarios_android.proj
channels:
- main
runtimeFlavor: mono
codeGenType: AOT
additionalJobIdentifier: Mono
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR JIT)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
Expand All @@ -426,6 +445,63 @@ jobs:
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR R2R)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
buildMachines:
- win-x64-android-arm64-pixel
- win-x64-android-arm64-galaxy
isPublic: false
jobParameters:
runKind: maui_scenarios_android
projectFileName: maui_scenarios_android.proj
channels:
- main
runtimeFlavor: coreclr
codeGenType: R2R
additionalJobIdentifier: CoreCLR
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR R2R Composite)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
buildMachines:
- win-x64-android-arm64-pixel
- win-x64-android-arm64-galaxy
isPublic: false
jobParameters:
runKind: maui_scenarios_android
projectFileName: maui_scenarios_android.proj
channels:
- main
runtimeFlavor: coreclr
codeGenType: R2RComposite
additionalJobIdentifier: CoreCLR
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR NativeAOT)
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml
buildMachines:
- win-x64-android-arm64-pixel
- win-x64-android-arm64-galaxy
isPublic: false
jobParameters:
runKind: maui_scenarios_android
projectFileName: maui_scenarios_android.proj
channels:
- main
runtimeFlavor: coreclr
codeGenType: NativeAOT
additionalJobIdentifier: CoreCLR
${{ each parameter in parameters.jobParameters }}:
${{ parameter.key }}: ${{ parameter.value }}

# Maui iOS Mono scenario benchmarks
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
Expand Down
5 changes: 3 additions & 2 deletions src/scenarios/shared/mauisharedpython.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,14 +188,15 @@ def install_latest_maui(
highest_dotnet_version = max(float(pkg['dotnet_version']) for pkg in packages)
packages = [pkg for pkg in packages if float(pkg['dotnet_version']) == highest_dotnet_version]

# Check if we have non-preview packages available, if so, check if the version is greater than the preview version
# Check if we have non-preview packages available and use them
non_preview_packages = [pkg for pkg in packages if not re.search(r'\-(preview|rc|alpha)\.\d+$', pkg['id'])]
if non_preview_packages:
packages = non_preview_packages

# Sort the packages first by by 'sdk_version'
# Sort the packages by 'sdk_version'
packages.sort(key=lambda x: x['sdk_version'], reverse=True)

# Get the latest package
latest_package = packages[0]

getLogger().info(f"Latest package for {workload} found: {latest_package['id']} {latest_package['latestVersion']}")
Expand Down
Loading