dotnet / dotnet/android

Add NativeAOT NDK + bundle coverage to replace BuildAotApplicationWithNdkAndBundleAndÜmläüts

Open
#11,679 0 comments 0 reactions 0 assignees View on GitHub
needs-triage
Dominant language
C#
Stars
2.1k
Forks
579
Avg merge
1d 20h
Merged PRs (30d)
257

Description

The `BuildAotApplicationWithNdkAndBundleAndÜmläüts` test in `AotTests.cs` was removed because it was Mono-only (it set `AndroidRuntime.MonoVM`, `EnableLLVM`, and `AndroidUseAssemblyStore`, and asserted on Mono LLVM AOT artifacts like `aot/UnnamedProject.dll.so`). None of those have a direct CoreCLR equivalent — on CoreCLR, AOT maps to NativeAOT, which produces different artifacts and needs separate NDK/bundle wiring.

We should add equivalent coverage for the supported runtimes as a follow-up.

### What the old test covered (for reference)

- AOT build through the Android NDK (`AndroidNdkDirectory`), release mode.
- Multi-ABI builds across `armeabi-v7a;arm64-v8a;x86;x86_64`.
- Assembly-store/bundle on vs LLVM on, via two `TestCaseSource` rows:
- `usesAssemblyBlobs = true`, `enableLLVM = false`
- `usesAssemblyBlobs = false`, `enableLLVM = true`
- A project path/name with non-ASCII characters (`BuildAotNdk AndÜmläüts`) to catch path/encoding issues.
- Per-ABI assertions that the AOT native library and the assembly are present in the signed APK.

### Proposed work

Add equivalent NDK + bundle coverage for **both** supported runtimes:

- **NativeAOT**: release-mode NDK + bundle test across the supported ABIs (`arm64-v8a`, `x86_64`), asserting on the NativeAOT artifacts and APK contents.
- **CoreCLR**: release-mode NDK + bundle test across the supported ABIs (`arm64-v8a`, `x86_64`), asserting on the CoreCLR artifacts and APK contents.
- Use a non-ASCII project name so the special-character coverage is preserved.

### Notes

- Special-character project-name coverage already exists on CoreCLR in `BuildAotApplicationWithSpecialCharactersInProject` (`テスト` / `随机生成器` / `中国`), so this issue is specifically about the NDK + bundle + AOT artifact validation, not the Unicode-name angle.
- The AOT-on-CoreCLR combination is currently skipped in `BuildAotApplicationWithSpecialCharactersInProject` ("AOT + CoreCLR == NativeAOT; Not supported yet here"); the NativeAOT portion of this work depends on that NativeAOT path being wired up in the test infra.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in AotTests.cs by reading BuildAotApplicationWithNdkAndBundleAndÜmläüts and BuildAotApplicationWithSpecialCharactersInProject, then trace the NativeAOT test-infrastructure path noted in the issue. Done means release-mode NativeAOT and CoreCLR NDK-plus-bundle coverage for arm64-v8a and x86_64, with assertions for each runtime's artifacts and APK contents.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, csharp
Domain
mobile-dev, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.