Frameworks学习预览

frameworks/base/ 详细展开

复制代码
frameworks/base/
  ├── core/java/android/
  ├── services/core/java/com/android/server/
  ├── graphics/java/android/graphics/
  ├── media/java/android/media/
  ├── telephony/java/android/telephony/
  ├── location/java/android/location/
  └── ...

核心就两大块:给 App 用的 API(core)系统后台服务(services)

一、core/java/android/ --- App 能调到的 API 都在这里

复制代码
core/java/android/
  ├── app/
  │   ├── Activity.java       ← 你写的每个 Activity 都继承它
  │   ├── Service.java         ← 后台服务基类
  │   ├── Application.java    ← 整个 App 的入口
  │   ├── Fragment.java       ← Fragment 管理
  │   ├── AlertDialog.java    ← 弹窗
  │   ├── Notification.java   ← 通知
  │   ├── WallpaperManager.java
  │   ├── AlarmManager.java   ← 闹钟
  │   ├── SearchManager.java
  │   └── ...
  │
  ├── content/
  │   ├── Context.java            ← 最基础的通行证(抽象类)
  │   ├── ContextWrapper.java     ← 装饰器
  │   ├── Intent.java             ← 启动组件、传数据
  │   ├── ContentProvider.java    ← 跨进程数据共享
  │   ├── ContentResolver.java    ← 查 ContentProvider 的入口
  │   ├── SharedPreferences.java  ← 轻量存储
  │   └── ...
  │
  ├── view/
  │   ├── View.java               ← 所有 UI 控件的爹
  │   ├── ViewGroup.java          ← 能装子 View 的容器
  │   ├── TextView.java           ← 文字
  │   ├── Button.java             ← 按钮
  │   ├── ImageView.java          ← 图片
  │   ├── Window.java             ← 窗口抽象
  │   ├── ContextThemeWrapper.java← 让 Context 有主题
  │   └── ...
  │
  ├── widget/
  │   ├── ListView.java
  │   ├── RecyclerView.java
  │   ├── ProgressBar.java
  │   └── ...
  │
  ├── graphics/
  │   ├── Canvas.java         ← 画图
  │   ├── Paint.java          ← 画笔
  │   ├── Bitmap.java         ← 位图
  │   ├── SurfaceFlinger 相关  ← 合成显示
  │   └── ...
  │
  ├── media/
  │   ├── MediaPlayer.java    ← 播放音视频
  │   ├── AudioManager.java   ← 音频管理
  │   ├── Camera.java         ← 相机
  │   └── ...
  │
  ├── os/
  │   ├── Handler.java        ← 线程通信(主线程发消息)
  │   ├── Looper.java         ← 消息循环
  │   ├── Process.java        ← 进程管理
  │   ├── BatteryManager.java ← 电池
  │   └── ...
  │
  ├── net/
  │   ├── ConnectivityManager.java  ← 网络连接管理
  │   ├── wifi/                     ← WiFi 相关
  │   └── ...
  │
  ├── provider/
  │   ├── Settings.java       ← 系统设置
  │   └── ...
  │
  ├── telephony/
  │   ├── TelephonyManager.java ← 打电话、读 IMEI
  │   └── ...
  │
  ├── location/
  │   ├── LocationManager.java   ← GPS
  │   └── ...
  │
  └── hardware/
      ├── Camera.java
      ├── SensorManager.java  ← 传感器
      ├── display/
      │   └── DisplayManager.java ← 显示管理(你可能会碰这个)
      └── ...

以上这些都是给 App 调用的 API 定义。 它们大多数是接口或抽象类,真正干活的是 ContextImpl 和系统服务。

以上这些都是给 App 调用的 API 定义。 它们大多数是接口或抽象类,真正干活的是 ContextImpl 和系统服务。


二、services/core/java/ --- 后台真正干活的进程

复制代码
services/core/java/com/android/server/
  ├── am/
  │   ├── ActivityManagerService.java  ← Activity 生命周期真正的管理者
  │   │   Activity 进程被杀?AMS 管的。
  │   │   startActivity() 最终调到这里。
  │   │   所有 App 的 Activity 栈它都记着。
  │   └── ...
  │
  ├── wm/
  │   ├── WindowManagerService.java    ← 窗口位置、大小、层级
  │   │   你 setContentView() 最终到这里。
  │   │   多窗口、分屏、画中画都归它管。
  │   └── ...
  │
  ├── pm/
  │   ├── PackageManagerService.java   ← 安装/卸载/查询 App
  │   │   你点安装 APK,PMS 解压、解析 AndroidManifest、
  │   │   分配 uid、建立 dex 缓存。
  │   └── ...
  │
  ├── power/
  │   ├── PowerManagerService.java     ← 亮屏灭屏、休眠
  │   └── ...
  │
  ├── display/
  │   ├── DisplayManagerService.java   ← 显示设备管理
  │   │   (你调 HDMI 输出,这里也会涉及到)
  │   └── ...
  │
  ├── input/
  │   ├── InputManagerService.java     ← 触摸、按键分发
  │   └── ...
  │
  ├── audio/
  │   ├── AudioService.java            ← 音量、音频焦点
  │   └── ...
  │
  ├── usb/
  │   ├── UsbService.java              ← USB 插拔
  │   └── ...
  │
  └── ...

这些 Service 跑在 system_server 进程里 ,你的 App 在另一个进程。它们通过 Binder IPC 通信。


三、两个层是怎么配合的

startActivity() 举例,全链路:

复制代码
你的 App 进程                      system_server 进程
┌─────────────┐                  ┌──────────────────┐
│ MainActivity│                  │ AMS              │
│   .onClick()│                  │                  │
│     ↓       │                  │                  │
│ startActivity│  ──Binder IPC──→ │ 检查权限         │
│ (Intent)    │                  │ 找目标 Activity  │
│     ↓       │                  │ 新进程/新线程     │
│ Activity    │  ←──Binder IPC── │ onPause() 旧     │
│ .onPause()  │                  │ onResume() 新    │
│     ↓       │                  │                  │
│ Activity    │                  │                  │
│ .onResume() │                  │                  │
└─────────────┘                  └──────────────────┘
     ↓
View.java / WindowManagerService 负责画界面

四、你做 RK3576 BSP 最可能碰到的目录

按概率排:

  1. hardware/ --- HAL 层,显示、音频、相机硬件抽象(你可能已经碰了)
  2. frameworks/native/services/surfaceflinger/ --- 画面合成显示(SurfaceFlinger)
  3. frameworks/base/services/core/java/com/android/server/display/ --- 显示管理服务
  4. frameworks/base/core/java/android/view/ --- 窗口/显示相关
  5. frameworks/base/core/java/android/app/ --- 如果想在 Framework 层加接口给 App 调

一句话路线图

复制代码
你写的 App              → 只碰 core/java/android/app/
你加 Framework API      → 在 core/ 里加接口,在 services/ 里加实现
你调显示/HDMI          → services/display + SurfaceFlinger + HAL
你改系统行为           → services/am/ 或 services/wm/

每个目录不需要背,用到再去翻 。但你知道"显示相关的在 services/display/,窗口在 services/wm/,生命周期在 services/am/"这个路线就够了。

相关推荐
for_ever_love__1 小时前
UI学习:单例传值
学习·ui·ios·objective-c
The_superstar61 小时前
2026.4.28衡山派学习复习笔记
笔记·学习
XD7429716361 小时前
001. MSP430G2553 入门总述:从零开始学习这颗单片机
单片机·嵌入式硬件·学习·嵌入式·msp430g2553
wuxinyan1231 小时前
大模型学习之路01:提示工程从入门到精通(第一篇)
人工智能·学习·提示词
for_ever_love__1 小时前
UI学习:通知传值
学习·ui·ios·objective-c
周末也要写八哥1 小时前
编程学习中的记=记忆还是记录?
学习
随风,奔跑1 小时前
Git学习笔记
笔记·git·学习
咬_咬2 小时前
go语言学习(函数)
开发语言·学习·golang
豆瓣鸡2 小时前
Agent实战练习
java·python·学习