文章目录
一 Android五层架构
- 系统应用
- Java API框架
- 原生 C库与Android运行时
- 硬件抽象层 (HAL)
- Linux内核
一.1 Android旧版架构
旧版四层架构,因升级困难导致Android碎片化已被谷歌弃用!
二 五层架构介绍
二.1 平台基础 - Linux内核
- Android Runtime(ART) 依靠Linux内核来执行底层的功能线程和底层内存管理
- 使用Linux内核使得Android更安全
- 便于移动设备制造商为内核开发硬件驱动程序 - Driver
- 用户空间驱动:允许硬件厂商提供闭源驱动,同时回避开源版权协议
- 高级电源管理:较PC内核更精细的
模块级
电源控制 - 重难点:向新设备适配Android的Linux内核
二.2 硬件抽象层
- 向更高级别的Java API 框架提供标准硬件功能界面
- 包含多个库模块,每个模块都为
一种硬件实现一个界面
,例:相机和蓝牙 - 当Java API 框架 访问设备硬件时,Android系统加载该硬件的驱动模块
二.3 原生C/C++ 库 与 Android虚拟机
-
基本库:
- html库: webkit
- 加密库: OpenSSL
- 图形库: OpenGL
- 数据库: SQLite
-
许多Android核心系统组件和服务(ART、HAL)构建于自原生代码,依赖于原生库
-
通过框架层的Java API供APP开发者调用
-
Android NDK可直接从C/C++代码访问原生C/C++库
Android 虚拟机
- 在 Android 5.0(API 级别 21)之后,App 都在自己的进程中运行,并且有自己的
ART实例
- ART 通过执行
DEX
字节码在低内存设备
上运行多个虚拟机
。DEX 文件
是一种专为 Android 设计的Java 字节码格式
,使用的内存很少 - 在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime
- ART的主要功能
- 预先(AOT)和即时(JIT)编译
- 优化的垃圾回收(GC)
- 更好的调试支持
二.4 框架层 - 向开发者提供Java API
- 开发者需要通过Java语言使用Android的整个功能集
- 应用集有:
- 构建应用的视图(View):包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
- 资源管理器:用于访问非代码资源,例如本地化的字符串、图形和布局文件
- 通知管理器:可让所有应用在状态栏中显示自定义提醒
- Activity 管理器:用于管理应用的生命周期,提供常见的导航返回栈
- 内容提供程序(Content Provider):可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据
框架层是Android的核心,版本升级主要是框架层 API Level
二.5 核心应用层
- Android提供一整套的核心应用: 电话、E-mail、地图、浏览器等
- 可使用Java API 和 Android Java API