Android系统学习总结之Android系统架构

Android系统学习总结

本文是基于深入理解Android++卷1来学习总结的。

Android系统架构

  1. Android共分为四层,从上到下依次是应用层、应用框架层、系统运行库层、Linux内核层
  2. 应用层包括了各种Android应用程序,这些应用程序是使用java语言开发,并运行在Dalvik虚拟机上(Android平台的虚拟机)。
  3. 应用框架层是用java语言实现和开发的,开发者使用该层提供的API便可以非常方便的完成设备硬件、获取位置信息、向状态栏添加通知消息、设置闹钟等操作,而不必关心具体的底层实现机制和硬件实现方式。
  4. 应用框架层主要组件:视图、资源管理器、通知管理器、Activity管理器
  5. 系统运行库层:主要包含了手机操作系统平台必备的C/C++核心库、Dalvik虚拟机运行环境和HAL子层
  6. C/C++核心库,系统运行库层包含一个C/C++库的集合,当使用Android应用框架的一些接口时。系统运行库通过C/C++核心库来支持对应的组件使用,使其能更好地为Android应用开发者服务。
  7. libc(系统C库),处于系统最底层的系统层,由Linux系统调用。
  8. MediaFramework(多媒体库),Android系统多媒体库,支持当前手机平台上主流的音频和视频格式播放和录制,以及静态图像。
  9. SGL,2D图形引擎库
  10. OpenGL,3D效果的支持
  11. SQLite,轻量型关系数据库引擎,可用来增删改查。
  12. WebKit,新式的Web浏览器引擎,支持当前非常流行的HTML5
  13. SSL,基于TCP/IP网络协议,为数据安全通信提供支持。
  14. Dalvik虚拟机的特性如下:
    a). 每一个Android应用运行在一个Dalvik虚拟机实例中,而每一个虚拟机实例都是一个独立的进程空间。
    b). 虚拟机的线程机制、内存分配和管理、Mutex等的实现都依赖底层Linux操作系统。
    c). 所有Android应用的线程都对应一个Linux线程,因而虚拟机可以更多地使用Linux操作系统的线程调度和管理机制。
  15. Dalvik虚拟机并不是按照Java虚拟机的规范来实现,两者并不兼容,他们之间最大的不同在于Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的是其专有的文件格式——DEX文件。
  16. 系统运行库层HAL,是一个位于操作系统和驱动程序之上,运行在用户空间中的服务程序。其目的是对上层应用提供一个统一的查询硬件设备接口。
  17. Linux内核层,Android基于LinuxKernel提供核心系统服务,如文件管理、内存管理、进程管理、网络堆栈、驱动模型等操作系统的基本服务能力。LinuxKernel同时也作为硬件和软件之间的抽象层,需要一些与移动设备相关的驱动程序来支持。主要驱动如下:显示驱动(基于Linux的帧缓冲驱动)、键盘驱动(输入设备的键盘驱动,如Home、Menu、Return、Power等设备按键)、音频驱动(常用的基于ALSA的高级Linux声音体系驱动)、电源管理(如电池电量、充电、屏幕开启关闭管理)、BinderIPC驱动(Android平台上一个特殊的驱动程序、具有单独设备访问节点,用来提供IPC进程间的通信功能)、蓝牙驱动(基于IEEE802.15.1)标准的蓝牙无线传输技术、WiFi驱动(基于IEEE802.11标准的WIFI驱动)、照相机驱动(常用的基于Linux的照相机驱动)
  18. Init进程:Linux内核加载完毕后,会首先启动Init进程,Init进程是系统的第一个进程。在Init进程的启动过程中,会解析Linux的配置脚本init.rc文件。根据init.rc文件的内容,Init进程会加载Android的文件系统、创建系统目录、初始化属性系统、启动Android系统重要的守护进程,这些进程包括USB守护进程、adb守护进程、vold守护进程、rild守护进程。同时也会作为守护进程来执行修改属性请求,重启崩溃的进程等操作。
  19. ServiceManager:由Init进程启动,主要作用是管理Binder服务,负责Binder服务的注册与查找。
  20. Zygote进程,由Init启动,负责fork出应用进程,是所有应用进程的父进程。
  21. SystemService,是Zygote进程fork出的第一个进程,也是整个Android系统的核心进程。在SystemServer中运行着Android系统大部分的Binder服务。

其他章节内容如下:

Android系统学习总结之音频框架

Android系统学习总结之深入理解JNI

Android系统学习总结之深入理解init

Android系统学习总结之深入理解zygote

Android系统学习总结之深入理解常见类

Android系统学习总结之深入理解Binder

发布了39 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43443900/article/details/103238054