Android Framework 可以理解为:
Android 系统中位于 App 和底层系统之间的一层“系统框架”,它为应用提供各种高级 API,并负责管理应用的运行、组件生命周期、窗口、资源、通知、权限等。
平时写 Android 代码时大量使用的类,比如:
Activity
Service
BroadcastReceiver
ContentProvider
View
Intent
Handler
Context
Resources
NotificationManager
PackageManager
WindowManager
这些大多都属于 Android Framework 提供的能力。
1. Android 系统大致分层
可以简单分成这样:
应用层 App
↓
Android Framework
↓
Native Libraries / Android Runtime
↓
HAL 硬件抽象层
↓
Linux Kernel
↓
硬件
也可以画成:
你的 App
|
| 调用 Activity、Service、View、Notification 等 API
v
Android Framework
|
| 调用 Native 层、Runtime、系统服务
v
底层系统 / 驱动 / 硬件
2. Android Framework 主要包含什么?
Android Framework 不是单独一个类,而是一整套框架和系统服务。
常见包括:
应用组件框架
窗口和 View 系统
资源管理系统
包管理系统
通知系统
输入系统
权限系统
进程和任务管理
内容提供者机制
Binder 通信机制的 Java 层封装
3. 应用组件框架
Android 四大组件就是 Framework 提供的模型:
Activity
Service
BroadcastReceiver
ContentProvider
你写:
class MainActivity : Activity()
实际上就是继承 Framework 提供的 Activity。
你调用:
startActivity(intent)
startService(intent)
sendBroadcast(intent)
contentResolver.query(...)
这些都是 Framework 层提供给 App 的 API。
背后会通过 Binder 和系统服务通信。
4. 系统服务
Android Framework 里有很多重要的系统服务,它们大多运行在 system_server 进程中。
例如:
| 系统服务 | 作用 |
|---|---|
| AMS / ActivityManagerService | 管理应用进程、Service、广播等 |
| ATMS / ActivityTaskManagerService | 管理 Activity 任务栈、Activity 启动 |
| WMS / WindowManagerService | 管理窗口显示 |
| PMS / PackageManagerService | 管理应用安装包、组件信息、权限 |
| NMS / NotificationManagerService | 管理通知 |
| IMS / InputManagerService | 管理输入事件 |
| PowerManagerService | 管理电源和休眠 |
| LocationManagerService | 管理定位 |
| SensorService | 管理传感器 |
| AudioService | 管理音频 |
比如你写:
val notificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
你拿到的其实是 Framework 提供的通知管理接口,背后会和系统的通知服务通信。
5. Framework API 和系统服务的关系
平时 App 调用的是 Framework API,例如:
startActivity(intent)
这看起来只是调用一个普通方法,但背后可能发生:
App 调用 Framework API
↓
Framework API 通过 Binder 请求系统服务
↓
system_server 中的 AMS/ATMS/WMS 等处理
↓
系统回调 App 进程执行生命周期方法
例如启动 Activity:
MainActivity.startActivity()
↓
ContextImpl / Instrumentation
↓
Binder IPC
↓
ATMS/AMS
↓
目标 App ActivityThread
↓
目标 Activity.onCreate()
所以 Framework 既包括你能直接调用的 API,也包括系统内部负责调度的服务。
6. 举个例子:Activity 属于 Framework
你写一个 Activity:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
虽然你只写了很少代码,但背后 Framework 负责了很多事情:
创建 Activity 对象
调用 onCreate()
加载布局
管理生命周期
处理返回栈
管理窗口
分发触摸事件
处理配置变化
你只需要按照 Framework 定义好的规则写代码即可。
7. 举个例子:View 系统也属于 Framework
你写:
setContentView(R.layout.activity_main)
背后 Framework 会:
解析 XML 布局
创建 View 对象
测量 measure
布局 layout
绘制 draw
处理触摸事件
请求刷新 invalidate
所以 Android 的 UI 体系也是 Framework 的重要组成部分。
8. 举个例子:资源系统属于 Framework
你写:
val name = getString(R.string.app_name)
val color = getColor(R.color.primary)
背后 Framework 的 Resources 系统负责:
根据资源 id 找到资源
根据语言选择不同 values
根据屏幕密度选择不同 drawable
根据横竖屏选择不同 layout
例如:
res/values/strings.xml
res/values-zh/strings.xml
res/drawable-mdpi/
res/drawable-xxhdpi/
res/layout/
res/layout-land/
这些适配能力都是 Framework 提供的。
9. Framework 和 SDK 是什么关系?
容易混淆:
Android SDK
SDK 是开发工具包,包括:
Framework API 的编译依赖
模拟器
adb
build tools
platform tools
文档
示例
Android Framework
Framework 是 Android 系统运行时真正存在的一套框架代码和系统服务。
简单区别:
SDK:给开发者编译和开发用
Framework:设备系统里真正运行的框架
你开发时依赖 SDK 中的 android.jar:
android.jar 里有 Activity、Service、View 等类的 API 壳
运行时,手机系统里真正的 Framework 实现会执行。
10. Framework 和 Jetpack 是什么关系?
Android Framework 是系统自带的框架。
Jetpack 是 Google 提供的一套开发库,随 App 一起打包或通过依赖引入。
例如:
| Android Framework | Jetpack |
|---|---|
| Activity | AppCompatActivity / ComponentActivity |
| Fragment 早期在 Framework 中,后来主要用 AndroidX Fragment | Fragment |
| SQLiteOpenHelper | Room |
| Handler/Service/JobScheduler | WorkManager |
| ViewModel 没有在系统 Framework 中 | ViewModel |
| LiveData/Flow 不是 Framework | LiveData/Flow |
| Navigation 不是 Framework | Navigation |
区别:
Framework:系统级,随 Android 版本更新
Jetpack:库级,随 App 依赖更新
例如:
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:...")
这是 Jetpack,不是 Android 系统 Framework 本身。
11. Framework 和 AOSP 的关系
AOSP 是 Android Open Source Project,即 Android 开源项目。
Android Framework 的源码就是 AOSP 的一部分。
常见源码路径:
frameworks/base/core/java/android/app/Activity.java
frameworks/base/core/java/android/content/Context.java
frameworks/base/core/java/android/view/View.java
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
也就是说:
AOSP 是完整 Android 开源系统
Framework 是其中负责应用框架和系统服务的重要部分
12. Framework 可以分为两部分理解
为了方便理解,可以分成:
1. App 进程里的 Framework API
这些是你 App 直接调用或继承的类:
Activity
Service
BroadcastReceiver
ContentProvider
Context
Intent
View
Handler
Looper
Resources
它们运行在你的 App 进程中。
2. system_server 里的系统服务
这些是系统级管理者:
AMS
ATMS
WMS
PMS
NMS
PowerManagerService
InputManagerService
它们运行在系统进程中。
两者通过 Binder 通信:
App Framework API
|
| Binder IPC
v
System Services
13. 举一个完整调用链
比如显示一个通知:
notificationManager.notify(1, notification)
背后可以理解为:
你的 App
|
| NotificationManager.notify()
v
Framework API
|
| Binder IPC
v
NotificationManagerService
|
| 系统统一管理通知栏显示
v
SystemUI 显示通知
你调用的 NotificationManager 是 Framework API,真正统一管理通知的是 NotificationManagerService。
14. 再举一个:获取系统服务
你经常写:
val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
或者:
val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
这里的 WindowManager、ActivityManager 是 Framework 提供给 App 的“客户端接口”。
背后对应:
WindowManagerService
ActivityManagerService
可以理解为:
WindowManager 是代理/门面
WindowManagerService 是真正管理者
15. 总结
Android Framework 是 Android 系统中连接 App 和底层系统的一整套应用框架。
它提供:
Activity/Service 等组件模型
View/UI 系统
资源管理
Intent 和广播机制
权限机制
包管理
通知管理
窗口管理
进程管理
系统服务访问能力
它的作用是:
让开发者不用直接操作底层 Linux、驱动、进程和窗口,而是通过高级 API 开发 Android 应用。
最简单理解:
App 负责写业务逻辑
Android Framework 负责提供规则、API 和系统能力
底层系统负责硬件、驱动和运行环境
一句话:
Android Framework 就是 Android 应用运行所依赖的系统级框架层。