Android系统架构
Android 是谷歌开发的一款基于 Linux 内核的操作系统。系统架构分为五层,从下到上依次是Linux内核层、硬件抽象层、系统运行库层、应用框架层和应用层。
通俗点从下往上依次是:
- Linux kernel 层,很大一部分内容是驱动程序
- HAL 层,对下封装驱动硬件操作,对上向 App 提供统一稳定的驱动操作接口
- Native层,主要是 C/C++ 库以及 Java 虚拟机
- Java 层,主要是 Java 库,系统服务等
- App 层,一些系统和三方APP
我们常说的 framework 大多数指的是中间三层的开发,即 Java层、Native层、HAL层
以 Android 系统启动过程为主线,以进程的视角来学习 Android 系统全貌,更为清晰明了
Android 系统启动过程由上图从下往上的一个过程是由 Boot Loader 引导开机,然后依次进入 -> Kernel -> Native -> Framework -> App
- kernel 层主要向上提供了驱动,Hal 层加以封装后,向上提供驱动程序功能
- Native 层通过 init 进程启动了很多守护进程用于支持系统的运转
- Java 层通过 Zygote 孵化了 Java 守护进程,用于支持系统的运行和 App 的运行
作者:Android小瓜
链接:https://www.zhihu.com/question/48175796/answer/2905633138
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/48175796/answer/2905633138
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Framework 开发做什么
谷歌几乎每年都会发布最新的 AOSP 原生代码,AOSP 原生代码只支持极少数几款手机,比如 Pixel。
芯片厂商根据自己的芯片的特点修改 AOSP ,让其可以在自己芯片上跑起来
方案厂商根据自己开发的设备特点(主要是外设 如wifi 蓝牙 传感器等),修改芯片厂提供的源码,使得软件能在方案厂商的开发板上跑起来
大部分做产品的厂商拿到的就是芯片厂商提供的开发板硬件和系统源码,产品厂商主要工作就是:
- 添加自己的硬件、驱动、HAL和硬件系统服务,硬件的提供商可能会提供相应软件支持
- 定制系统 App,比如 Launcher Setting System UI Message Camera 等
- 开发厂商自己的系统 App,比如 音视频播放器 应用商店 主题 红外遥控等
- 个性化功能开发,比如软件多开,手机分身,语音变声,录屏,双卡双待等等
- 集成一些常用三方应用,比如 微信 淘宝 爱奇艺等
- 系统稳定性 性能 安全相关优化
- 系统裁剪
方案厂商提供的系统源码并不完美,App 中很多的 Bug 可能是 Framework 层导致的,产品在上市前需要针对系统 App 和热门三方 App 及游戏进行测试,解决掉 Framework 中存在的 bug。Framework 开发的主要工作就是解决这些 bug 并协助系统 App 的开发,同时可能要做一些新特性开发,系统性能和安全相关的工作。
Framework 中无穷无尽的 bug 也不能怪芯片厂商和方案厂商,因为 Android 打娘胎里出来就有数不清的 bug,在这里可以查看 aosp 相关的 bug 信息。