revert(android): restore all four ABIs for production AAB#30687
Conversation
Reverts the architecture-narrowing changes from #30590 and #30642 that were rushed in to silence Play's 16 KB page-size warning. Google Play extended their compliance deadline, so we have time to fix the underlying alignment issue properly instead of shipping fewer ABIs. This restores: - android/gradle.properties.release back to all four ABIs: armeabi-v7a,arm64-v8a,x86,x86_64 - android/app/build.gradle: - reactNativeArchitectures() helper back to its original one-liner. - Removes the ndk.abiFilters(*reactNativeArchitectures()) block. The proper fixes for libconceal.so (#30592) and libsecp256k1.so (#30591) will close the gap on every ABI, not just x86_64. Once those land we will no longer need either the abiFilters enforcement or the ABI exclusion. Untouched: - android/gradle.properties (default), android/gradle.properties.github (CI E2E), android/gradle.properties.github.dual-versions, and the build.sh -PreactNativeArchitectures= overrides were never changed by the original PRs, so nothing to revert there. Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
These changes are purely Android native build/packaging configuration. They affect:
They do NOT affect:
No E2E tests are warranted since no app behavior, UI, or logic has changed. The changes only affect how the Android binary is compiled and packaged for distribution. Performance Test Selection: |
|



Description
Reverts the architecture-narrowing changes from #30590 and #30642 that were rushed in to silence Google Play's 16 KB page-size warning for
base/lib/x86_64/libconceal.soandbase/lib/x86_64/libsecp256k1.so. Google Play extended their compliance deadline, so we have time to fix the underlying 4 KB alignment issue properly instead of shipping fewer ABIs as a workaround.The structural fixes are tracked separately:
react-native-fast-cryptowithreact-native-quick-cryptoscrypt (dropslibsecp256k1.so).react-native-keychain(dropslibconceal.so).Once those land, both
.sofiles disappear for every ABI (including arm64-v8a), which is the real fix Play actually cares about.What this PR restores
android/gradle.properties.releasereactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64android/app/build.gradlereactNativeArchitectures()back to its original one-liner;ndk.abiFilters(*reactNativeArchitectures())block removed fromdefaultConfigWhy revert rather than keep
abiFiltersfor safety?The
abiFiltersplumbing isn't harmful when paired with all four ABIs (it would just resolve to all four), but keeping it adds non-obvious build behavior tied to a workaround we're abandoning. Cleaner to fully revert and re-introduce when (if) we narrow ABIs again as a deliberate decision.Untouched (already untouched by the original PRs)
android/gradle.properties(default, local dev)android/gradle.properties.github(CI E2E)android/gradle.properties.github.dual-versions(BrowserStack real-device runs)scripts/build.sh-PreactNativeArchitectures=...CLI overridesChangelog
CHANGELOG entry: null
Related issues
Reverts: #30590, #30642
Tracking the proper fixes: #30591, #30592
Manual testing steps
Screenshots/Recordings
Before
Production AAB ships only
armeabi-v7a+arm64-v8a. Play 16 KB warning cleared (workaround), but the underlying 4 KB-aligned.sofiles still ship for arm64-v8a.After
Production AAB ships all four ABIs again, restoring full device coverage (including Chromebook ARC++ on x86_64). Play 16 KB warning returns for x86_64, but the warning is informational under the extended deadline and the structural fixes (#30591, #30592) are the real path forward.
Pre-merge author checklist
unzip -lcheck on the produced AAB)team-mobile-platformPerformance checks (if applicable)
Pre-merge reviewer checklist
Made with Cursor
Note
Medium Risk
Changes only release packaging/architecture selection but increases shipped native surface (x86/x86_64) and may re-expose Play 16 KB alignment warnings until dependency fixes land.
Overview
Reverts the Play Store 16 KB page-size workaround that limited production native builds to ARM only. Release
gradle.properties.releaseagain setsreactNativeArchitecturesto all four ABIs (armeabi-v7a,arm64-v8a,x86,x86_64), so production AABs regain x86/x86_64 coverage (e.g. Chromebooks).In
app/build.gradle, thendk.abiFilters(*reactNativeArchitectures())block is removed fromdefaultConfig, so packaging no longer forces ABI filtering at the NDK layer.reactNativeArchitectures()is collapsed back to a single ternary that reads the property or falls back to the four default ABIs.Trade-off: Google Play’s x86_64 16 KB alignment warning may return until follow-up work replaces misaligned third-party
.sofiles; that is intentional per the extended compliance timeline.Reviewed by Cursor Bugbot for commit 61f5095. Bugbot is set up for automated code reviews on this repo. Configure here.