Skip to content

ci: install libicu-dev for Hermes from-source build on Android E2E ru…#29530

Open
andrepimenta wants to merge 1 commit intochore/build-e2e-rn-update-81from
ci/android-e2e-install-icu-dev
Open

ci: install libicu-dev for Hermes from-source build on Android E2E ru…#29530
andrepimenta wants to merge 1 commit intochore/build-e2e-rn-update-81from
ci/android-e2e-install-icu-dev

Conversation

@andrepimenta
Copy link
Copy Markdown
Member

@andrepimenta andrepimenta commented Apr 29, 2026

…nner

Hermes is built from source on Android because android/settings.gradle uses includeBuild('../node_modules/react-native') to apply our RN patch. That source build invokes CMake on Hermes, which requires ICU dev headers (not present on the Linux runner by default), otherwise failing with CMake Error: Unable to find ICU.

Made-with: Cursor

Description

Changelog

CHANGELOG entry:

Related issues

Fixes:

Manual testing steps

Feature: my feature name

  Scenario: user [verb for user action]
    Given [describe expected initial app state]

    When user [verb for user action]
    Then [describe expected outcome]

Screenshots/Recordings

Before

After

Pre-merge author checklist

Performance checks (if applicable)

  • I've tested on Android
    • Ideally on a mid-range device; emulator is acceptable
  • I've tested with a power user scenario
    • Use these power-user SRPs to import wallets with many accounts and tokens
  • I've instrumented key operations with Sentry traces for production performance metrics

For performance guidelines and tooling, see the Performance Guide.

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Low Risk
CI-only change that adds a missing OS package; main risk is slightly longer build times or transient apt-get flakiness.

Overview
Fixes Android E2E APK builds on the Linux GitHub runner by installing libicu-dev before environment setup, ensuring Hermes can be built from source via CMake when React Native is included as a local build.

Adds inline workflow documentation explaining the failure mode (Unable to find ICU) and why the extra system dependency is required.

Reviewed by Cursor Bugbot for commit 2d969cd. Bugbot is set up for automated code reviews on this repo. Configure here.

…nner

Hermes is built from source on Android because `android/settings.gradle`
uses `includeBuild('../node_modules/react-native')` to apply our RN patch.
That source build invokes CMake on Hermes, which requires ICU dev headers
(not present on the Linux runner by default), otherwise failing with
`CMake Error: Unable to find ICU.`

Made-with: Cursor
@andrepimenta andrepimenta requested a review from a team as a code owner April 29, 2026 22:45
@metamaskbotv2 metamaskbotv2 Bot added the team-mobile-platform Mobile Platform team label Apr 29, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeAccounts, SmokeConfirmations, SmokeIdentity, SmokeNetworkAbstractions, SmokeNetworkExpansion, SmokeTrade, SmokeWalletPlatform, SmokeCard, SmokePerps, SmokeRamps, SmokeMultiChainAPI, SmokePredictions, SmokeSeedlessOnboarding, SmokeBrowser, SmokeSnaps
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: high
  • AI Confidence: 90%
click to see 🤖 AI reasoning details

E2E Test Selection:
The change adds a libicu-dev installation step to the Android E2E build workflow to fix a CMake/Hermes build failure. This is a pure CI infrastructure fix — no app source code, controllers, or test logic was modified. The change is necessary to make the Android E2E build pipeline succeed at all (Hermes is built from source due to a React Native patch, requiring ICU headers). Since this is a build pipeline fix, the best validation strategy is to run all E2E test tags to confirm: (1) the build pipeline produces a working APK, and (2) the resulting APK functions correctly across all feature areas. No specific feature area is targeted, so broad coverage is the appropriate conservative approach for a CI infrastructure change.

Performance Test Selection:
This is a pure CI build infrastructure change (adding libicu-dev system dependency). No app code, rendering logic, state management, or performance-sensitive paths were modified. Performance tests are not warranted.

View GitHub Actions results

@github-actions
Copy link
Copy Markdown
Contributor

E2E Fixture Validation — Failed
The fixture validation job failed. Review the logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size-S team-mobile-platform Mobile Platform team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant