DEV Community

Cover image for Preparing Your Flutter Apps for Google Play's 16KB Page Size Requirement
Chittaranjan Nayak for Smartters

Posted on

Preparing Your Flutter Apps for Google Play's 16KB Page Size Requirement

Google Play is constantly improving and offering a superior experience in both terms of the users and the developers. One of the major changes that Flutter developers should know about is the new compatibility requirement of memory page size of 16KB. Beginning November 1, 2025, any new apps and app updates to Google Play that are intended to support Android 15 (API level 35) or newer must support the 16KB memory page size on 64-bit devices.

The apparent small change is a very significant one, particularly in the case of apps that have native code. And here is why it is important and, more to the point, how to make your Flutter application ready.

Beginning November 1 st, 2025, all new apps and updates to existing apps submitted to Google Play and aiming at devices with Android 15+ must be built to support 16 KB page sizes.

What's Changing and Why?

Google Play's 16KB Page Size

In the past Android has mostly used 4KB memory pages. But now that the modern devices are more RAM-filled and Google is encouraging faster performance, switching to 16KB pages has a number of advantages:

  • Better Performance: Increased page sizes decrease memory management overhead and make apps launch faster (up to 30 percent faster in some applications), start the camera faster, and are more generally efficient.
  • Less Fragmentation: Heap fragmentation is easier to handle with 16KB pages and this is an essential requirement of memory intensive applications.
  • Improved battery use: Optimization of this sort can also lead to better battery life.

The main point is that in case your app or any of its dependencies (particularly those that use native C/C++ code) make the assumption that the page size is hardcoded to 4KB, it may crash or otherwise malfunction on Android 15+ devices that use 16KB pages

Is Your Flutter App Affected?

Flutter apps usually utilize native code by using multiple plugins and the Flutter engine itself. Thus, there are high chances that your app will be affected, especially in case you:

  1. Use native libraries through the use of plugins (e.g. ads, analytics, camera, machine learning, etc.).
  2. Write custom native code in C/C++.
  3. Are on Flutter, its dependencies, or the Android Gradle Plugin (AGP) and NDK older versions.

How to Check Your App's Compatibility?

Google Play Console offers an opportunity to verify the compliance of your app build right in the App Bundle Explorer. Look for messages related to 16KB native library alignment.
Check Flutter app compatibility for android 15

How to Fix the 16KB Compatibility Issue in Flutter

Here's a comprehensive guide to ensure your Flutter app is compliant:

Update Your Toolchain to the Latest Versions:

  1. Android Gradle Plugin (AGP): Increase the version of AGP to 8.5.1 and above. This is essential since newer versions of AGP usually have in-built support of the latest platform requirements of Android.
  2. NDK Version: NDK version R28 or above.
  3. Flutter SDK: Make sure that your Flutter SDK is kept up to date on the latest stable release. This guarantees that you will receive the most up-to-date incompatibility issues on platforms and improvements.
  4. Dependencies: Upgrade all your project dependencies (in pubspec.yaml) to the latest version that is compatible. Most common SDKs to Flutter already provide 16KB compatible versions.

For AGP and NDK, check your android/build.gradle and android/app/build.gradle files.

Rebuild All Native Libraries:

Even if you don't have custom native code, the native libraries bundled by Flutter and your plugins need to be rebuilt with 16KB alignment. Updating your AGP, NDK, and Flutter SDK typically handles this automatically during the build process.

Test Thoroughly on 16KB Enabled Devices/Emulators:

This is a very crucial step. Do not jump into the conclusion that your changes have solved the problem without testing.

  • Android 15 Beta Emulators: Android Studio will allow you to create an emulator with an Android 15 system image and turn on 16KB page support in the advanced emulator settings.
  • Physical Devices: In case you have Pixel devices with Android 15 installed, you can enable Developer Options > "Use 16 KB memory pages" and run your app on it.

To verify the page size on a device you can do so by

adb shell getconf PAGE_SIZE
Enter fullscreen mode Exit fullscreen mode

Analyze App Size with DevTools:

The Flutter DevTools has an App Size tool that enables you to examine the build of your app and discover what is making it big.

Run flutter build appbundle --analyze-size and then open the created JSON file in DevTools.

Conclusion

The Google play compatibility feature of Android 15+ that requires 16KB is a significant step towards Android app performance optimization. Through updating your Flutter toolchain, inspecting any native code, and testing well, you will be able to make your app automatically fit this new standard. Moreover, to ensure that you can easily satisfy this particular requirement, the general best practices of optimizing the size of your apps will not only allow you to satisfy this requirement, but will also optimize the overall user experience of your Flutter apps on Google Play. Don not leave it too late to prepare your apps, start now!


Frequently Asked Questions

1. What happens if my Flutter app isn’t compatible with 16KB page size on Android 15?

A. If your Flutter app isn’t updated for 16KB memory pages, it may crash, perform poorly, or fail Google Play submission for Android 15+. Updating your toolchain and testing on Android 15 is essential for compatibility.

2. How do I test my Flutter app for 16KB page size support?

A. You can test your Flutter app on an Android 15 emulator with 16KB pages enabled, or on a Pixel device running Android 15 with Developer Options > “Use 16 KB memory pages” turned on. Use adb shell getconf PAGE_SIZE to verify.

3. How do I make my Flutter app ready for 16KB memory pages?

A. To make your Flutter app ready for Android 15, update your Flutter SDK, Android Gradle Plugin (AGP 8.5+), NDK (R28+), and all dependencies. Rebuild your app and test on Android 15 emulators or devices to ensure compliance.


Want to stay updated with more such latest tech news or need help building your next digital product?
Connect with Smartters on LinkedIn or visit our Website.
Let’s turn ideas into impactful solutions.

Top comments (15)

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni • Edited

environment:
sdk: '>=3.3.0-279.0.dev <4.0.0'

dependencies:
flutter:
sdk: flutter

cupertino_icons: ^1.0.8
get: ^4.7.2
gap: ^3.0.1
shimmer: ^3.0.0
dio: ^5.9.0
shared_preferences: ^2.5.3
cached_network_image: ^3.4.1
country_code_picker: ^3.4.0
pin_input_text_field: ^4.5.2
uuid: ^4.3.3
intl: ^0.20.2
open_file: ^3.5.10
url_launcher: ^6.3.2
image_picker: ^1.2.0
lottie: ^3.3.1
flutter_svg: ^2.0.13
facebook_app_events: ^0.20.1
awesome_notifications: ^0.10.1
flutter_rating_bar: ^4.0.1
swipe_to: ^1.0.6
flutter_widget_from_html: ^0.17.0
flutter_html: ^3.0.0
youtube_player_flutter: ^9.1.2
flutter_image_slideshow: ^0.1.6
firebase_core: ^4.0.0
firebase_database: ^12.0.0
firebase_messaging: ^16.0.0
firebase_storage: ^13.0.0
firebase_crashlytics: ^5.0.0
firebase_analytics: ^12.0.0
firebase_auth: ^6.0.1
razorpay_flutter: ^1.4.0
flutter_pdfview: ^1.4.1+1
pdf: ^3.11.3
geocoding: ^4.0.0
geolocator: ^14.0.2
google_maps_flutter: ^2.12.3
flutter_compass: ^0.8.0
camera: ^0.11.2
permission_handler: ^12.0.1
path_provider: ^2.1.5
screenshot: ^3.0.0
app_settings: ^6.1.1
agora_rtc_engine: ^6.5.2
flutter_ringtone_player: ^4.0.0+4
proximity_sensor: ^1.3.8
share_plus: ^11.1.0
photo_view: ^0.15.0
webview_flutter: ^4.13.0
in_app_update: ^4.2.3
flutter_sound: ^9.28.0
audioplayers: ^6.5.0
app_links: ^6.4.1
connectivity_plus: ^6.1.5
in_app_review: ^2.0.9
wakelock_plus: ^1.3.2

xml: any
http: any
webview_flutter_android: any
webview_flutter_wkwebview: any
phonepe_payment_sdk: ^2.0.3
clevertap_plugin: ^3.5.1
advertising_id: ^2.7.1
timezone: ^0.10.1
dotted_border: ^2.1.0
android_play_install_referrer: ^0.4.0
clarity_flutter: ^1.3.0
truecaller_sdk: ^1.0.1
appsflyer_sdk: ^6.17.3
flutter_dotenv: ^6.0.0

dev_dependencies:
flutter_test:
sdk: flutter

flutter_lints: ^6.0.0
fluttertoast: ^8.2.12

my pubspec is updated with all the latest versions, still
my apps warning, App must support 16 KB memory page sizes

Collapse
 
cyberpride profile image
Emmanuel Adenuga

use minSdk 23,
compile and target sdk 35 or 36

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

I already have 35 sdk

plugins {
id "com.android.application"
// START: FlutterFire Configuration
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
// END: FlutterFire Configuration
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}

def flutterVersionCode = '1'
def flutterVersionName = '5.0.3'
//def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
//if (flutterVersionCode == null) {
// flutterVersionCode = '8'
//}
//
//def flutterVersionName = localProperties.getProperty('flutter.versionName')
//if (flutterVersionName == null) {
// flutterVersionName = '1.0.8'
//}

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
namespace "com.poojapath.customer"
compileSdk 35
ndkVersion "27.0.12077973"

compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

kotlinOptions {
    jvmTarget = JavaVersion.VERSION_11.toString()
}

sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "com.poojapath.customer"
    // You can update the following values to match your application needs.
    // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
    minSdkVersion 24
    targetSdkVersion 35
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}
signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.debug
        minifyEnabled false
        shrinkResources false
    }
}
Enter fullscreen mode Exit fullscreen mode

}

flutter {
source '../..'
}

dependencies {

}

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Thanks, it also helped, all the comments were helpful indeed.

Collapse
 
chittaranjan_nayak_c632ae profile image
Chittaranjan Nayak Smartters

Update your compile SDK

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Would you mind telling me, that if I dont have a Pixel Real device how would I test that i Have reached compatibility or not. Since I dont think it would be a good idea to upload app and try if warning goes, since it would take so many updates.
Also if you can guide me through it will be helpful. Since on play console, agora and pdf dependencies show the culprits..

Thread Thread
 
chittaranjan_nayak_c632ae profile image
Chittaranjan Nayak Smartters

You can try with Android 15 beta emulators and aditionally run flutter build appbundle --analyze-size and then open the created JSON file in DevTools to visualize.

Thread Thread
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Thanks, this helped a lot!

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Why you deleted my comment, without answering?

Collapse
 
chittaranjan_nayak_c632ae profile image
Chittaranjan Nayak Smartters

its still there and I have not deleted and I answered also

Collapse
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Actually somehow it disappeared for almost a day, so i thought. Maybe it was this website's glitch.

Thread Thread
 
syahrul_hajji_8a5e3d81c44 profile image
Syahrul Hajji

Lib : flutter_pdfview: ^1.4.1+1 update to flutter_pdfview: ^1.4.2-beta.1
that can be resolved ur problem.

Thread Thread
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

Thanks, this helped

Thread Thread
 
sastha_sankarcj_52d0fbe profile image
SASTHA SANKAR C J

which is the least flutter version to use?
and also which u used?

Thread Thread
 
zaid_syni_05ff81fb2cce5e1 profile image
Zaid syni

dev.to/zaid_syni_05ff81fb2cce5e1/f...

Go through this, it will help you