安卓系统架构理解

安卓系统架构 总共分为五层 ,由下往上依次是 linux,Hal驱动层,C++Native库和Android运行时环境,应用框架层,应用层

虽然框架图各层是静止的 但是其实各个层之间一直在运行,且各个层级相互交流传递信息,某一层的变化引起另一个层级的变化。

安卓系统架构理解_第1张图片
Boot Loader来引导开机 最先运行的是内核,在初始化过程中会产生第一个进程 初始化硬件驱动
Boot Loader:这是启动Android系统之前的引导程序,主要是检查RAM,初始化硬件参数等功能

1.安卓最底层是linux内核层
Android平台的基础是Linux内核,比如ART虚拟机最终调用底层Linux内核来执行功能。
Linux内核的安全机制为Android提供相应的保障,也允许设备制造商为内核开发硬件驱动程序

2.往上一层就是HAL驱动层

硬件抽象层 (HAL) 提供标准接口,HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一组接口,比如WIFI/蓝牙模块,当框架API请求访问设备硬件时,Android系统将为该硬件加载相应的库模块。
3.** Android Runtime & 系统库**

每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART通过执行DEX文件可在设备运行多个虚拟机,DEX文件是一种专为Android设计的字节码格式文件,经过优化,使用内存很少。ART主要功能包括:预先(AOT)和即时(JIT)编译,优化的垃圾回收(GC),以及调试相关的支持。

a、Android包括一组核心库(core libraries),他提供了
Java 编程语言的核心库中大多数可用功能。

b、每个
Android 应用程序运行在自己的进程上,有自己的 Dalvik 虚拟机实例。
Dalvik这样是为了使一个设备可以有效地运行多个虚拟机。 Dalvik VM 以被优化占用最小内存的Dalvik Executable (.dex)格式执行文件。VM 是基于寄存器的,并通过一个 Java 语言编译器的编译来运行,而这个Java编译器已经被内置的"dx"工具转成.dex 格式。

c、Dalvik MicrosoftVM 依赖 Linux 内核获得基本功能,如线程处理和低层内存管理

4…framework层
学习Android开发的第一步就是去学习各种各样的API,什么Activity,Service,Notification等。这些都是framework提供给我们的。
Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用。
Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。

1.用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。

2.用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

重点来了,那么我们当需要调用硬件时,就必须通过JNI程序来实现,framework层没有提供现成的方法,就需要我们自己实现,就要写JNI程序了

5.最上层 安卓应用层 ,这是一般的应用开发所涉及的,安卓应用工程师开发的手机应用都在application层

你可能感兴趣的:(Android)