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编写
包含各组件、管理工具 -
应用层
识别二维码,关注公众号“夕识”
网友评论