NDK r28 links native libraries with 16 KB maximum page size by default. If you build with an older toolchain, add -Wl,-z,max-page-size=16384 to the linker flags and rebuild every shared object, including third-party .so files you did not compile yourself.

Alignment matters for three things at once: the ELF segments, uncompressed assets that you map directly, and any buffer you hand to mmap. A library built for 4 KB pages loads on a 16 KB device, but the loader has to copy segments that are not aligned, which costs both memory and start-up time.

Our checklist: rebuild all .so files with the new flag, run check_elf_alignment.sh from the NDK, then install on a 16 KB device image and read logcat for loader warnings. The whole audit takes an afternoon for a game with four libraries and one audio middleware blob.