第一章:Android系统特性与平台架构
Android平台架构:
图1.1 google官方 Android平台架构图
Android系统分为5大层:
Linux Kernel(linux内核)——liunx内核层
Hardware Abstraction Layer(硬件抽象层)——硬件抽象层
Native C/C++ Libraries(本地C/C++库)、Android Runtime(Android运行环境)——系统运行库层
Java API Framework(Java API框架)——应用框架层
Sysrem Apps(系统应用)——应用层
liunx内核层
Linux Kernel(linux内核)主要包括:
Power Management(电源管理)、WIFI驱动、USB驱动、Shared Memory(共享内存)、Camera(相机驱动)、Bluetooth(蓝牙驱动)、keypad(矩阵按键)、Display(显示驱动)、Binder(IPC进程间通信)、Audio(音频驱动)
Android使用linux内核为其提供了安全的IPC机制,数据隔离,用户系统,硬件驱动等。
硬件抽象层
Hardware Abstraction Layer(硬件抽象层):
HAL层是为linux系统内核提供与硬件交互的中间接口层,屏蔽了硬件驱动实现细节,实现了硬件设备的驱动,为操作系统内核提供硬件操作的接口。(例如串口开发 应用程序—>驱动程序open() —>HAL_open()—>硬件)
系统运行库层
Native C/C++ Libraries(本地C/C++库):
Android系统运行的底层原生C/C++库。(即android系统为linux内核提供的C/C++方法原生库,linux运行的环境为C/C++;为Android NDK开发提供原生开发库)
Android Runtime(Android运行环境):
ART:预编译AOT和及时编译JIT、GC
Android虚拟机(Dalvik)
ART与Android虚拟机提供了将java代码或dex文件转换为linux内核可以执行的C/C++代码的解释功能。
应用框架层
Java API Framework(Java API框架):
Android为应用开发提供的系统组件API。(应用开发提供API,Android ROM定制开发)
应用层
Sysrem Apps(系统应用):
Android系统的应用程序,即APP。
个人总结:
Android系统通过linux内核操作计算机物理设备资源;
HAL层为Android系统提供了硬件底层驱动,为控制外部输入输出设备提供了交互方法;
Native层为Android系统提供了Android系统的系统原生C/C++方法库;
Android Runtime为Android系统运行环境,提供了预编译AOT与即时编译AIT把dex字节码文件编译成机器码交给linux内核执行。
Framework为Android系统提供了java应用开发框架,即java开发库。
Android应用调用Framework层开发框架与Native原生C/C++库开发Android应用,通过ART(即AOT、JIT与虚拟机)实现java代码或者dex字节码编译成机器码,交给Linux内核执行,Linux内核通过HAL控制Android硬件设备,向用户展示Android应用。
(个人理解,有不对的地方请大佬指出共同提高)