APK & App Bundles

Check Android 16 KB Page-Size Compatibility in Native Libraries

Android 16 KB page-size compatibility is a native-binary and packaging question, not something solved by raising targetSdk alone. Apps that include native .so libraries must check their own code and every bundled SDK. A Java-only application can still acquire native dependencies indirectly.

By Updated 2 min read

First determine whether native code is present

Inspect the release APK set for lib/<abi>/ entries. Include native libraries introduced by game engines, database SDKs, image processors and advertising dependencies. Review the AAB-generated APKs when device-specific delivery is involved.

Do not assume a recent target API or a successful debug install proves page-size support. Android's 16 KB guidance covers both build-tool requirements and runtime assumptions.

Separate ELF alignment from ZIP alignment

Native libraries have internal ELF segment alignment requirements. The APK container also has alignment requirements for directly loaded uncompressed native libraries. Passing one check does not automatically satisfy the other.

A packaging check for the relevant APK can include:

BASH · REFERENCE EXAMPLE
zipalign -c -P 16 -v 4 app-release.apk

This checks archive alignment; it does not replace inspection of ELF load segments or execution on a 16 KB environment. Use the Android-documented ELF inspection tools and checks appropriate to your platform. zipalign reference.

Rebuild rather than patching the final package

Update the NDK/build pipeline and native dependencies according to the official compatibility guidance. If a third-party .so is incompatible, obtain a supported vendor build or replace the dependency. Renaming the library, changing a Gradle number or recompressing the APK does not repair compiled ELF assumptions.

Keep the original and rebuilt artifacts so you can demonstrate which native files changed. Verify signing after packaging with the normal release pipeline.

Test runtime assumptions too

Native code can incorrectly assume a fixed page size in allocation, memory mapping or alignment logic. A binary that appears well packaged may still fail when those code paths execute. Exercise startup, media processing, database access and any feature using the affected library on a documented 16 KB test environment.

Capture the exact device or emulator configuration and the failing native stack when a problem occurs. A vague “works on Android 16” note is insufficient because OS version alone does not identify page size.

Record evidence for each library

Maintain a table of library name, origin, version, ELF check, packaging check and runtime test status. Mark untested dependencies explicitly. APKLint can help identify packaged native components, but its general APK report is not a full 16 KB certification. Recheck current Google Play applicability and deadlines in the official guide before a production submission.

Sources and further reading

  1. Android Developers: Support 16 KB page sizes
  2. Android Developers: zipalign

Reference review: 22 September 2026. Examples illustrate the workflow; check your installed versions, release artifact and account-specific Console requirements before applying them. This guide is not a claim that APKLint executed your project or verified your private account.

APKLint

Android inspection tools and practical release guides. About APKLint · Report a correction