Android 通用内核

AOSP 通用内核是长期支持 (LTS) 内核的下游,包含与 Android 社区相关但尚未合并到 LTS 的补丁程序。这些补丁程序可能包括:

  • 针对 Android 需求定制的功能(例如交互式 cpufreq 调节器)。
  • 由于实现方面的问题而被上游拒绝的功能(例如 MTP/PTP、Paranoid Networking)。
  • 可供 Android 设备使用但仍处于开发上游阶段的功能(例如 Energy Aware Scheduling/EAS)。
  • 对其他方有用的供应商/OEM 功能(例如 sdcardfs)。

通用内核列表

要查看 Android 通用内核列表,请访问 https://android.googlesource.com/kernel/common/(如下所示)。

图 1. Android 通用内核列表。

与 LTS 的区别

与 LTS (4.4.40) 相比,Android 通用内核更改了 679 行,插入了 56172 行并删除了 3340 行(截止 2017 年 2 月)。

图 2. 各个版本的 Android 特定代码。

最大的特性包括:

  • 13.8% SoC (arch/arm64, arch/x86)
  • 9.2% USB (drivers/usb)
  • 8.2% Energy Aware Scheduling (kernel/sched)
  • 8.2% Atomic Display Framework (drivers/video/adf)
  • 8.0% 网络 (net/netfilter)
  • 6.2% sdcardfs (fs/sdcardfs)
  • 5.0% Verity (drivers/md)
  • 3.7% 输入 (drivers/input/misc)
  • 3.3% FIQ 调试程序 (drivers/staging/android/fiq_debugger)
  • 2.4% Cpufreq (drivers/cpufreq)
  • 2.2% Goldfish 模拟器 (drivers/platform/goldfish)

要求

所有 AOSP 通用内核必须提供以下各项:

  • 用于下游合作伙伴及时获取最新更新(包括所有 LTS 补丁程序)的方法。
  • 用于确保新功能开发不会影响从 AOSP 通用内核合并的机制(即使之前的 Android 版本也不受影响)。
  • 用于下游合作伙伴轻松识别属于 Android 安全公告 (ASB) 范围内的安全补丁程序的方法。如果 OEM 尝试包含公告中未列出的补丁程序,则满足运营商有关全面重新认证的要求。

此外,必须在 AOSP 通用内核上定期执行测试,并且在分支通过测试时对其进行标记。

LTS 合并

为确保下游合作伙伴能够及时获取最新更新(包括所有 LTS 补丁程序),android-X.Y 将从 LTS 获取定期合并,并通过自动 VTS、CTS 和编译/启动测试进行验证。

Android-dessert 版本分支

为确保新功能开发不会影响从 AOSP 通用内核合并(即使之前的 Android 版本也不受影响),android-X.Y-androidRel 是从 Android-dessert 最初版本之前的 android-X.Y 克隆的,它会从 LTS 获取定期合并,并基于相关的 Android 版本进行测试。例如,android-4.4-n 分支从 LTS 4.4.y 分支获取合并。

Android-release 版本分支

为确保下游合作伙伴能够轻松识别属于 ASB 范围内的安全补丁程序,android-X.Y-androidRel-type 是从 Android 版本发布时的 android-X.Y-androidRel 克隆的,并且只能获取公告中列出的补丁程序。

在确认与公告相关的补丁程序合并到版本分支之后,相应分支将用 ASB 级别进行标记。例如,标记 ASB-2017-10-05 表示相应版本分支包含 2017 年 10 月 5 日发布的 Android 安全公告中的补丁程序。父分支包含这些安全补丁程序,因此,如果 android-4.4-o-release 分支标记为 ASB-2017-10-01,则 android-4.4-o 和 android-4.4 也是用相应公告中的补丁程序进行更新的最新版本。例如:

  • 在发布 Android N MR1 之前,android-4.4-n-mr1 是从 android-4.4-n 克隆的。
  • 只有 ASB 中列出的补丁程序才会进行合并,允许 OEM(运营商对其有严格的要求,旨在避免对安全更新进行全面重新认证)查找公告中列出的补丁程序。
  • android-4.4-n-mr2 将由 android-4.4-n-mr1 以及这两个版本之间合并的 LTS 补丁程序构成。
  • 每个月 ASB 公开发布时,相应版本分支都会使用公告中提及的所有上游补丁程序进行更新(公告中提及的设备特定补丁程序不会应用于通用内核)。

定期测试

所有 AOSP 通用内核都会定期接受测试,并且测试结果将公开发布。具体而言:

分支层次结构 (android-4.4)

android-4.4 内核的分支层次结构使用了以下结构:

图 3. android-4.4 内核的分支层次结构。

准则

Android 实现应使用以下内核准则:

  • 将新的 AOSP 通用内核用作上游合并源。
    • 要从 LTS 获取补丁程序,需从 android-X.Y 合并。
      • 在开发阶段定期合并。
      • 将设备更新至新的 Android 版本时,需从 android-X.Y 分支或目标版本的版本分支合并(例如,要更新至 Nougat MR2,需从 android-4.4-n-mr2 分支合并)。
    • 如果运营商对安全更新补丁程序有限制,则需从版本分支合并,以便进行安全更新。
  • 将修复程序发送至上游主线内核、LTS 内核或 AOSP 通用内核。