GKI 介绍
基本概述
背景:
Google Android Kernel Team 经过多年准备,开始在Android 11的研发版本推行GKI (Generic Kernel Image,通用内核镜像)设计,旨在消除AOSP社区的碎片化。类似GSI(Generic System Image,通用系统镜像)的设计理念,由Google 统一发布boot.img给全球用户。从Android 11开始,Google 强制要求Kernel5.4 及以上版本进行GKI认证。
原理:
- GKI 由Google Android Kernel团队负责统一维护,全球厂商通过Upstream 方式参与合作开发。
- GKI 保持Kernel基本接口KMI(Kernel Module Interface)稳定不变,厂商私有和差异通过Kernel Module动态加载 ,以此独立更新boot.img
- 提供Abigail等工具辅助厂商保持驱动代码和KMI兼容。
特点:
-
保留专有特性
通过Vendor Hook技术,将一些调度、内存、IO、Camera等优化算法保留在Vendor分区,且兼容GKI标准。 -
设备驱动全模块化
通过Device Link技术,解决了模块加载依赖顺序的问题,全模块化降低系统耦合,整体提升系统的鲁棒性。且极大程度地方便ODM/OEM厂商进行二次开发和适配,满足多层次用户需求。 -
Go 32bit项目不适用GKI
Android Go 32bit 产品将维持原认证方式不变,无需适配GKI。
优势:
- 更安全: Kernel小版本每三个月升级一次,直达最终用户。
- 更稳定: 全球Android厂商资源共享,同进同退。
- 成本更低: 下游厂商无需投入资源维护Kernel核心代码
- 上市更快:Kernel独立升级无需考虑兼容适配问题。
GKI版本
-
GKI 1.0
适用于Kernel5.4版本。
过度阶段,量产发布可以附带对Kernel核心代码的私有改动(不影响KMI)。 -
GKI 2.0
适用于Kernel5.10及以上版本。
完全和Google同步,量产必须使用Google认证和发布的