Key takeaways
- Google Play requires apps targeting Android 15 (API level 35) and higher to support 16 KB memory page sizes on 64-bit devices. Google says that starting February 1, 2027, updates that don't support 16 KB page sizes can't be released.
- Only apps with native code are affected: .so files inside the APK. In my experience every Flutter Android release build ships native libraries, so Flutter apps are in scope.
- Google says apps built with AGP 8.5.1 or higher and NDK r28 or higher, with 16 KB-compatible prebuilt dependencies, are 16 KB compatible by default.
- Flutter 3.38 (November 12, 2025) moved the default NDK to r28, which Flutter calls the minimum for 16 KB alignment. Flutter 3.35 still defaulted to NDK r27.
- On a 16 KB device, an app with 4 KB-aligned .so files that are stored uncompressed in the APK can run in a backcompat mode that shows a warning on first launch. Google says that without recompiling, apps won't work on 16 KB devices in future Android releases.
Pricing an app? Try the free app cost calculator or get a range for your project in the instant quote.
If Play Console warns that your app doesn't support 16 KB memory page sizes, the fix is usually a newer Android Gradle Plugin and NDK, plus updated native dependencies. Google requires apps targeting Android 15 and higher to support 16 KB pages on 64-bit devices, and says that starting February 1, 2027, updates without it can't be released. In my experience every Flutter Android app ships native code, so Flutter apps are in scope, and Flutter 3.38 is the first version that defaults to the NDK Google's fix needs.
The facts below come from Google's page-size guide, Google's May 2025 announcement, Flutter's 3.38 release post and Flutter's source code, as listed in the sources. I checked each one on October 18, 2026.
Disclosure: App369 is my studio. I build and fix Android and iOS apps, mostly in Flutter, and the last section mentions what I sell. Google doesn't pay me for anything on this page.
The requirement and the dates
| Date | What Google said | Source |
|---|---|---|
| May 2025 | From November 1, 2025, new apps and updates targeting Android 15+ must support 16 KB page sizes | Android Developers Blog |
| As of October 16, 2026 | Apps targeting Android 15+ must support 16 KB pages on 64-bit devices. From February 1, 2027, updates that don't can't be released | Google page-size guide |
The guide, last updated October 16, 2026, is the newer source, so I'd plan around February 1, 2027 and check Play Console for any warning on your own app.
Google's guide also explains why: devices with more memory are moving to 16 KB pages, and without recompiling, apps won't work on 16 KB devices in future Android releases. On a 16 KB device today, an app with 4 KB-aligned .so files that are stored uncompressed in the APK can run in a backcompat mode that shows a warning when it first launches.
Who is affected
Only apps with native code: .so files in the APK's lib folder. That includes apps that use native code through an SDK or library, not just apps you wrote C or C++ for. In my experience, every Flutter Android release build has native libraries in that folder: libflutter.so for the engine and libapp.so for your compiled Dart code. Analyze APK, below, shows them.
Check your app
Google's guide lists three checks:
- Analyze APK in Android Studio. Open Build > Analyze APK, pick the APK and look in the
libfolder. The Alignment column shows warnings for files with alignment problems. check_elf_alignment.shon Linux or macOS. Run it on the APK. It reports whether each library is aligned.zipalignfor zip alignment. Google's example uses the copy in build-tools 35.0.0:zipalign -v -c -P 16 4 APK_NAME.apk
Fix it
Google's shortcut: if you update to AGP 8.5.1 or higher and NDK r28 or higher, and your prebuilt dependencies are 16 KB compatible, the app is 16 KB compatible by default.
| If you're on | Google's guidance |
|---|---|
| AGP below 8.5.1 | Upgrade to 8.5.1 or higher. Google notes that with AGP 8.3 to 8.5, an app can seem to work but fail to install when Play builds it from a bundle. If you can't upgrade, Google gives a useLegacyPackaging setting |
| NDK r28 or higher | Compiles 16 KB-aligned by default |
| NDK r27 or lower | Add the linker flags -Wl,-z,max-page-size=16384 and -Wl,-z,common-page-size=16384 |
Prebuilt .so files from an SDK | Get a 16 KB-compatible version from the vendor, or recompile them the same way |
Flutter apps
| Flutter version | Default ndkVersion in Flutter's source |
|---|---|
| 3.35 (August 14, 2025) | 27.0.12077973 (NDK r27) |
| 3.38 (November 12, 2025) | 28.2.13676358 (NDK r28) |
Flutter's 3.38 post calls upgrading "essential preparation" for the 16 KB requirement and says NDK r28 is the minimum for the alignment.
What to do in a Flutter app:
- Upgrade Flutter to 3.38 or later, or set
ndkVersioninandroid/app/build.gradleto an r28 version if you can't upgrade yet. My advice: upgrading is safer, because Flutter's 3.38 post lists a set of Gradle, AGP and Kotlin versions that Flutter tested together. - Check the AGP version in
android/settings.gradle(or thebuildscriptblock on older projects). It needs to be 8.5.1 or higher. - Update plugins that ship native libraries. My advice: after building, run Analyze APK and look at every
.sofile. A plugin with an old prebuilt library is the usual reason an app still fails after the Flutter upgrade. - Test on a 16 KB emulator. Google's guide covers Android 15 emulator images with 16 KB page sizes. My advice: install a build there and make sure it starts without the compatibility warning.
If the Flutter upgrade breaks the Android build first, see the v1 embedding fix and the Gradle plugin fix. Google Play also requires new apps and updates to target API 36 since August 31, 2026: see the target API 36 guide.
Need a hand?
If Play Console flags your app for 16 KB page sizes, or an update fails after the fix, the App Fix Ticket covers it in two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days and comes as a pull request. Or send me a short description.
Frequently asked questions
- What is the Google Play 16 KB page size requirement?
- Google says all apps targeting Android 15 (API level 35) and higher must support 16 KB memory page sizes on 64-bit devices on Google Play, and that starting February 1, 2027, app updates that don't support 16 KB page sizes can't be released.
- Does my Flutter app need to change for 16 KB pages?
- In my experience Flutter apps ship native libraries, so they are in scope. Flutter's 3.38 release notes say 3.38 moved the default NDK to r28, the minimum Flutter names for 16 KB alignment. On an older Flutter, upgrade, or set a newer ndkVersion, and check every plugin that ships its own native libraries.
- How do I check whether my APK supports 16 KB pages?
- Google lists three ways: Android Studio's Analyze APK shows alignment warnings for .so files in the lib folder, the check_elf_alignment.sh script checks ELF alignment on Linux or macOS, and zipalign -v -c -P 16 4 checks zip alignment.
- Which AGP and NDK versions do I need?
- Google says AGP 8.5.1 or higher and NDK r28 or higher make an app 16 KB compatible by default, as long as prebuilt dependencies are 16 KB compatible too. With NDK r27 or lower, Google gives linker flags to set a 16 KB max page size.
- What happened to the November 1, 2025 date?
- Google's May 2025 Android Developers Blog post said that from November 1, 2025, new apps and updates targeting Android 15+ must support 16 KB pages. Google's page-size guide, last updated October 16, 2026, says that starting February 1, 2027, updates without 16 KB support can't be released. Check Play Console for the dates that apply to your app.
Sources
- Android Developers, Support 16 KB page sizes (last updated October 16, 2026)
- Android Developers Blog, "Prepare your apps for Google Play's 16 KB page size compatibility requirement" (May 2025)
- Flutter blog, What's new in Flutter 3.38
- Flutter on GitHub, FlutterExtension.kt at 3.35.0 (default ndkVersion)
- Flutter on GitHub, FlutterExtension.kt at 3.38.0 (default ndkVersion)
- Flutter release archive (macOS)
Fixed-price services
Want this done at a fixed price?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
Related Resources
Related guides
Google Play Requires Target API 36: The Android 16 Update
Since August 31, 2026, Google Play requires new apps and updates to target Android 16 (API level 36), with an extension to November 1, 2026. What changes when you target API 36 (edge-to-edge, predictive back, large-screen orientation), which Flutter versions target it by default, and what to test, from Google's docs checked October 18, 2026.
Read morePlay Billing Library 7 Deprecated: Update to 8 by November 1
Google Play Billing Library 7 hit its deadline on August 31, 2026: new apps and updates must use version 8 or later, and Google says its extension runs until November 1, 2026. What changed in version 8, which Flutter in_app_purchase and RevenueCat versions include it, and how to clear the Play Console warning, from Google's docs checked October 18, 2026.
Read moreFlutter UIScene Migration: Fix Launch Crashes on Xcode 27
Xcode 27 shipped on September 14, 2026, and Flutter's docs say Flutter iOS apps built with it that haven't adopted the UIScene lifecycle fail to launch. Which Flutter versions migrate automatically, the manual AppDelegate and Info.plist changes, and what plugins need, from Flutter's and Apple's docs checked October 18, 2026.
Read more