1、Android系统层级
从上往下依次为应用层(System Apps)、应用框架层(Java API Framework)、运行层(系统Native库和Android运行时环境)、硬件抽象层(HAL)、Liunx 内核(Marco Kernel)。每一层都有对应的进程、系统库。
应用层(System Apps/Other Apps)
该层中包含所有的Android应用程序,包括电话、相机、日历等,我们自己开发的Android应用程序也被安装在这层。
应用框架层(Java API Framework)
这一层主要提供构建应用程序是可能用到的各种API,Android自带的一些核心应用就是使用这些API完成。
运行层
1)系统Native库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用
2)Android运行时环境
Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。虚拟机也在该层启动。
每个进程都有一个Dalivik虚拟机实例。
硬件抽象层(HAL)
由于Linux内核采用GPL协议,如果把驱动放在内核层,需要开发驱动程序源码,这势必会影响到硬件厂商的核心利益。
为了解决这个问题Android增加了HAL层,HAL层遵循Apache协议,不需要硬件厂商开放驱动程序的源码。
硬件厂商提供动态库,在内核中只提供一些基本的读写接口操作,Android根据不同的需求,加载不同的动态库。
Linux 内核
Android系统的基础是Linux内核,Linux内核的安全机制为Android提供相应的保障。
2、如何在Framework层添加系统服务
2.1 Kernel层
开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。
如果需要添加的硬件设备需要驱动的话,需要在此层添加。
2.2 HAL层
HAL 可定