The 16 KB Page Size Requirement That Can Block Your Next Play Update
19 Jun 2026 · 5 min read · Erik van Kammen
Quick answer: Newer Android devices can use 16 KB memory pages instead of the old 4 KB. Apps with native code compiled for 4 KB pages can crash or fail to load on those devices. Google Play now requires apps that target Android 15 (API 35) or higher to support 16 KB page sizes: this applied to new apps and updates from November 1, 2025, with an update deadline for existing apps in 2026. The catch is that native code often arrives through an SDK, so teams that write no C or C++ themselves can still be affected. Here is how to detect it and fix it before your next update is blocked.
This is one of the quieter Play requirements of the last year, and one of the most surprising, because it can block an update to an app that has worked fine for years. If your app ships any native library, directly or through a dependency, it is worth ten minutes to check.
A memory page is the smallest block of memory the operating system manages. Android historically used 4 KB pages. Newer 64-bit Android devices can run with 16 KB pages, which improves performance, but native libraries (the .so files in your APK or App Bundle) have to be built to support the larger page size. A library compiled only for 4 KB pages can fail to load on a 16 KB device.
Google Play requires apps targeting Android 15 (API 35) or higher to support 16 KB page sizes. Per Google's developer documentation, this applied to new apps and updates from November 1, 2025, and existing apps faced an update deadline in 2026. Apps with no native code at all are generally unaffected, but you should still confirm that, because the native code is often not yours.
The trap is transitive native code. Plenty of common SDKs ship their own .so files: media and video players, image and ML libraries, game engines, crash reporters, some database and encryption libraries, and ad or analytics SDKs. If any of them was built for 4 KB pages and you have not updated it, your App Bundle contains a library that is not 16 KB ready, even though your own code is pure Kotlin or Java.
That is why the first step is to look at what is actually inside the binary, not at your own source. See our guides on hidden SDKs in your app binary and auditing third-party SDKs.
| Your situation | 16 KB impact | Action |
|---|---|---|
| No native libraries in the build | Generally unaffected | Confirm there are no .so files, then move on |
| Your own native code | Must be rebuilt for 16 KB | Recompile with current tooling and verify alignment |
| Native code from an SDK | Depends on the SDK version | Update the SDK to a 16 KB-ready release |
| Targeting below Android 15 | Requirement not yet forced | Plan for it before you raise targetSdk |
.so native library and which SDK it comes from.-Wl,-z,max-page-size=16384.Because this is entirely about the contents of the compiled artifact, a pre-submission binary scan is a natural fit. A scan can inventory the native libraries shipped in your APK or App Bundle, including the ones pulled in by SDKs, so you can see exactly which libraries and which dependencies still need a 16 KB rebuild before you upload. That turns a vague "will this update be rejected" into a concrete list. For the related target-API timing, see Android target API level requirements.
Generally no. The requirement is about native .so libraries. If your App Bundle contains none, you are usually unaffected, but you should still verify, because SDKs can introduce native code you did not expect.
A 16 KB-ready library has its load segments aligned to 16 KB boundaries. You can inspect the ELF alignment of each .so file, or check the SDK vendor's release notes for a stated 16 KB compatibility version.
Rebuild with a current NDK that aligns to 16 KB by default, or pass the linker flag -Wl,-z,max-page-size=16384. Then verify the resulting .so files are aligned and test on a 16 KB device or emulator.
Apps that target Android 15 (API 35) or higher must support 16 KB page sizes for Google Play. Plan the 16 KB work before you raise your targetSdk to 35 or above.
Everything technical in this post is checkable from the build itself, and that is exactly what AppCompliance does: upload an iOS or Android build, and minutes later you have every issue that would get it rejected, with the exact fix next to it.
One email when we open the doors. No spam, just the launch.