8.0版本手机大全,谷歌手机分多少版本( 二 )


Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏 。Android 的 Linux kernel 控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等 。
下载 Android 源码之前,先要安装其构建工具 Repo 来初始化源码 。Repo 是 Android 用来辅助 Git 工作的一个工具 。通过上述我们就可以看出 Android 就是运行在 Linux Kernel 之上的,基于授权版权等原因,它只不过是没有 GNU/Linux 功能那么全面 。为什么会出现这个问题?Android 是基于 Linux 内核的操作系统,但是,运行在 Android 设备上的内核其实与 Google 选择的 LTS 版本 Linux 内核有很大不同 。
在到达每一台 Android 设备前,内核会经历三个阶段的 fork:Google 会先选择某个 LTS(长期支持)版本的 Linux 内核,打上 Android 操作系统的特定补丁,使其成为 Android 通用内核;紧接着,通用内核被交付给高通等 SoC 供应商,打上硬件补丁;最后,SoC 内核再被移交至设备制造商,打上设备特定的各类元件补丁,这也就构成到每台设备中的设备内核 。
这是一个及其漫长的过程,执行多重 fork 并处理数百万行代码大大减慢了整个开发速度 。因此,Android 设备使用的内核相较于 Linux 内核主线要滞后两到三年的时间 。Google 于 10 月份最新发布了 Pixel 4,其 Linux 内核则是 2017 年 11 月发布的 4.14 LTS 版本 。
并且由于过大的工作量,Android 设备通常不获取内核更新,它将永远停留在 4.14 版本上 。再者,各种设备的内核都不尽相同,一台设备的特定内核无法在其他设备上工作 。于是,Google 正试图缩小各 Android 设备内核与主线 Linux 内核间的差距,让设备内核更接近上游内核主线 。在今年的 Linux Plumbers Conference 上,Android 内核团队负责人 Sandeep Patil 表示,他们的目标是从根本上找到 Android 运行所需要的、但不必在给定的硬件上运行的东西,然后将其引入上游并尽可能接近主线 。
Google 的打算是复制其早期工作 Project Treble 以模块化 Android 。Project Treble 用于在 Android 和 HAL(硬件抽象层)之间创建稳定的接口 。与此类似,Google 计划稳定 Linux 的内核 ABI,从而提供一个稳定的写入接口,使硬件供应商可以轻松地插入代码,最终消除特定的设备内核 。
Google 的高级软件工程师 MatthiasM?nnich 展示了一幅预想中的内核体系结构图 。“下一代 Android 设备”内核将由通用内核镜像(Generic Kernel Image,GKI)和多个?GKI?模块构成,特定硬件的驱动程序(可能是闭源驱动)将作为内核模块加载 。总之在该设想中,所有东西都被模块化了 。
考虑到 Android 生态系统的技术壁垒和多样性,这应该不是一件容易的事情 。无论如何,将 Android 设备内核引入主线 Linux 内核肯定会使包括 Android 用户、手机制造商和 Linux 社区等在内的不少人受益 。所以,最近有新闻爆出,谷歌计划将 Android 内核统一至Linux内核主线上,后续其实还有很多工作要完成 。

推荐阅读