Android系统架构简介

0.059字数 733阅读 4102

Android采用分层的架构,分为四层,从高层到底层分为应用程序层(app+System apps),应用程序框架层(Java API Framework),系统运行库和运行环境层(Libraries + android Runtime)和Linux核心层(HAL+ Linux Kernel),如下图所示:


Android平台示意图

还有一张中文简化版的分层图如下:


Android分层图

1. Linux核心层

linux内核(Linux Kernel)

Android平台的基础,直接和硬件打交道。硬件驱动、进程管理、内存管理、网络管理的功能在这里实现。

硬件抽象层(Hardware Abstraction Layer)

为上层的Java API Framework提供相关硬件的界面显示,Audio,Bluetooth等是组成硬件抽象层的库模块,实现每个硬件的界面显示功能。

2. 系统运行库和运行环境层

Android 运行环境(Android Runtime)

Android 5.0(API 21)之前使用的是Dalvik虚拟机,之后被ART所取代。
ART是Android操作系统的运行环境,通过运行虚拟机来执行dex文件。其中,dex文件是专为安卓设计的的字节码格式,好处多多,不再赘述。Android toolchain(一种编译工具)可以将Java代码编译为dex字节码格式,过程如下图,jack是一种编译工具链(tool chain)


Java代码编译为dex代码

为了便于理解,做个类比,我们都知道,java程序的运行需要java的核心包的支持,然后通过JVM虚拟机来运行我们的应用程序。在Android中,Android程序的运行需要core Libararies的支持,然后通过ART或者Dalvik来运行该程序。

原生C/C++ 库(Native c/c++ Libraries)

上面提到的ART就依赖于C/C++库。开发者可以通过调用Java API Framework来使用原生库的功能,也可以用Android NDK直接调用原生库。

3. 应用程序框架层

java API Framework

我们最常用的组件和服务都在这一层,也是每一个安卓开发者必须要熟悉的一层,

4. Application层

系统应用(system apps)

可以理解为内置在Android系统的app,我们可以像调用Java API Framework层一样直接调用系统app。

我们也可以自己编写System app,但是要注意系统应用的权限比较特殊,直接写在manifest里面是不行的。需要做特别的处理,参考http://www.programgo.com/article/76213742299/

因此,app开发主要研究Java API Framework层和应用程序层即可,如果有用到JNI,还需要研究一下Native c/c++ Libraries。但是Android运行库和Android运行时主要是从事系统开发的人员需要研究的。把握全局的同时,也要搞清楚重点,毕竟,术业有专攻。·

推荐阅读更多精彩内容