Android 从软件层面来看可以分为以下几个层级:
- Linux Kernel
- HAL
- Native C/C++ Libraries + AR
- Java API Framework
- System App
图示如下:
official site
- Linux Kernel 内核层,系统运行基石,还包含一些基本的硬件驱动
a. 安全性(Security) b. 内存管理(Memory Management) c. 进程管理(Process Management) d. 网络堆栈(Network Stack) e. 驱动程序模型(Driver Model)
- 硬件抽象层
提供高级界面,为Java API Framework层显示硬件功能
AR (Android Runtime) :
在API>=21的机器上,每个app都是一个AR 实例,这些实例通过DEX文件执行;AR的功能主要包括:a. AOT预编译 JIT 实时编译 b. 提升GC性能 c. 更好的debug支持 针对AR优化过的程序可以在低版本Android Dalvik虚拟机上获得性能优化,反之不成立
- Native C/C++ Libraries
出于性能考量,Android很多原生组件和服务都用到了native c/cpp的代码open GL 的2D 3D绘图基本都是用native api编写 如若需要,应用也可以通过Android NDK编写代码,调用native API
- Java API FrameWork
Android OS的整个功能集, JAVA编写 包含各组件、管理工具
- 应用层
识别二维码,关注公众号“夕识”