Add NativeAOT NDK + bundle coverage to replace BuildAotApplicationWithNdkAndBundleAndÜmläüts
- 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