Skip to content

Conversation

@bitmold
Copy link
Collaborator

@bitmold bitmold commented Oct 20, 2025

Here is my branch after merging the latest develop into the project.

As of right now, I'm working out some issue where I can't successfully run bundle exec pod install after merging develop. So will update here but posting for the time being.

After you bootstrap and do everything to configure the project:

cd packages/mobile/android 
./gradlew clean assembleDebug
cd ../../../scripts
./check_elf_alignment.sh ../packages/mobile/android/app/build/outputs/apk/standard/debug/app-standard-debug.apk

We can see that everything is 16KB Aligned:

➜  scripts git:(react-native-upgrade77) ✗ ./check_elf_alignment.sh ../packages/mobile/android/app/build/outputs/apk/standard/debug/app-standard-debug.apk

Recursively analyzing ../packages/mobile/android/app/build/outputs/apk/standard/debug/app-standard-debug.apk

NOTICE: Zip alignment check requires build-tools version 35.0.0-rc3 or higher.
  You can install the latest build-tools by running the below command
  and updating your $PATH:

    sdkmanager "build-tools;35.0.0-rc3"

=== ELF alignment ===
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libnode.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libgifimage.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libjsi.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libnative-filters.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libfbjni.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/librnscreens.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libown-native-lib.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libnative-imagetranscoder.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libtor.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libjsc.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libimagepipeline.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libc++_shared.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libsodium.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libjnidispatch.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libreactnative.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libjsctooling.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libglide-webp.so: \e[32mALIGNED\e[0m (2**14)
/var/folders/51/8996x1_x5bj3khs7h33_s6y40000gn/T/app-standard-debug_out_XXXXX.a3vMbdnVBz/lib/arm64-v8a/libavif_android.so: \e[32mALIGNED\e[0m (2**14)
ELF Verification Successful

https://developer.android.com/guide/practices/page-sizes

The remaining unaligned binaries that are addressed here is the javascript core libjsc.so dependency, and a series of binaries that come from react native namely libreactnative.so and its additional dependencies.

Upgrading libjsc.so was trivial, it involved replacing the antiquated one that gets resolved into the project as a nodejs module with an explicit gradle dependency on a modern 16KB aligned build.

Upgrading the react binaries involved upgrading react native for version 0.73 to 0.77.3 where on 0.77 and onwards 16KB binaries started to be used.

In order to perform this migration, I used this website to increment the versions upwards step by step. Ensuring that the project builds on Android (simulator, and a physical phone) and on iOS (unfortunately just the emulator). This processed introduced a handful of changes to Kotlin, Swift and JavaScript code from version to version. Tried adding comments on the PR for some of the less clear changes that had to be made.

https://react-native-community.github.io/upgrade-helper/

bitmold added 29 commits August 26, 2025 18:11
to have updates deployed onto the playstore. This rule goes into
effect on August 31, 2025

See: https://support.google.com/googleplay/android-developer/answer/11926878

Also slightly updated READMEs in desktop and mobile packages
This greatly simplifies installing + using the temurin 17 JDK on any UNIX system, especially if you already have a JDK installed.
…Android Studio that only worked on mac from README, replace with ln command that allows you to open Android Studio however you want and works on mac + linux
…ently 32 bit builds were also set here but Quiet only supports 64bit ARM
- upgrade toolchain version in  gradle-wrapper.properties
- change NotificationHandler.kt method signature from String? to String to match method signature of new Android API
…ive code to

newer releases to support 16KB page sizes for November 1, 2025 play store restriction

Upgrade to android gradle plugin 8.5.1 which is also needed for 16KB pages

Bump external gradle deps to newer releaes supporting 16kb alignment
…package in here it's ignored, and also useLegacyJni in our gradle overrides this native libs setting
…ilicon mac

	- Updates to Podfile
	- Updates to xcode project files
	- Updates to mobile/README.md

Made changes to test TryQuiet#2974 on iOS as requested by @holmesworcester - TryQuiet#2974 didn't break anything on iOS
Fix React Native 0.74 iOS broken bundleUrl in AppDelegate.m

https://reactnative.dev/blog/2024/04/22/release-0.74#other-breaking-changes
On iOS prior to RN 0.74 Before, bundleURL was set when React Native was started in an instance variable and it was not possible to update it.
Now, bundleUrl is a function which is re-evaluated when needed, enabling the use of a different URL across refreshes.

https://stackoverflow.com/questions/78582786/rctappdelegatebundleurl-not-implemented-reason-subclasses-must-implement-a
- fixed issue with com.web.detox incorrectly sourcing a very antiquated version from maven instead of the one in node_modules
…rade77

- Working on Android, saving as WIP becuase now having problems with pod install after merging...
# Pods for testing
end

# Enables Flipper.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

flipper was dropped in react native 0.74

adrastaea and others added 5 commits December 22, 2025 14:28
* fix exclusion rules

* exclude noisy debug statements

* properly target timed queue

* update changelog
* circumvent dependency on redux saving when renderer has not set up

* update changelog

* fix main test
* ingest entries from qss fanout

* ingest entry correctly and prevent sending multiple messages for the same entry

* setup just one listener

* add e2e test

* fix backend unit tests

* fix state manager tests

* update changelog

* add waits in oneclient to allow app to fully open

* update submodule pointer

* add delay in test

* add additional tor init interval logging to debug multiple clients test fail

* make sure starting panel doesn't occlude after startup

* replace startPanel waitForLoadingToComplete with more suitable test for DOM removal

* avoid crashing renderer if watch is still active

* close join community modal when custom protocol finishes

* wait for starting panel to be either invisible OR not in the DOM

* fix some crashes and e2e test weirdest

* fix hangups

* fix back compat test

* make address required

* allow only one attempts for quicker feedback

* better type safety and address selection for dialing and invites

* extend ping intervals and timeouts

* bring back normal attempt limit
@bitmold bitmold force-pushed the react-native-upgrade77 branch from 41c6017 to 2924a68 Compare December 29, 2025 17:51
EVERYTHING is finally 16kb aligned on android arm64
@bitmold bitmold force-pushed the react-native-upgrade77 branch from 7708323 to 745c5fe Compare December 29, 2025 23:14
@bitmold bitmold force-pushed the react-native-upgrade77 branch from b48cb27 to 3336d76 Compare December 29, 2025 23:24
@bitmold bitmold force-pushed the react-native-upgrade77 branch from b6dad8d to 13f6939 Compare December 30, 2025 17:59
@bitmold
Copy link
Collaborator Author

bitmold commented Jan 23, 2026

Closing as #3092 and #3090 cover this work

@bitmold bitmold closed this Jan 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants