android 5.0 内核版本,魅族Android

谷歌系统升级 , 安卓将采用Linux内核 , 满足手机高性能需求 , 你怎么看?

android 5.0 内核版本,魅族Android


首先作为一个前资深的 Android 程序员 , 一定要纠正一下这个问题 , 不是谷歌系统升级 , 安卓「将」采用 Linux 内核 。不是:「将」 。而是 Android 一直就是采用的 Linux 内核 。安卓(Android)本身就是一种基于 Linux 的自由及开放源代码的操作系统 。系统内核Android 是运行于 Linux kernel 之上 , 但并不是 GNU/Linux 。
因为在一般 GNU/Linux 里支持的功能 , Android 大都没有支持 , 包括 Cairo、X11、Alsa、FFmpeg、GTK、Pango 及 Glibc 等都被移除掉了 。Android 又以 Bionic 取代 Glibc、以 Skia 取代 Cairo、再以 opencore 取代 FFmpeg 等等 。
Android 为了达到商业应用 , 必须移除被 GNU GPL 授权证所约束的部份 , 例如 Android 将驱动程序移到 Userspace , 使得 Linux driver 与 Linux kernel 彻底分开 。Bionic/Libc/Kernel/ 并非标准的 Kernel header files 。
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 , 从而提供一个稳定的写入接口 , 使硬件供应商可以轻松地插入代码 , 最终消除特定的设备内核 。

推荐阅读