Framework架构
┌─────────────────────────────────────────────────────────────────────────┐
│ Android 应用层 (Applications) │
│ (Launcher, Settings, Browser, etc.) │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Framework Java API (core/java/android/) │
├─────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ app/ │ │ content/ │ │ os/ │ │ view/ │ │
│ │ Activity │ │ Context │ │ Binder │ │ View │ │
│ │ Service │ │ Intent │ │ Handler │ │ Window │ │
│ │ Context │ │ Content │ │ Message │ │ Surface │ │
│ │ Fragment │ │ Provider │ │ Looper │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ graphics/ │ │ media/ │ │ net/ │ │ location/ │ │
│ │ Canvas │ │ MediaPlay │ │ Socket │ │ Location │ │
│ │ Bitmap │ │ MediaRec │ │ Network │ │ Geofence │ │
│ │ Paint │ │ Audio │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ hardware/ │ │ telephony/ │ │ app/ │ │ speech/ │ │
│ │ Camera │ │ Phone │ │ UsageStats │ │ TTS │ │
│ │ Sensor │ │ SMS │ │ GameMgr │ │ │ │
│ │ Display │ │ │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
┌───────▼────────┐
│ JNI Bridge │
│ (core/jni/) │
└───────┬────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Framework Native Layer │
│ (core/jni/ + native/) │
├─────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ AndroidRuntime │ │ libandroidfw │ │
│ │ (JNI Main Entry) │ │ (Native I/O, Asset) │ │
│ └──────────────────────┘ └──────────────────────┘ │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ android_view_ │ │ android_media_ │ │ android_os_ │ │
│ │ (Window,View, │ │ (Audio,Media, │ │ (Binder,Parcel,│ │
│ │ InputEvent) │ │ Image) │ │ MessageQueue) │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │android_hardware│ │ android_graphic│ │android_content_│ │
│ │(Camera,Sensor,│ │ (Surface,Graphic│ │ (AssetManager, │ │
│ │ USB,Display) │ │ Buffer) │ │ Resources) │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ System Services (services/) │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ ActivityManager │ │ WindowManager │ │
│ │ (ActivityTaskManager) │ │ (你打开的ActivityRecord│ │
│ │ services/core/java/ │ │ 就在这里) │ │
│ │ com/android/server/am │ │ services/core/java/ │ │
│ │ │ │ com/android/server/wm │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ PackageManager │ │ PowerManager │ │
│ │ (应用安装/卸载) │ │ (电源管理) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ AudioService │ │ DisplayService │ │
│ │ (音频管理) │ │ (显示管理) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ BatteryService │ │ InputManager │ │
│ │ (电池管理) │ │ (输入管理) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ StorageManager │ │ LocationManager │ │
│ │ (存储管理) │ │ (位置服务) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ AppOpsService │ │ UserManager │ │
│ │ (权限操作) │ │ (用户管理) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
│ │ AlarmManagerService │ │ NotificationManager │ │
│ │ (闹钟管理) │ │ (通知管理) │ │
│ └─────────────────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
core/java/ - Framework Java API 详解
这是 Android 应用开发者直接调用的 API 层:
core/java/android/
├── app/ # 应用组件核心
│ ├── Activity.java # 活动窗口
│ ├── Service.java # 后台服务
│ ├── Application.java # 应用上下文
│ ├── ContextImpl.java # Context实现
│ ├── Fragment.java # 碎片化组件
│ ├── Dialog.java # 对话框
│ └── IntentService.java # Intent服务
│
├── content/ # 内容组件
│ ├── Context.java # 上下文基类
│ ├── Intent.java # 意图(启动组件)
│ ├── ContentResolver.java # 内容解析器
│ ├── ContentProvider.java# 内容提供者
│ └── BroadcastReceiver.java #广播接收
│
├── os/ # 操作系统服务
│ ├── Binder.java # 跨进程通信
│ ├── IBinder.java # Binder接口
│ ├── Message.java # 消息
│ ├── Looper.java # 消息循环
│ ├── Handler.java # 消息处理
│ ├── Parcel.java # 序列化
│ ├── Process.java # 进程管理
│ └── ServiceManager.java#服务管理
│
├── view/ # UI视图系统
│ ├── View.java # 视图基类
│ ├── Window.java # 窗口
│ ├── SurfaceView.java # 曲面视图
│ └── input/ # 输入事件
│
├── graphics/ # 图形系统
│ ├── Canvas.java # 画布
│ ├── Bitmap.java # 位图
│ ├── Paint.java # 画笔
│ └── Color.java # 颜色
│
├── media/ # 多媒体
│ ├── MediaPlayer.java # 媒体播放
│ ├── MediaRecorder.java # 媒体录制
│ └── AudioManager.java # 音频管理
│
├── telephony/ # 电话通信
│ ├── TelephonyManager.java #电话管理
│ └── SmsManager.java # 短信管理
│
├── location/ # 位置服务
│ ├── LocationManager.java #位置管理
│ └── Location.java # 位置信息
│
├── hardware/ # 硬件抽象
│ ├── Camera.java # 相机
│ ├── Sensor.java # 传感器
│ └── Display.java # 显示
│
└── net/ # 网络
├── ConnectivityManager.java #连接管理
└── WifiManager.java # WiFi管理
services/ - 系统服务层详解
系统服务是运行在 system_server 进程中的核心服务:
services/
└── core/java/com/android/server/
├── am/ # ActivityManager服务
│ ├── ActivityManagerService.java # AMS核心
│ ├── ActivityTaskManagerService.java # ATMS核心
│ ├── ActivityTaskSupervisor.java # Activity调度
│ ├── ProcessRecord.java # 进程记录
│ ├── ProcessList.java # 进程列表
│ ├── BroadcastQueue.java # 广播队列
│ └── OomAdjuster.java # OOM调整
│
├── wm/ # WindowManager服务
│ ├── WindowManagerService.java # WMS核心
│ ├── ActivityRecord.java # Activity记录(你打开的文件)
│ ├── ActivityStarter.java # Activity启动器
│ ├── DisplayContent.java # 显示内容
│ ├── WindowState.java # 窗口状态
│ └── RootWindowContainer.java # 根窗口容器
│
├── pm/ # PackageManager服务
│ ├── PackageManagerService.java # PMS核心
│ └── PermissionManager.java # 权限管理
│
├── power/ # PowerManager服务
│ └── PowerManagerService.java # 电源管理
│
├── audio/ # Audio服务
│ └── AudioService.java # 音频服务
│
├── display/ # Display服务
│ └── DisplayManagerService.java # 显示管理
│
├── input/ # Input服务
│ └── InputManagerService.java # 输入管理
│
├── storage/ # Storage服务
│ └── StorageManagerService.java # 存储管理
│
├── location/ # Location服务
│ └── LocationManagerService.java # 位置管理
│
├── battery/ # Battery服务
│ └── BatteryService.java # 电池服务
│
├── appops/ # AppOps服务
│ └── AppOpsService.java # 权限操作服务
│
└── user/ # UserManager服务
└── UserManagerService.java # 用户管理
core/jni/ - Framework Native层详解
JNI层连接 Java API 和 C++ 原生实现:
core/jni/
├── AndroidRuntime.cpp # JNI主入口,startVM()
│
├── android_os_/ # OS相关JNI
│ ├── Binder.cpp # Binder实现
│ ├── Parcel.cpp # Parcel实现
│ ├── MessageQueue.cpp # 消息队列
│ ├── ServiceManager.cpp # 服务管理
│ ├── Looper.cpp # Looper实现
│ └── Trace.cpp # 追踪
│
├── android_view_/ # View系统JNI
│ ├── Surface.cpp # Surface实现
│ ├── View.cpp # View实现
│ ├── WindowManagerGlobal.cpp #窗口管理
│ ├── InputEventReceiver.cpp #输入事件
│ ├── KeyEvent.cpp # 按键事件
│ └── MotionEvent.cpp # 触摸事件
│
├── android_content_/ # Content JNI
│ ├── AssetManager.cpp # 资源管理
│ ├── Res XmlBlock.cpp # XML解析
│ └── FileSystemUtils.cpp# 文件系统
│
├── android_media_/ # Media JNI
│ ├── AudioTrack.cpp # 音轨
│ ├── AudioRecord.cpp # 录音
│ ├── MediaPlayer.cpp # 媒体播放
│ └── ImageReader.cpp # 图像读取
│
├── android_hardware_/ # Hardware JNI
│ ├── Camera.cpp # 相机
│ ├── SensorManager.cpp # 传感器
│ ├── DisplayManagerGlobal.cpp #显示
│ └── UsbDevice.cpp # USB
│
├── android_graphics_/ # Graphics JNI
│ ├── GraphicBuffer.cpp # 图形缓冲
│ ├── SurfaceTexture.cpp# 表面纹理
│ └── BLASTBufferQueue.cpp # BLAST缓冲队列
│
└── android_opengl_/ # OpenGL JNI
├── EGL14.cpp # EGL实现
├── GLES10.cpp # OpenGL ES 1.0
├── GLES20.cpp # OpenGL ES 2.0
└── GLES30.cpp # OpenGL ES 3.0