Skip to content

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

@kotlarmilos

Description

@kotlarmilos

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageIssues that need to be assigned.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions