Google Play 兼容性要求
随着设备制造商为设备配备更多 RAM 以优化性能,许多制造商将采用更大的页面大小(例如 16 KB)。为了迎接这些即将推出的设备,Google Play 推出了一项新的兼容性要求:自 2025 年 11 月 1 日起,提交到 Google Play 且以搭载 Android 15(API 级别 35)及更高版本的设备为目标平台的所有新应用和现有应用更新都必须支持 16 KB 的页面大小。
支持 16 KB 页面
页面是操作系统管理内存的精细程度。为了全面提升操作系统性能,并让设备制造商可以选择进行此权衡,Android 15(API 级别 35)及更高版本可以采用 4 KB 或 16 KB 页面大小运行。配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但也会获得各种性能改进。
在 Google Pixel 设备上获取 Android 15
如果您使用的是受支持的 Pixel 设备,则可以查看并更新 Android 版本,以通过无线下载的方式获取 Android 15。在大多数情况下,改用 Android 15 不需要重置所有数据,但建议您在设备上安装 Android 15 前对数据进行备份。
支持的 Google Pixel 设备
Android 15 OTA 和下载内容适用于以下 Pixel 设备:
- Pixel 6 和 Pixel 6 Pro
- Pixel 7 和 Pixel 7 Pro
- Pixel 7a
- Pixel Fold
- Pixel Tablet
- Pixel 8 和 Pixel 8 Pro
- Pixel 8a
- Pixel 9、9 Pro、9 Pro XL 和 9 Pro Fold
使用开发者选项在设备上启用 16 KB 模式
从 Android 15 QPR1 开始,您可以使用某些设备上提供的开发者选项,以 16 KB 模式启动设备并执行设备端测试。在使用开发者选项之前,请依次前往设置 > 系统 > 软件更新,并应用所有可用的更新。
此开发者选项适用于以下设备:
- Pixel 8 和 8 Pro(搭载 Android 15 QPR1 或更高版本)
- Pixel 8a(搭载 Android 15 QPR1 或更高版本)
- Pixel 9、9 Pro 和 9 Pro XL(搭载 Android 15 QPR2 Beta 2 或更高版本)
使用 16 KB 切换开关
- 按照开发者选项文档中的指示启用开发者选项。
- 如果检测到设备受 OEM 锁定,系统会显示一个对话框,请用户对手机进行 OEM 解锁。按照相应步骤进行 OEM 解锁。
- 当用户选中“以 16KB 页面大小启动设备”时,/data 和 /metadata 分区必须为
ext4。否则,系统会显示一个对话框,要求用户擦除设备数据。回答“是”会擦除设备数据,并且您必须再次启用开发者选项。 - 16 KB 切换开关现在会显示一个确认切换到 16 KB 的对话框;用户确认后,系统会应用启动 OTA。然后,您可以在 4 KB 到 16 KB 模式之间来回切换,而无需清空数据分区以测试应用行为。
gnustl是std::basic_string
libc++是std::__ndk1::basic_string
libbase是std::__1::basic_string (android)
其中有人提到在build.gradle的arguments中增加(后来发现这个方法才有效)
externalNativeBuild.cmake{
arguments “-DANDROID_STL=c++_shared”
}
或是再cppFlags
externalNativeBuild {
cmake {
cppFlags "-DANDROID_STL=c++_shared"
abiFilters "armeabi-v7a","arm64-v8a"
}
}
https://developer.android.com/ndk/guides/cpp-support?hl=zh-cn#shared_runtimes
https://developer.android.com/ndk/guides/cmake?hl=zh-cn#android_stl
https://developer.unity.cn/projects/687efd5fedbc2aa66b703c86
https://mp.weixin.qq.com/s/Wm5z228D7h_GD47VOmxNLg
每个应用一个 STL
过去,NDK 除了支持 libc++,还支持 GNU libstdc++ 和 STLport。如果应用依赖于预构建库,而构建相应库所使用的 NDK 与构建应用使用的 NDK 不同,需确保其兼容性。
一个应用不得使用多个 C++ 运行时。不同的 STL 互不兼容。举例来说,libc++ 中 std::string 的布局不同于 gnustl。根据某种 STL 编写的代码无法使用以另一种 STL 编写的对象。以上仅举一例,其他不兼容情况不胜枚举。
683

被折叠的 条评论
为什么被折叠?



