核心内核要求

Android 8.0 及更高版本指定了最低内核版本和内核配置,并由供应商测试套件 (VTS) 和无线下载 (OTA) 更新对其进行验证。Android 设备内核必须启用内核 .config 支持以及在运行时通过 procfs 文件系统读取内核配置的选项。

内核 .config 支持

所有设备内核都必须完整启用 android-base.cfg,其中必须包含以下内核配置选项(或其内核版本等效选项):

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

内核版本

对于 Android 9,要求的最低长期支持 (LTS) 内核版本是 4.4.107、4.9.84 和 4.14.42。

  • 2018 年生产的所有 SoC 在推出时都必须采用 4.9.84 版或更高版本的内核。
  • 所有其他 SoC 在推出搭载 Android 9 的 Android 设备时,都必须使用 4.4.107 版或更高版本的内核。
  • 基于 4.14 的设备内核必须包含 4.14.42 或更高版本的 LTS。
  • 发布搭载 Android 8.0 及更高版本的设备时,所有 SoC 仍然需要遵循启用 Treble 所需的内核更改要求,无论发布日期是什么时候。
  • 升级到 Android 8.0 或更高版本的早期 Android 设备可以继续使用原来的基础内核版本。

如需详细了解 LTS 内核,请参阅长期稳定内核Android 通用内核

设备树支持

如果平台不支持高级配置与电源接口 (ACPI) 规范,内核中必须启用设备树支持,且引导加载程序必须将硬件描述以设备树的形式传递给内核。设备树还必须可供 Android 读取,且必须能够将供应商和 ODM 特有的参数传递给 Android。 以及所有其他设备和子系统专用的 CONFIG_OF_* 内核配置选项都是强制性的选项。

使用 DebugFS

供应商接口的实现不能依赖 DebugFS 文件系统来访问调试信息。这是因为在 Android 7.0-10 中,可以启用 DebugFS,但 VTS 测试可以在卸载 DebugFS 的情况下完成。

在 Android 11 中,无法在生产设备上访问或装载 DebugFS,因此设备制造商必须将其移除。在 Android 11 之前,dumpstateDebugFS 访问 binder 统计信息。由于发布时搭载 Android 11 或更高版本的用户 build 无法访问 DebugFS,因此 dumpstate 会从 binderfs 访问 binder 统计信息。如需启用 Binderfs,请启用内核配置 CONFIG_ANDROID_BINDERFS

在 Android 11 中,VTS 强制执行以下两项要求:

  • 设备的内核配置中未启用 CONFIG_DEBUG_FS
  • /proc/filesystems 下未列出 DebugFS

Android 11 中的 DebugFS

下表介绍了 Android 11 中如何支持这三个类别。请注意,以下内容仅适用于 userdebug build,因为 DebugFS 无法装载到 user build 中。对于发布时搭载 Android 11 的设备,切勿在 user build 中装载 DebugFS

用例 Android 12 userdebug build
启动过程中的一次性 DebugFS 文件初始化。该访问仅在启动过程中发生一次 供应商 init 执行此操作。
生成 bug 报告:dumpstate HAL 会读取 DebugFS 文件,这些文件将成为 bug 报告的一部分。 由 dumpstate 工具调用时,在 DumpstateBoard() 内通过 dumpstate HAL 完成。
设备专用测试和验证 adb root 和 shell