Android is bringing support for 16kb page sizes to the ecosystem.
Google Play communicated a deadline for all apps targeting Android 15+ devices must support 16kb page size by November 1st, 2025.
UE 5.6.0 is released with support for 16kb page size.
UE 5.6.1 removed “useLegacyPackaging=true” requirement.
UE 5.7.0 will have updated libplaycore.so / libplaycore_static.a and warn if bundled libraries are not 16kb page size aligned.
UE 4.27 is released in 4.27-plus branch.
Google Play Asset delivery library (libplaycore.so) was updated to 1.15.4 in ue5-main (will be part of UE 5.7.0) and 4.27-plus branches. We switched UE4 to use static version libplaycore_static.a instead, UE5 is using static already.
For UE 5.6.0 we will only support useLegacyPackaging=true for 16kb page size, bExtractNativeLibs should set to True in the relevant Engine.ini. This limitation was removed in UE 5.6.1.
Every dynamic library (.so) in .apk/.aab needs to be updated with new linker flags for correct section alignment. Please consider rebuilding your dynamic libraries in time if you’re a plugin developer.
You can use %NDKROOT%\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-readelf.exe --program-headers file.so to check if your .so is compatible, 16kb alignment will show up as 0x4000 or higher, while 4kb alignment will be 0x1000. Rebuild your libraries with NDK r27c or later if possible.
See the documentation how to test your apps on Pixel 8 or 9 series phones.
for instace, this is the google anlaysis on our app where a bunch of 3rd party libs are remain 4KB page size.
1, re-compile these lib requires source code which we don’t have
2, we cannot gurantee vendor to provide 16KB lib on time
@yuhang061 Unfortunately there is no solution to patch existing libraries to support 16kb page size right now, we had to rebuild all our bundled libraries. Please contact the vendors in time to provide new rebuild libraries.
I just landed Google Play Asset delivery library update to 1.15.4 in ue5-main (will be part of UE 5.7.0) and 4.27-plus branches. We switched UE4 to use static version libplaycore_static.a instead, UE5 is using static already. Let me know if you have any questions.
Thank you very much for your work. I am using version 4.27-plus with ndk 27.2, but my game no longer works on Android 10 devices.
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Unwind_Resume" referenced by "/data/app/com.myGame-rFwmG1C_V8yFBiuuorT_ig==/lib/arm64/libUE4.so"...
FATAL EXCEPTION: main
Process: com.myGame, PID: 10457
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_Unwind_Resume" referenced by "/data/app/com.myGame-rFwmG1C_V8yFBiuuorT_ig==/lib/arm64/libUE4.so"...
at java.lang.Runtime.loadLibrary0(Runtime.java:1071)
at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
at java.lang.System.loadLibrary(System.java:1667)
at com.epicgames.ue4.GameActivity.<clinit>(GameActivity.java:411)
at java.lang.Class.newInstance(Native Method)
at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:1)
at android.app.Instrumentation.newActivity(Instrumentation.java:1251)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3535)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3806)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Are you using the normal 4.27 from the Epic Games Launcher or the 4.27-plus version? Using the normal version with your linked ndk, I still get the following message:
Libs do not support 16kb pages:
base/lib/arm64-v8a/libUE4.so
base/lib/arm64-v8a/libtry-alloc-lib.so