android 框架(android framework)是 android 操作系统的核心部分之一,它提供了一组 api,开发者可以使用这些 api 来构建应用程序。android 框架处于 android 系统架构的中间层,位于应用层和操作系统核心层之间。
android 系统架构
-
应用层(applications):
- 这一层包括用户安装的所有应用程序,如浏览器、联系人、相机等。开发者可以使用 android 框架提供的 api 来构建自己的应用程序。
-
应用框架层(application framework):
- android 框架的核心部分,提供了构建应用程序的基本组件和服务。它包含许多核心组件,例如活动管理器(activity manager)、窗口管理器(window manager)、内容提供者(content providers)、资源管理器(resource manager)等。
- 开发者可以使用这些框架组件来管理 ui、数据存储、后台服务、应用间通信等。
-
系统库和 android 运行时(libraries and android runtime):
- 系统库: 包含一些 c/c++ 库,为 android 系统提供基本功能,如媒体库(opengl、webkit)、c 库(libc)、ssl(libssl)等。
- android 运行时: 包括核心库和虚拟机(如 dalvik 或 art)。核心库提供 java 编程语言的基本功能,而虚拟机运行 .dex 字节码。
-
硬件抽象层(hardware abstraction layer, hal):
- hal 为硬件驱动提供标准接口,使 android 操作系统能够与硬件组件(如相机、传感器等)进行交互。开发者通常不直接与 hal 交互,但 hal 是系统与硬件之间的桥梁。
-
linux 内核(linux kernel):
- android 基于 linux 内核,它处理底层硬件抽象、内存管理、进程管理、网络堆栈和设备驱动等。它为 android 系统提供了基础服务,如电源管理、安全性、网络和驱动程序管理。
android 框架的作用
-
提供基本的应用开发组件: android 框架提供了活动(activity)、服务(service)、广播接收器(broadcast receiver)和内容提供者(content provider)等基本组件,这些组件是构建 android 应用的基础。
-
管理 ui: 框架提供了丰富的 ui 控件(如按钮、文本框、列表等)和布局管理器,帮助开发者设计和管理应用的用户界面。
-
资源管理: 管理应用的各种资源,如字符串、图像、布局等,并支持国际化。
-
数据持久化: 提供 sqlite 数据库支持、文件系统访问以及内容提供者,用于数据的存储和共享。
-
后台任务: 通过服务和线程来管理后台任务,确保应用在前台和后台的正常运行。
-
硬件访问: 通过系统服务(如传感器服务、位置服务等)和 hal,框架提供了访问设备硬件的能力。
完整的链路
- 应用程序启动: 用户启动应用程序。
- 调用框架组件: 应用程序通过调用框架提供的 api 与系统交互。
- 框架与系统库交互: 框架组件调用系统库和 android 运行时来执行具体任务。
- 与 hal 交互: 如果需要访问硬件,系统库会通过 hal 与硬件设备通信。
- linux 内核: 底层的硬件操作最终由 linux 内核处理,如设备驱动、内存管理等。
android 框架提供了开发应用程序所需的大部分基础设施,使开发者能够专注于实现应用的功能和用户体验。
其他说明
在应用框架层(application framework)进行开发通常涉及对 android 系统级别的代码进行修改或扩展。由于这部分代码是 android 操作系统的一部分,要对其进行编译和测试,你需要基于 android open source project (aosp) 环境进行操作。
大多数时候开发者只在应用层进行开发。
发表评论