On this page (7 sections)
What Google requires
- “All apps targeting Android 15 (API level 35) and higher must support 16 KB memory page sizes on 64-bit devices on Google Play.”
- Since 1 November 2025, new apps and updates to existing apps that target Android 15+ must support 16 KB page sizes.
- “Starting February 1, 2027, if your app updates don’t support 16 KB memory page sizes, you won’t be able to release these updates.”
Sources: Android Developers, Support 16 KB page sizes, and the Android Developers Blog announcement (linked in the sources panel; verified 22 September 2026). Community threads mention case-by-case extensions granted through Play Console; Google’s documentation does not describe them, so plan on the dates above.
Who is affected
| App type | Needs changes? | Why |
|---|---|---|
| Java / Kotlin only, no .so files in the bundle | No (test anyway) | No native code to align |
| Native code you build (C/C++, NDK) | Yes, if built with NDK r27 or older without flags | ELF segments must be 16 KB aligned |
| Third-party SDKs with native code (ads, analytics, media, crash reporting, maps, payments) | Yes, until the vendor ships aligned builds | You cannot re-link a vendor .so — only upgrade or replace it |
| Flutter | Usually via plugins | The Flutter engine is aligned in current releases; old plugin versions are not |
| React Native | Usually via native modules | Hermes and RN core are aligned in current releases; old modules are not |
| Unity / Unreal | Yes, on old engine versions | Engine and plugin .so files; both vendors publish 16 KB guidance |
How to check your bundle
- Play Console — the app’s policy status or the release warnings name the issue; the App bundle explorer lists the native libraries per ABI.
- APK Analyzer (Android Studio → Build → Analyze APK): the
libfolder shows an alignment column with warnings for misaligned.sofiles. zipalign -c -P 16 -v 4 app.apk— must end with “Verification successful”. Bundles:bundletool dump config --bundle=app.aab | grep alignmentshould showPAGE_ALIGNMENT_16K.- ELF check per library:
llvm-objdump -p lib.so | grep LOAD— every LOAD segment needsalign 2**14or higher;2**12/2**13fail. Google’scheck_elf_alignment.shscript does this for a whole APK. - Run it on a 16 KB device or emulator image (
adb shell getconf PAGE_SIZEreturns 16384) — a warning dialog on first launch means the app is running in backcompat mode.
Alignment itself can only be proved from the built bundle, so nothing you paste into a form can confirm it. What a configuration file can show is whether the toolchain is capable of producing aligned libraries at all and which dependencies are likely to ship native code — our update readiness checker flags exactly that, and says plainly that the 16 KB check itself still has to happen on the artefact.
How the fix works
Native code you build
- NDK r28 or newer links 16 KB-aligned by default — no flags needed.
- NDK r27 and older: add
-Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384to the linker flags (LOCAL_LDFLAGSin ndk-build,target_link_optionsin CMake). - Remove hard-coded
4096/PAGE_SIZEassumptions; usegetpagesize()orsysconf(_SC_PAGESIZE). Custom allocators andmmaparithmetic are the usual suspects. - Android Gradle Plugin 8.5.1 or newer packages uncompressed libraries with 16 KB zip alignment. If AGP cannot be upgraded yet,
packagingOptions { jniLibs { useLegacyPackaging = true } }compresses the libraries as a fallback — slower installs, but compliant.
Third-party SDKs
Upgrade to the vendor’s 16 KB-ready release; if the vendor has none, replace the SDK. Most major SDKs shipped aligned builds during 2025, but transitive dependencies pinned by an old plugin or a resolutionStrategy often drag the old version back in — check the resolved dependency tree, not the declared one.
Flutter, React Native, Unity
- Flutter: upgrade the Flutter SDK and every plugin with native code; then verify the plugin
.sofiles in the bundle, because a plugin can declare compatibility and still ship an old binary. - React Native: upgrade to a release with aligned Hermes/core, then each native module; check
node_modules/**/androidfor prebuilt.sofiles. - Unity: move to a Unity version with 16 KB support and rebuild; re-import Google and third-party plugins. Unreal: follow Epic’s Android page-size guidance.
Backcompat mode is not compliance
Android 16 can run a misaligned app in 16 KB backcompat mode and shows the user a warning. That keeps the app from crashing for some users; it does not satisfy the Play requirement and it is not a reliable state for every library. The bundle itself has to be aligned.
What we do
- Pull the native-library inventory from your bundle (or from the dependency tree if you cannot share a build) and run the alignment checks per ABI.
- Attribute each failing
.soto its owner: your code, a plugin, or a transitive SDK. - Upgrade, rebuild or replace — including the AGP/NDK/Gradle changes that come with it — and re-verify with
zipalignandllvm-objdump. - Test on a 16 KB device image, then produce the release bundle and rollout notes. If the same release needs the target API 36 or Billing Library 8 change, we do them together.
Checklist
- Every
.soin every ABI folder passes the ELF alignment check zipalign -c -P 16succeeds on the APK;bundletoolshowsPAGE_ALIGNMENT_16K- NDK r28+ or linker flags in place for own native code; no hard-coded page size
- AGP 8.5.1+ (or legacy packaging as a documented fallback)
- Third-party SDKs at 16 KB-ready versions, verified in the resolved dependency tree
- Tested on a 16 KB emulator image or Pixel device without the backcompat warning
- Release plan aligned with the target API level and Billing Library requirements
Frequently asked questions
How do I know whether my app is affected by the 16 KB page size requirement?
If your app targets Android 15 (API level 35) or higher and ships any native code, it is in scope — and because target API 36 is now mandatory for updates, that is most apps that still release. Pure Java/Kotlin apps generally pass already. Native code arrives more often through SDKs and frameworks than through your own source: Flutter and React Native engines, Unity, and ads, analytics, database, media or security SDKs all bundle .so files.
Related: 16 KB Page Size Fix
Can I check 16 KB alignment without building the app?
Not conclusively. Alignment is a property of the compiled .so files, so it can only be proved from an APK or bundle — with zipalign -c -P 16, bundletool, APK Analyzer or an ELF segment check. What a build file can tell you is whether the toolchain is even capable of producing aligned libraries and which dependencies are likely to carry native code. Our update readiness checker reports exactly that and says plainly that the alignment check itself still has to happen on the artefact.
Related: 16 KB Page Size Fix, Android Update Readiness Checker
What happens if my app does not support 16 KB page sizes?
Today an affected app either runs in a compatibility mode on 16 KB devices — with a warning on first launch — or fails outright, and Play Console flags the bundle. From 1 February 2027, updates that do not support 16 KB page sizes cannot be released at all. The requirement has applied to new apps and updates targeting Android 15 or higher since 1 November 2025.
Related: 16 KB Page Size Fix, App Publishing Deadlines