Add Android CoreCLR runtime tests#130766
Conversation
Run the CoreCLR runtime innerloop on the Android x64 emulator in the extra-platforms pipeline. Co-authored-by: Copilot <[email protected]> Copilot-Session: 4c3a31a8-4f37-4ee8-a3d3-eaeef79b1cab
Exclude native libraries already supplied by the Android CoreCLR shared framework while preserving them for NativeAOT runtime packs. Co-authored-by: Copilot <[email protected]> Copilot-Session: 4c3a31a8-4f37-4ee8-a3d3-eaeef79b1cab
|
Azure Pipelines: Successfully started running 5 pipeline(s). 10 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Pull request overview
This PR expands Android emulator CI coverage by adding a CoreCLR runtime-tests job to the runtime-androidemulator extra-platforms pipeline, and updates live build packaging to avoid duplicate native archive outputs when CoreCLR already provides the same archives via its shared framework on Android.
Changes:
- Add an
android_x64CoreCLR runtime tests innerloop job toruntime-extra-platforms-androidemulator. - Exclude a set of Android native static archives from
LibrariesRuntimeFilesfor Android + CoreCLR (non-NativeAOT runtime pack) to prevent duplicate publish outputs.
Show a summary per file
| File | Description |
|---|---|
| eng/pipelines/extra-platforms/runtime-extra-platforms-androidemulator.yml | Adds a new CoreCLR runtime-tests Helix submission job targeting the Android x64 emulator queue. |
| eng/liveBuilds.targets | Excludes Android CoreCLR native archives already present in the CoreCLR shared framework to avoid duplicate runtime publish outputs (while preserving NativeAOT runtime pack behavior). |
Copilot's findings
- Files reviewed: 2/2 changed files
- Comments generated: 0
Use one exclusion list for native archives shared by Apple and Android, with the Android crypto archive kept platform-specific. Co-authored-by: Copilot <[email protected]> Copilot-Session: 4c3a31a8-4f37-4ee8-a3d3-eaeef79b1cab
| $(LibrariesNativeArtifactsPath)libbrotlienc.a" /> | ||
|
|
||
| <ExcludeNativeLibrariesRuntimeFiles Condition="'$(TargetsAndroid)' == 'true' and '$(RuntimeFlavor)' == 'CoreCLR' and '$(BuildNativeAOTRuntimePack)' != 'true'" | ||
| Include="$(LibrariesNativeArtifactsPath)libSystem.Security.Cryptography.Native.Android.a" /> |
There was a problem hiding this comment.
Why we don't include libSystem.Security.Cryptography.Native.Android.a for NativeAOT?
There was a problem hiding this comment.
libSystem.Security.Cryptography.Native.Android.a contains the Android native implementation used by managed crypto APIs. For CoreCLR, the archive is already present in the CoreCLR shared framework, so including the libraries-native copy creates a duplicate publish output.
NativeAOT does not consume the CoreCLR shared framework. Its only copy comes from LibrariesNativeArtifactsPath, so excluding it would remove the archive entirely and cause missing native symbols or cryptography failures.
Note ExcludeNativeLibrariesRuntimeFiles is exclusion
Delete the disabled Android ARM64 Mono runtime-test configuration now that mobile testing uses CoreCLR and NativeAOT. Co-authored-by: Copilot <[email protected]> Copilot-Session: 4c3a31a8-4f37-4ee8-a3d3-eaeef79b1cab
Co-authored-by: Copilot Autofix powered by AI <[email protected]>
Description
Add CoreCLR runtime innerloop coverage on the Android x64 emulator in
runtime-androidemulator. The new job buildsclr+libs, packages the Android runtime tests, and submits them toUbuntu.2204.Amd64.Android.29.Open. Android CoreCLR live builds also exclude native archives already supplied by the CoreCLR shared framework, which avoids duplicate publish outputs while preserving the archives in NativeAOT runtime packs. The obsolete disabled Android ARM64 Mono runtime-test configuration is removed because .NET 11 mobile testing uses CoreCLR and NativeAOT.Validation ran in https://dev.azure.com/dnceng-public/public/_build/results?buildId=1509777. The
android-x64 Release AllSubsets_CoreCLR_RuntimeTestsjob passed with 75 completed Helix work items and zero failures.Fixes #60128