Fix Android 16 KB Page Size Compliance for React Native

icon
inr null - null undefined/undefined

Full–time

Posted on: 7 days ago

Skills

OverviewWe need an experienced Android/React Native developer to make our production app fully compliant with Google Play's 16 KB memory page size requirement for apps targeting Android 15+ (SDK 35). Google Play Console has already flagged 19 non-compliant .so files in our latest production build. We have a full mapping of each library to its source package (provided below). Our Stack • React Native with Expo SDK 52 • Hermes JS engine (enabled) • AGP resolved via RN 0.76 version catalog) • Gradle 8.10.2, NDK * targetSdkVersion 35, compileSdkVersion 35 • CI/CD: Codemagic Flagged Libraries (from Google Play Console) Google Play has identified 19 . so files across arm64-v8a and x86_64 that are not 16 KB page aligned: React Native Core / Hermes (5 files): * — Hermes JS engine * — Hermes tooling * — NDK C++ standard library * — React Native core * — JavaScript Interface (Meta) Facebook/Meta — Fresco Image Pipeline (5 files): * — Facebook JNI bindings * — Fresco GIF support * — Fresco image pipeline * libstatic- — Fresco WebP support * libnative- — Fresco image transcoder Expo Modules (2 files): * libexpo-modules- — expo-modules-core * — expo-image 2.0.7 Third-Party npm Packages (7 files): * / — react-native-reanimated 3.16.7 * — react-native-mmkv 2.12.2 * — react-native-quick-crypto 0.7.17 * — react-native-screens 4.10.0 * libanimation-decoder- — lottie-react-native 7.1.0 * libnative- — @shopify/flash-list 1.8.3 Scope of Work • Determine the fix strategy for each flagged library — Whether to upgrade the dependency, patch the native build, add linker flags (-Wl,-z,max-page-size=16384), or upgrade NDK/build tools. • Apply fixes — Upgrade packages, patch build configs, or apply whatever is needed to make all 19 .so files 16 KB aligned. • Verify alignment — Run zipalign -c -P 16 and/or Google's on the release AAB to confirm all .so files pass. • Test on 16 KB emulator — Set up an Android 15 emulator with 16 KB page size enabled, install the app, and verify it launches and runs without crashes. • Document changes — Provide a brief summary of what was upgraded/changed and any libraries that need upstream fixes or workarounds. Deliverables • A release AAB that passes zipalign -c -P 16 with zero flagged libraries • All changes committed to a branch in our GitHub repo (we'll provide access) • A short written summary covering: What was changed per library Any dependency upgrades performed Any known risks or follow-up items Additional Native Modules in the App Beyond the flagged libraries, the app also uses these native modules that should be verified: @intercom/intercom-react-native 8.7.0 @stripe/stripe-react-native 0.38.6 react-native-keychain 10.0.0 react-native-gesture-handler 2.25.0 react-native-maps 1.18.4 react-native-fbsdk-next 13.4.1 @sentry/react-native Custom SDK (bundled locally) Custom Adjoe SDK bundled locally) Ideal Candidate • Experience with React Native + Expo native Android builds • Familiarity with Android NDK, ELF binary alignment, and shared library toolchains • Has previously migrated an app to 16 KB page size compliance • Can set up and test on Android 15 16 KB page size emulator images Contract duration of less than 1 month. Mandatory skills: Android, React Native, Android App Development