Independent product studio · Swedenhello@karelialabs.com

Guide

Unity and Google Play's 16 KB page size rule: versions, plugins and how to check

Short answerUnity 2021.3.48f1, 2022.3.56f1, 6000.0.38f1 and 6000.1 or later support 16 KB pages, per Unity staff. Update the editor, the Burst package and every plugin that ships a .so file, rebuild, and check each 64-bit library before you upload.

Updated

What the Play Console message means

Google's page size guide says that 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 from February 1, 2027 updates without 16 KB support can't be released. Play Console shows a compatibility warning for a bundle that doesn't support them.

Google Play already requires new apps and updates to target API level 36 (Google's target API rule; Wear OS, Android Automotive OS, Android TV and Android XR have lower levels). So for a phone or tablet app, the 16 KB rule applies to every update that contains native code.

The warning is about native libraries, the .so files for the 64-bit ABIs arm64-v8a and x86_64. A library fails when its LOAD segments are aligned to 4 KB instead of 16 KB, or when it is stored uncompressed and does not start on a 16 KB boundary in the zip. In a Unity build that means the engine's own libraries and every plugin or SDK that ships a .so file.

Which Unity versions support 16 KB pages

Unity staff list these versions in the Unity forum:

  • Unity 6000.1 and later
  • Unity 6000.0.38f1 and later
  • Unity 2022.3.56f1 and later
  • Unity 2021.3.48f1 and later, under extended LTS support for Enterprise and Industry customers

Unity says that apps compiled for 4 KB pages did not work on 16 KB devices in its tests, that users of older versions need to update to one of these, and that a 16 KB build still runs on 4 KB devices. Android's Unity guide also lists 16 KB support for Unity 2021, 2022 and Unity 6. Google's guide and the vendor pages linked here were read on 15 November 2026.

Find the library that fails

  1. List the native libraries in the build. In a macOS, Linux or Git Bash terminal: unzip -l MyGame.aab | grep '\.so$'. In Windows PowerShell: tar -tf .\MyGame.aab | Select-String '\.so$'. In an AAB they are under base/lib/<abi>/, in an APK under lib/<abi>/.
  2. Look at the arm64-v8a and x86_64 folders; the rule is about 64-bit devices. Match each file name against the table below to see whether it comes from the engine, a plugin or an SDK.
  3. Check how each library is aligned. Ship Check (below) checks all of them at once. In Android Studio, Build > Analyze APK... shows an Alignment column that warns about every library that is not 16 KB aligned.
LibraryComes fromWhat to do
libunity.so, libil2cpp.so, libmain.soThe Unity engineUpdate Unity to a version listed above, then rebuild.
lib_burst_generated.soThe Burst packageUpdate Burst to 1.8.21 or later, as Unity's post says.
libc++_shared.soThe NDK's C++ runtimeGoogle says copies from NDK r26 and lower are not always 16 KB aligned. Update the plugin that ships it.
libAk*.soWwise (Audiokinetic)Audiokinetic says 16 KB support came in Wwise 2023.1.7. Update Wwise and its Unity integration.
libfmod*.soFMODWe have not checked which FMOD release adds 16 KB support. Use a release built with NDK r28 or newer, or ask FMOD.
Any other .so fileA native plugin or SDKUnity's advice: ask the plugin's maker for a 16 KB build and update it.

Unity versions with 16 KB support also warn during a build, and in a plugin's properties, when a plugin's .so file is not 16 KB aligned. Ship Check names libunity.so, libil2cpp.so and libmain.so as Unity and the Wwise and FMOD libraries by vendor; other libraries, Burst's among them, are listed by file name.

Fix it

  1. Update the editor to one of the versions above.
  2. Update every native plugin and SDK, and the Burst package if you use it.
  3. Rebuild the AAB and check it again before you upload it.

Play Console may also suggest Android Gradle Plugin 8.5 or higher. Google's page says AGP 8.5.1 or higher is what aligns uncompressed libraries in the zip, but it does not change how a library was compiled: in a Unity forum thread, a project already on AGP 8.10.0 was refused, and APK Analyzer showed 4 KB ELF alignment in its libraries. In that thread Unity staff confirmed that Unity 6000.3.0f1 has full 16 KB support and asked for the build, so if Unity's own libraries still fail on a supported version, report it to Unity.

Check the build before you upload it

  1. Open Ship Check and drop the .aab or .apk on the page. It is free, runs in your browser and nothing is uploaded.
  2. Read the 16 KB results. Every 64-bit library is checked for LOAD segment alignment and for Google's RELRO rule, and each failing library is named with the engine, plugin or SDK that ships it where Ship Check knows it. A library it does not know is listed by file name.
  3. On a build server, run Ship Check CLI: node shipcheck.mjs MyGame.aab --fail-on=error. It exits with code 1 when a check fails, so the pipeline stops before the upload. Add --date 2027-02-01 to see the build as it will be judged on that day.

Alignment is not the only test. Google's page also has a rule for the GNU_RELRO segment: if it ends inside a 16 KB page that also holds writable data, the app crashes with a segmentation fault (SIGSEGV) on a 16 KB device when that data is written. Google says this typically happens with libraries built with NDK r27 or lower without the 16 KB flags.

Ship Check reads what is in the file. It cannot see your Play Console, and a passing report does not guarantee that Google Play accepts the app.

Ship Check report for a synthetic test build: a Unity library and a React Native library with their documented fixes, and an unknown library
A test build: the Unity library gets the versions Unity lists

The same rule in other engines

FAQ

Does a Unity game without native plugins need a new build?

Yes. The engine itself is native code, and Unity says apps compiled for 4 KB pages did not work on 16 KB devices in its tests. Update to a version with 16 KB support and rebuild.

Will the 16 KB build still run on 4 KB devices?

Yes. Unity says 16 KB support is in addition to 4 KB, and the same executable supports both page sizes.

Google flags lib_burst_generated.so. What do I do?

Update the Burst package to 1.8.21 or later, as Unity's forum post says, and rebuild.

Does Unity 2020 or older get 16 KB support?

Unity's post says the feature is available in 2021 Extended Support, 2022 LTS and Unity 6, and asks users of older versions to update to one of them.

Is my build uploaded anywhere?

No. Ship Check reads the file in your browser, and Ship Check CLI reads it on your own machine.

More guides

More from Karelia Labs