Flutter and Google Play's 16 KB Page Size Requirement: How to Check and Fix Your App (2026)
Does my Flutter app need 16 KB page size support for Google Play?
Yes, if it targets Android 15 (API level 35) or higher, which any app meeting Play's current target API rules does. Google's Android developer documentation says all such apps must support 16 KB memory page sizes on 64-bit devices, and that from 1 February 2027 updates that don't support them can't be released. For most Flutter apps the Flutter engine itself is already fine. The risk is in your build setup, an old Android Gradle Plugin (AGP), and in plugins that ship their own native .so libraries. You can check in about ten minutes with Play Console, the APK Analyzer or zipalign.
This guide covers what the requirement means for a Flutter app, how to check yours, the usual fixes, and how to test before you ship. It reflects Google's page as last updated on 16 October 2026.
What changed, and the dates
Android has historically used 4 KB memory pages. From Android 15, devices can be configured with 16 KB pages, which Google says improve app launch times under memory pressure, power use during launch, and camera start-up. Native libraries built only for 4 KB pages can fail to load on those devices.
- 1 November 2025. Google Play's original date for new apps and updates targeting Android 15+ to support 16 KB pages, announced on the Android Developers Blog in May 2025. Developers could request an extension.
- 1 February 2027. The date now on Google's page-sizes documentation: from then, updates that don't support 16 KB pages can't be released.
Treat the February 2027 date as the hard stop and fix it before your next big release, not in January. Play Console shows a compatibility warning on affected releases, so you'll usually see it coming. If you're also catching up on target API levels, read our note on the target API 36 deadline alongside this one.
Why most Flutter apps are close already
A Flutter Android app always contains native code: the Flutter engine (libflutter.so) and your compiled Dart code (libapp.so). The Flutter team has stated that Flutter supports 16 KB page sizes from the SDK side, and that alignment for third-party plugins is the responsibility of each plugin's maintainers. So the usual problems are:
| Where | What goes wrong | Typical fix |
|---|---|---|
| Android Gradle Plugin | AGP older than 8.5.1 doesn't 16 KB zip-align uncompressed libraries in bundles | Upgrade AGP to 8.5.1 or higher |
Plugins with prebuilt .so files | A plugin ships a library with 4 KB ELF alignment | Update the plugin, or replace it if no aligned version exists |
| Your own C/C++ (FFI) code | Built with NDK r27 or lower without 16 KB linker flags | Build with NDK r28+, or add the linker flags |
| Code that assumes 4 KB | Hard-coded PAGE_SIZE or 4096 in native code | Use getpagesize() or sysconf(_SC_PAGESIZE) |
How to check your app in ten minutes
- Look in Play Console. Open your latest release in App bundle explorer. Google shows a compatibility warning when a bundle isn't 16 KB ready.
- Build a release bundle. Run
flutter build appbundle --release, then check what alignment it requests withbundletool dump config --bundle=app-release.aab | grep alignment.PAGE_ALIGNMENT_16Kis what you want.PAGE_ALIGNMENT_4Kmeans the APKs Play builds will have 4 KB-aligned libraries. - Open an APK in APK Analyzer. In Android Studio, use Build > Analyze APK. Look in the
libfolder: the Alignment column flags libraries with problems, which tells you which plugin to look at. - Run zipalign. With build-tools 35.0.0 or higher:
zipalign -c -P 16 -v 4 app-release.apk. The last line should say "Verification successful". - Check ELF alignment if needed. Google's
check_elf_alignment.shscript, orllvm-objdump -pon each.so, shows the LOAD segment alignment. Values of2**14or higher are fine.2**13or lower are not.
Step 2 matters for Flutter because Play doesn't install your bundle. It builds APKs from it, so an APK you built locally can pass while the bundle still asks for 4 KB alignment.
The fixes, in order
- Upgrade AGP to 8.5.1 or higher. In current Flutter projects the version sits in
android/settings.gradleorsettings.gradle.kts, in thecom.android.applicationplugin line. Older projects set it inandroid/build.gradle. Upgrade Gradle to a version that AGP supports at the same time. - Upgrade Flutter and your plugins. Run
flutter upgrade, thenflutter pub outdatedand update plugins that ship native code, such as databases, media, ML or crypto libraries. - Rebuild and recheck. Repeat the bundletool and zipalign checks. If one library is still unaligned, find the plugin that ships it and check its issue tracker.
- If you can't upgrade AGP yet. Google documents a fallback: set
jniLibs { useLegacyPackaging = true }inpackagingOptionsso libraries are compressed and extracted at install. It works, but the installed app takes more space. Our app size review routine helps you keep an eye on that. - For your own native code. NDK r28 and higher compile 16 KB-aligned by default. With r27 or lower, add
-Wl,-z,max-page-size=16384and-Wl,-z,common-page-size=16384to your linker flags.
Test in a 16 KB environment
Passing alignment checks doesn't prove the app runs. Test it:
- Emulator. In Android Studio's SDK Manager, install a "Google APIs Experimental 16 KB Page Size" system image for Android 15 or higher and create a virtual device with it.
- Pixel phone. Pixel 8, 8 Pro and 8a (Android 15 QPR1 or higher), Pixel 9, 9 Pro and 9 Pro XL (Android 15 QPR2 or higher) and Pixel 9a (Android 16 or higher) have a "Boot with 16KB page size" developer option.
- Confirm the mode.
adb shell getconf PAGE_SIZEshould return16384.
On a 16 KB device, an app with 4 KB-aligned libraries may run in a backcompat mode and show a warning at launch. Treat that warning as a failure. Then ship through a staged rollout and watch crashes and ANRs; our guides to staged rollouts and Android vitals thresholds cover what to watch.
Add it to your release checklist
Once you've fixed it, keep it fixed. A new plugin can quietly bring back a 4 KB library. Add two lines to your Flutter and Firebase release checklist: run the bundletool alignment check on every release bundle, and look for the Play Console compatibility warning before you start a rollout.
Honest limits: this is a guide for typical Flutter and Firebase apps. Games built on engines, apps with heavy custom native code and apps with custom memory allocators have extra steps that Google documents separately.
FAQ
What is the deadline for 16 KB page size support on Google Play?
Google's page-sizes documentation says that from 1 February 2027, updates to apps targeting Android 15 or higher can't be released unless they support 16 KB memory page sizes on 64-bit devices.
Is Flutter compatible with 16 KB page sizes?
The Flutter engine supports 16 KB page sizes. Problems usually come from an Android Gradle Plugin older than 8.5.1 or from plugins that ship their own native libraries with 4 KB alignment.
How do I check if my Flutter app supports 16 KB pages?
Check Play Console's App bundle explorer for a warning, run bundletool dump config on your bundle and look for PAGE_ALIGNMENT_16K, and run zipalign -c -P 16 -v 4 on a release APK.
Do I need to change my Dart code?
Usually not. Dart code is compiled into a library that Flutter's tooling aligns. Only native code that assumes a 4 KB page size, such as a hard-coded PAGE_SIZE, needs changes.
Sources
- Android Developers: support 16 KB page sizes (checked 2026-10-26)
- Android Developers Blog: prepare your apps for Google Play's 16 KB requirement (May 2025) (checked 2026-10-26)
- Flutter on GitHub: 16 KB page size support and plugin responsibility (checked 2026-10-26)