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 之前,dumpstate
从 DebugFS
访问 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 |