Skip to content

Run Android E2E with ARM64 APKs - #58092

Closed
cortinico wants to merge 3 commits into
mainfrom
nc/emulator-arm64
Closed

Run Android E2E with ARM64 APKs#58092
cortinico wants to merge 3 commits into
mainfrom
nc/emulator-arm64

Conversation

@cortinico

Copy link
Copy Markdown
Contributor

Summary:

Build only the arm64-v8a Android ABI for dry-run CI artifacts and run the ARM64 RNTester and template-app APKs on an API 35 google_apis x86_64 emulator using the system images built-in NDK translation support.

This also makes the Maestro emulator API level and target configurable, logs the device ABI/native-bridge configuration, and updates local RNTester artifact selection to use the ARM64 split.

Release and nightly publication builds continue to build all supported Android ABIs.

Changelog:

[INTERNAL] [CHANGED] - Run Android E2E tests with ARM64 APKs through NDK translation.

Test Plan:

  • node --check .github/workflow-scripts/maestro-android.js — passed.
  • node --check scripts/release-testing/test-release-local.js — passed.
  • Parsed all modified YAML files with the yaml Node package — passed.
  • ./node_modules/.bin/prettier --check <modified files> — passed.
  • git diff --check HEAD~3..HEAD — passed.
  • actionlint reported only existing repository metadata warnings for the custom 4-core-ubuntu label and the missing description in the local yarn-install action.
  • yarn test .github/workflow-scripts/__tests__/maestro-android-test.js --runInBand could not start because the local dependency tree is missing flow-parser; restoring dependencies was blocked by HTTP 503 responses from the npm registry.
  • The draft CI run should validate ARM64 APK installation, Hermes startup, and the complete Maestro suites through libndk_translation.so.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Aug 24, 2026
@cortinico
cortinico marked this pull request as ready for review August 24, 2026 13:24
@meta-codesync

meta-codesync Bot commented Aug 24, 2026

Copy link
Copy Markdown

@cortinico has imported this pull request. If you are a Meta employee, you can view this in D117195078.

@meta-codesync meta-codesync Bot closed this in 25ebffd Aug 24, 2026
@meta-codesync meta-codesync Bot added the Merged This PR has been merged. label Aug 24, 2026
@meta-codesync

meta-codesync Bot commented Aug 24, 2026

Copy link
Copy Markdown

@cortinico merged this pull request in 25ebffd.

meta-codesync Bot pushed a commit that referenced this pull request Aug 24, 2026
Summary:
Follow-up to #58092.

Android API 35 x86_64 emulator images expose both `x86_64` and `arm64-v8a` through `libndk_translation.so`. SoLoader 0.12.1 only searches the first ABI when loading uncompressed native libraries directly from the APK, causing ARM64-only RNTester and template apps to crash while loading `libreactnative.so`.

Enable legacy JNI packaging through a CI-only Gradle init script so Android extracts the ARM64 libraries and the existing SoLoader `ApplicationSoSource` can load them. This applies only to dry-run RNTester builds and Android template E2E builds. Nightly and release packaging is unchanged.

Failure evidence: https://github.com/react/react-native/actions/runs/32741094253

## Changelog:

[INTERNAL] [FIXED] - Extract native libraries for ARM64 Android E2E APKs running through NDK translation.

Pull Request resolved: #58103

Test Plan:
- `./node_modules/.bin/prettier --check .github/actions/build-android/action.yml .github/workflows/e2e-android-templateapp.yml` — passed.
- Parsed both modified YAML files with the `yaml` Node package — passed.
- Parsed the embedded workflow shell scripts with `bash -n` — passed.
- Compiled `.github/workflow-scripts/legacy-jni-packaging.gradle` with the Groovy compiler bundled with Gradle 9.4.1 — passed.
- Full Android E2E validation is delegated to this draft PR because the local Gradle daemon could not establish its localhost connection.

Reviewed By: christophpurrer

Differential Revision: D117222109

Pulled By: cortinico

fbshipit-source-id: 65e09a38eed84474a2f50f7f5847e1676da4411b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant