安装新的 Android 应用或游戏对大多数 Android 设备来说并不是什么难事,但许多低端设备在安装大型应用时仍然会遇到困难,这主要是由于处理器性能较弱或存储速度较慢。尽管存在这些限制,Google 仍然可以对 Android 进行优化,以便在低端硬件上运行得更好。例如,Google 在 Android 16 中引入了一项新功能,旨在加快新应用的安装速度,尤其是在低端设备上。

具体来说,Google 在 Android 16 中新增了一项名为“云编译”(cloud compilation)的功能。云编译是一项允许应用构建产物(artifacts)通过从 Google Play 商店下载的文件加载,而不是在设备上本地生成的技术。通过将应用编译过程转移到云端,Android 16 能够加快低端设备上应用的安装速度,特别是对那些需要编译大量代码的应用而言。
为了更详细地解释,我需要先简要说明一下这些“应用构建产物”到底是什么。Android 操作系统使用 Android Runtime(ART)来执行应用代码。当安装一个新的应用时,Android 会使用名为 dex2oat 的工具,将 APK(Android 安装包)中的 .dex 文件(包含已编译的字节码)转换生成一个或多个应用构建产物。通常来说,这些产物能帮助操作系统更快、更高效地加载大多数应用,因此它们是 Android 系统中至关重要的组成部分。具体来说,这些产物可以包括以下几种形式:
- .vdex 文件,包含用于加快运行时字节码验证的元数据;
- .odex 文件,包含应用中方法的预编译代码;
- .art 文件,包含 ART 内部表示的某些字符串或类的信息,用于加快应用启动速度。

在安装新应用时,性能强劲的高端 Android 手机可以迅速生成这些构建产物。而那些配备低性能处理器和慢速存储芯片的廉价入门级手机,在生成这些构建产物时可能会花费更长的时间,特别是在处理包含大量 .dex 文件的 APK 时。如今高速网络已经非常普及,因此直接连同 APK 文件一起下载预编译好的应用构建产物,可能会更快。这正是 Android 16 的“云编译”功能所实现的目标。
Android 16 的云编译功能在安装过程中无需再运行 dex2oat 工具。Android 16 不再在设备上本地生成应用构建产物,而是从 Google Play 商店下载的 SDM 文件中提取这些产物。SDM 是 Android 16 中引入的一种新文件格式,专门用于存储云编译生成的构建产物。SDM 的全称是 Secure Dex Metadata(安全 dex 元数据),并且这些文件使用与 APK 相同的密钥进行签名。

虽然 Android 16 启用了云编译功能,但目前这项功能似乎尚未真正投入使用。这很可能是因为 Google 还需要对 Play 商店进行配置,使其能够使用 dex2oat 生成这些应用构建产物,并在 Android 16 设备安装应用时将其与 APK 文件一同提供。搭建这一基础设施并推向市场可能是一个耗时的过程。此外,考虑到这项功能会增加用户需要下载的数据量,Google 很可能会在初期将其设为“可选启用”(opt-in)。
我们也非常期待看看这项功能是否能显著加快应用安装速度。了解这些对用户乃至大多数开发者来说都“看不见”的底层改进,总是很有意思。如果我们获得了关于 Android 16 云编译功能的更多信息,一定会第一时间告诉你。