Android 15 大变更:支持 16K 内存分页,所有 native app 必须重编译~

android15-base-page_size.png

本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!

一直以来,Android 系统仅支持 4KB 的内存分页大小,这在一定程度上限制了整体的性能。而随着设备制造商不断打造具有更大物理内存 (RAM) 的设备,这些设备中的许多可能会配置 16 KB(最终更大)的分页大小,作为 Android 系统设计者,是时候考虑是否需要支持 16KB 的设备了。

所以,Google 团队的 Kalesh SinghJuan Yescas 于 2023 年针对 16KB 分页大小的 Android 性能表现进行了详细测试。并发现,在 Pixel 6 和 Pixel 6 Pro 上进行的 Benchmark 显示:

  • 内存 page 引发的错误大幅减少
  • 系统 boot 加快,缩短了 1.5%,约 0.8s
  • App 启动加快,平均节省约 3.16% 的时间。其中部分 App 优化尤为显著,比如:Google Search 节省了 17% 的时间;Google News 更是节省了30% 的时间
  • 手机电量消耗平均下降了 4.56%
  • 等等

详细的信息见《Android - 16K Page Size Support pdf》论文,充分说明了各项 benchmark 的结果、影响等细节。

android-16K-support.png

最终 Google 决定在 Android 15 上支持 16K 内存分页大小的设备。可是既存的 App 都是以 4KB 内存分页大小进行的编译、部署,想要支持运行在 16KB 上是不行的,所以 Android 官方提供了一些指南进行说明。

笔者以国民 app WeChat 为例,查看是否会受影响、是否真得受到了影响、以及如何处理。

1. 如何判断 App 是否会受到影响?

如果 App 使用了任何原生代码,则无关 App 的 target SDK version,必然会受影响。反之,如果仅使用以 Java 编程语言或 Kotlin 编写的代码(包括所有 LIB / SDK),那么该 App 已经支持 16 KB 设备,不用额外适配。如果不确定自己的 App 是否使用了原生代码、或者引用的 LIB / SDK 是否使用了原生代码,则可以使用 AS 自带的 APK Analyzer 进行识别。

话说回来,即便可以肯定自己的 App 没有使用到原生代码,为防止以外造成的回退,仍然推荐在时间富余的情况在 16KB 的环境中运行和测试一番。

是否使用了原生代码?

App 符合以下任一情况,则会使用原生代码:

  • 使用任何 C/C++(原生)代码。如果 App 使用 Android NDK,那么该 App 将使用原生代码
  • 会与使用它们的任何第三方原生库或依赖项相关联
  • 由使用设备上的原生库的第三方 App 构建器构建

使用 APK 分析器识别原生库

我们从网上下载 Wechat 的 apk 包,直接拖入 AS,会自动使用 APK Analyzer 工具进行分析(当然也可以按照路径逐步打开:File -> Open -> xxx.apk)

wechat-as-apk-analyzer.png

打开识别到的 lib 目录,可以看到一堆 so 文件,毫无悬念肯定使用到了原生代码。

wechat-as-apk-analyzer-native.png

2. 直接测试 app 是否受到影响?

正如前面章节提到的,如果 App 使用到了原生代码,一定要在 Android 15 16KB 内存分页的设备上进行测试,以查看 App 是否出现任何回归问题。

对于仍然在开发中的 Android 15 来说,官方提供了多个方式以供验证:

我们采用比较简单、易用的模拟器方式进行验证,首先得部署该环境。

部署基于 16 KB 的 Android 15 模拟器

重要提示: 由于 Android 15 Beta 2 中的已知问题,使用 LLDB 进行调试目前尚不支持 16 KB 模拟器系统映像。

可以按以下步骤操作:

  1. 基于 16 KB 的 Android 15 模拟器系统映像与 Android Studio Jellyfish | 2023.3.1 或更高版本兼容。不过,为了在使用 Android 15 Beta 版时获得最佳体验,请下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechMerger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值