Android 系统架构

应用层(System Apps)

系统内置的应用(联系人,浏览器,相册,文件管理器)和 其他应用都属于应用层,负责与用户进行直接交互

应用框架层(Java API Framework)

应用框架层为开发人员提供了开发应用程序所需要的API,我们平常开发应用程序都是调用这一层所提供的API,当然也包括系统应用。
这一层是由Java代码编写的,可以称为Java Framework

  • 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器
  • 资源管理器(Resource Manager)用于访问非代码资源,例如本地化的字符串、图形和布局文件(layout)
  • 通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息
  • 活动管理器(Activity Manager) 用于管理应用的生命周期,提供常见的导航返回栈
  • 内容提供器(Content Providers)可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据

系统运行层 (Nativa C/C++ Libraris & Android Runtime)

Nativa C/C++ Libraris

许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库
Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如 Java OpenGL API 等
C/C++程序库能被Android系统中的不同组件所使用,并通过应用程序框架为开发者提供服务,使用NDK开发

Android Runtime

每个应用都在其自己的进程中运行,并且有其自己的 ART 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少

  • 预先 (AOT) 和即时 (JIT) 编译
  • 优化的垃圾回收 (GC)
  • 更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段

硬件抽象层 (HAL)

硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,向更高级别的 Java API 显示设备硬件功能。
为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性

Linux 内核

Android的核心系统服务基于Linux内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核/

原文地址:https://www.cnblogs.com/lukelmouse/p/14516588.html