1.1、Android系统架构
Android系统架构主要分为五层,从上到下依次是应用层、应用框架层、系统运行库、硬件抽象层、硬件抽象层、Linux内核层。如下图:

1.应用层(System Apps)
系统内置的应用或者开发者开发的应用都属于应用层,负责与用户进行直接交互,通常使用Java语言开发,当然现在也可以采用谷歌官方的开发语言开发Kotlin。
2.应用框架层(Java API Framework)
应用框架层为开发人员开发应用提供程序需要的API,我们平常开发APP的时候调用的API,都是调用这一层提供的API。当然系统内置的应用也是如此。这一层主要也是用Java代码编写,可以称为Java Framework。这一层主要包含了一下一些核心的组件,如下图:


3.系统运行库层(Native)
系统运行库又分为了c/c++程序库(Native c/c++ Libearies)和Android运行时库(Android Runtime)。
(1)c/c++ 程序库
c/c++ 程序库能被Android不同的系统组件使用,并通过应用框架层提供服务列表。也就是我们在开发中可以通过Java Framework层提供的服务列表间接的调用c/c++程序库提供的服务。

(2)Android运行时库
Android运行时库中包含了核心库(Core Libraries和 ART),核心库提供了Java语言核心库的大多数功能,这样使得开发者可以使用Java语言来编写Android应用。
ART称为虚拟机,Android5.0之前使用的是Dalvik之后ART替换了前者。与JVM虚拟机相比Dalvik虚拟机专门为移动设备定制,允许在有限的内存运行多个虚拟机实例,每一个Dalvik应用作为一个独立的Linux进行执行。独立的进程防止了虚拟机崩溃的时候所有的程序都关闭。ART和Dalvik不同的是:Dalvik中的应用每次运行的时候字节码都需要通过即时编译器转换为机器码,这样会使得运行效率降低。而在ART中,系统安装应用的时候会进行一次预编译,将字节码预编译成机器码,并存在本地,这样应用每次执行的时候就不需要执行编译了。
4.硬件抽象层(HAL)
硬件抽象层位于操作系统内核与硬件电路之间的接口层,目的就是将硬件抽象化,通俗来说就是将硬件的动作放在硬件抽象层中。
5.Linux内核层(Linux Kernel)
Android的核心系统服务基于Linux内核。
网友评论