Fix Android build failing due to dependencies being built for wrong ABIs#40102
Conversation
WoLewicki
left a comment
There was a problem hiding this comment.
It builds from terminal for me now 🚀
|
Adhoc build should be ready soon - asked for a C+ to run through testing https://expensify.slack.com/archives/C02NK2DQWUX/p1712851640475759 |
Reviewer Checklist
Screenshots/Videos |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, Desktop, and Web. Happy testing! 🧪🧪 |
|
🎯 @rushatgabhane, thanks for reviewing and testing this PR! 🎉 An E/App issue has been created to issue payment here: #40131. |
|
LGTM, builds locally and markdown tests well on all platforms |
|
This is blocking a lot of people so I'm just gonna merge this now |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
thanks for pushing this through 🚀 |
|
🚀 Deployed to staging by https://github.com/arosiclair in version: 1.4.63-0 🚀
|
|
🚀 Deployed to production by https://github.com/mountiny in version: 1.4.63-21 🚀
|
<!-- Please provide enough information so that others can review your pull request. --> <!-- Keep pull requests small and focused on a single change. --> ### Summary In the native template `abiFilters` is missing from `externalNativeBuild` block. This means that the library would be built for every available ABI when building the application, even if the application itself is being built for a specific one. This is not that problematic (besides taking more time) when using React Native aar, but when building RN from source the core `.so` files will be built for that specific ABI. In case the library depends on a `.so` file, it would fail at the linking stage due to missing `.so` for the remaining ABIs. ### Test plan See - Expensify/App#40102 - Expensify/react-native-live-markdown#284 - https://github.com/margelo/react-native-quick-sqlite/pull/41 --------- Co-authored-by: Satyajit Sahoo <satyajit.happy@gmail.com>






Details
With the PR enabling the new architecture (#13767), we enabled building React Native from source on Android. When building from the command line,
--active-arch-onlyflag is passed to gradle so not all ABIs are built which speeds things up. This caused problem in two libraries:react-native-live-markdown- Filter built ABIs so the library compiles when building for select ABIs react-native-live-markdown#284react-native-quick-sqlite- https://github.com/margelo/react-native-quick-sqlite/pull/41In both cases, there was a problem with
abiFiltersfield in gradle which was causing them to fail on the linking step. The libs were being build for all ABIs but the relevant.sofiles from React Native core were only being built for one (arm64-v8a).Fixed Issues
I don't think one has been created, here's a thread on Slack: https://expensify.slack.com/archives/C01GTK53T8Q/p1712746783190519
$
PROPOSAL:
Tests
Build the app using
npm run android.Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop