Summary
libOpacityCore.so (and the bundled libc++_shared.so) in the published AAR are aligned to 4 KB pages instead of the 16 KB page size now required by Google Play. This blocks production releases of any app that depends on opacity-android / @opacity-labs/react-native-opacity from being accepted for new uploads on Android 15+.
Reproduction
# Download the published AAR from JitPack
curl -sLO https://jitpack.io/com/github/OpacityLabs/opacity-android/6.21.0/opacity-android-6.21.0.aar
unzip -o opacity-android-6.21.0.aar -d opacity-extract
# Inspect LOAD segment alignment with NDK's llvm-readelf
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/<host>/bin/llvm-readelf -l \
opacity-extract/jni/arm64-v8a/libOpacityCore.so | grep LOAD
Evidence
Tested on 6.5.0 and 6.21.0 (latest). Same result on every ABI:
| Library |
ABI |
LOAD alignment |
16 KB compliant? |
libsdk.so |
all 4 |
0x4000 |
✅ |
libOpacityCore.so |
arm64-v8a |
0x1000 |
❌ |
libOpacityCore.so |
armeabi-v7a |
0x1000 |
❌ |
libOpacityCore.so |
x86 |
0x1000 |
❌ |
libOpacityCore.so |
x86_64 |
0x1000 |
❌ |
libc++_shared.so |
all 4 |
0x1000 |
❌ |
libsdk.so is correctly 16 KB aligned, so the migration appears partially done — only libOpacityCore.so and the bundled C++ runtime are missing the alignment fix.
Impact
- Google Play has required 16 KB page size support for new uploads of apps targeting Android 15+ since November 1, 2025 (reference).
- Apps depending on this SDK currently cannot publish updates to the Play Store.
- This is a release blocker for our production app and likely for every other consumer of
opacity-android.
Request
Could you publish a release of opacity-android (and bump @opacity-labs/react-native-opacity accordingly) where libOpacityCore.so is built with -Wl,-z,max-page-size=16384 and the bundled libc++_shared.so is taken from a recent NDK (r27+) so it ships with the same alignment? That should be the only build-flag change needed.
If there's a timeline you can share, that would help us plan our short-term mitigation.
Environment
- Affected versions:
6.5.0 through 6.21.0 (latest at time of filing)
- Verified with: NDK r27.1.12297006,
llvm-readelf from same NDK
- App: React Native (Expo SDK 54, RN 0.81.5, new architecture enabled)
Happy to test a pre-release if you'd like to share a candidate AAR before publishing. Thanks!
@ospfranco
Summary
libOpacityCore.so(and the bundledlibc++_shared.so) in the published AAR are aligned to 4 KB pages instead of the 16 KB page size now required by Google Play. This blocks production releases of any app that depends onopacity-android/@opacity-labs/react-native-opacityfrom being accepted for new uploads on Android 15+.Reproduction
Evidence
Tested on 6.5.0 and 6.21.0 (latest). Same result on every ABI:
libsdk.so0x4000libOpacityCore.so0x1000libOpacityCore.so0x1000libOpacityCore.so0x1000libOpacityCore.so0x1000libc++_shared.so0x1000libsdk.sois correctly 16 KB aligned, so the migration appears partially done — onlylibOpacityCore.soand the bundled C++ runtime are missing the alignment fix.Impact
opacity-android.Request
Could you publish a release of
opacity-android(and bump@opacity-labs/react-native-opacityaccordingly) wherelibOpacityCore.sois built with-Wl,-z,max-page-size=16384and the bundledlibc++_shared.sois taken from a recent NDK (r27+) so it ships with the same alignment? That should be the only build-flag change needed.If there's a timeline you can share, that would help us plan our short-term mitigation.
Environment
6.5.0through6.21.0(latest at time of filing)llvm-readelffrom same NDKHappy to test a pre-release if you'd like to share a candidate AAR before publishing. Thanks!
@ospfranco