核心问题: Android 15 将默认页面大小从 4KB 提升至 16KB,以优化内存性能。但这会导致使用 C/C++ 代码 (Native 代码) 的应用很可能崩溃,除非重新编译并适配 16K 页面大小。
原因:
-
Linux 内核限制: Android 基于 Linux 内核,而 Linux 不支持混合页面大小。
-
CPU 运行模式: CPU 运行时页面大小是全局设置,要么是 4K,要么是 16K,无法混用。
影响:
-
正面影响: 提升系统内存性能,缩短应用启动时间,降低功耗,加快相机启动速度等。
-
负面影响: 使用了 .so 动态库的应用需重新编译才能兼容,否则大概率崩溃。
如何检测:
-
使用 Android Studio Koala Canary 5 及以上版本。
-
下载并运行 VanillaIceCream 的 16k Page Size 模拟器镜像。
-
通过以下命令查看页面大小是否为 16384。
adb shell getconf PAGE_SIZE
适配方案ÿ