---
title: Android 16 KB compatibility
url: https://calvin.my/posts/android-16-kb-compatibility
published: 2025-07-24
updated: 2026-09-16
category: Development
tags:
- Android
- Play Store
- APK
summary: Android 15 introduced support for 16 KB memory page sizes, and Google Play now checks APK compatibility during review. Apps using only Java or Kotlin are generally unaffected, but applications containing direct or library-provided native code may require changes. Developers can identify native libraries in APK contents, rebuild direct native code with NDK r28, or update dependencies. Compatibility can be tested on supported emulators or Pixel devices, checked with Google’s alignment tool, or confirmed through Play Console upload results.
---

# Android 16 KB compatibility

In 2024, Android announced support for 16 KB page sizes, starting with Android 15. In recent months, the Google Play Store has started to check for 16 KB compatibility in the app review process. If your APK is not compatible, you might get a review issue.

![](https://camy-pub.s3.ap-southeast-1.amazonaws.com/6a82db80-d08f-436b-811d-457f99913065.png)

* * *

## Am I impacted?

If you get errors like the above in your submission, then you are impacted. To check this before a submission, you can follow the steps below:

1. Do you use NDK?

   The 16 KB requirements generally do not impact the Java or Kotlin code. It does, however, if you use Native (C/C++) code, via the NDK. This includes direct or indirect use of native code (from the libraries you added to your apps). If you do not use any NDK, then your app is automatically compatible.

2. How do I know if my app uses any NDK?

   For a quick check, you can use the Analyze APK tool in Android Studio.

   ![](https://camy-pub.s3.ap-southeast-1.amazonaws.com/89c08775-db69-49fd-bcb4-1dfdb1de9ace.png)

   Look for the "lib" directory. If you use native code, you can observe ".so" files here.

   ![](https://camy-pub.s3.ap-southeast-1.amazonaws.com/3f30ccfa-0f1c-4fd3-b869-bbb89be6cd6a.png)

* * *

## How to comply?

1. If you use Native code directly, you need to upgrade your NDK to r28 and rebuild your application. Refer [here](https://developer.android.com/guide/practices/page-sizes#compile-16-kb-alignment) for more details.

2. If you use Native code indirectly from other libraries, refer to the individual guide to upgrade the libraries to a compatible version.

* * *

## How do I verify my fixes?

There are several options.

1. Build and test your application in a 16 KB enabled emulator.

   ![](https://camy-pub.s3.ap-southeast-1.amazonaws.com/11179fb7-8ed3-4496-b935-f7e81068676e.png)

   OR,

2. On a Pixel phone, enable the 16 KB option in developer mode.

   OR,

3. Download this [script](https://android.googlesource.com/platform/system/extras/+/refs/heads/main/tools/check_elf_alignment.sh) provided by Google to check your native libraries' alignment.&nbsp;

   ```bash
   chmod +x ./check_elf_alignment.sh 

   ./check_elf_alignment.sh my.apk
   ```

   You should get a list of native libraries and whether or not they are 16 KB aligned.

   ```bash
   Recursively analyzing ./my.apk

   NOTICE: Zip alignment check requires build-tools version 35.0.0-rc3 or higher.
     You can install the latest build-tools by running the below command
     and updating your $PATH:

       sdkmanager "build-tools;35.0.0-rc3"

   === ELF alignment ===
   ...
   ...
   ...
   \e[31mFound 11 unaligned libs (only arm64-v8a/x86_64 libs need to be aligned).\e[0m
   ```

   OR,

4. When you upload your app bundle to the Play Store, it will be checked.

   Go to "Latest releases and bundles" -\> "Latest app bundles" and view the details of the fixed version.

   ![](https://camy-pub.s3.ap-southeast-1.amazonaws.com/331bf68f-6c2f-4281-959c-6fee8a56ff69.png)
