Android-packages/modules-由来及子目录介绍

Android AOSP packages/modules 详解

一、目录由来与演进

历史演变

  • Android 1.0-9.0 :系统组件深度集成在 frameworks/
  • Android 10 (2019) :引入 Project Mainline ,创建 packages/modules
  • 目标:将关键系统服务模块化,支持通过 Google Play 独立更新

核心设计理念

  1. 解耦系统组件:从 monolithic 系统转向模块化架构
  2. 独立更新:绕过 OEM 厂商,直接向用户推送安全更新
  3. 兼容性保证:通过 CTS 测试确保模块间兼容性

二、目录结构概览

复制代码
packages/modules/
├── ModuleName/
│   ├── Android.bp          # Soong 构建文件
│   ├── apex/               # APEX 包定义(Android 10+)
│   ├── service/            # 服务实现
│   ├── api/                # 公共 API 定义
│   ├── tests/              # 测试代码
│   └── ...                 # 模块特定代码

三、主要子模块详细介绍

1. 核心系统服务模块

模块 路径 功能描述 打包格式
蓝牙栈 Bluetooth/ 蓝牙协议栈实现,替代传统 system/bt APEX
Wi-Fi WiFi/ Wi-Fi 服务、网络管理 APEX
权限控制 Permission/ 运行时权限管理框架 APEX
神经网络 NeuralNetworks/ 神经网络 API (NNAPI) 实现 APEX
DNS 解析 DNS/ DNS-over-TLS/HTTPS 解析器 APEX
连接性 Connectivity/ 网络连接管理、Tethering APEX

2. 安全与隐私模块

模块 功能 重要性
CaptivePortalLogin 网络登录门户检测 网络安全
IPsec IPsec VPN 实现 企业安全
StatsD 系统统计框架 隐私保护
AdServices 隐私广告服务 隐私沙盒

3. 新硬件支持模块

模块 引入版本 用途
Uwb Android 12 超宽带通信
Virtualization Android 13 虚拟化框架
CellBroadcast Android 12 蜂窝广播

四、关键技术实现

APEX 包格式

makefile 复制代码
// 示例:Wi-Fi 模块的 APEX 定义
apex {
    name: "com.android.wifi",
    manifest: "apex_manifest.json",
    androidManifest: "AndroidManifest.xml",
    file_contexts: ":com.android.wifi-file_contexts",
    prebuilts: ["wpa_supplicant", "hostapd"],
}

模块化架构特点

  1. 独立版本控制:每个模块有自己的版本号
  2. ABI 稳定性:保持向后兼容
  3. 回滚机制:更新失败自动回退
  4. 权限隔离:模块运行在独立沙盒

五、开发与构建流程

构建命令

bash 复制代码
# 构建单个模块
m com.android.wifi

# 构建并推送到设备
m com.android.wifi && adb install apex.apex

# 测试模块
atest WifiTests

模块开发流程

  1. 代码位置packages/modules/ModuleName/
  2. API 管理 :通过 api/ 目录定义稳定接口
  3. 测试要求:必须包含单元测试和集成测试
  4. CTS 验证:通过兼容性测试套件验证

六、实际案例:Wi-Fi 模块

目录结构示例

复制代码
WiFi/
├── Android.bp                    # 构建配置
├── service/
│   ├── java/com/android/wifi/   # Java 服务层
│   └── jni/                      # JNI 本地代码
├── apex/
│   └── AndroidManifest.xml      # APEX 清单
├── api/
│   ├── current.txt              # 当前 API
│   └── removed.txt              # 移除的 API
├── tests/
│   ├── unit/                    # 单元测试
│   └── integration/             # 集成测试
└── res/                         # 资源文件

更新流程

  1. Google 开发安全补丁
  2. 编译为 com.android.wifi.apex
  3. 通过 Google Play 推送
  4. 设备自动安装(无需重启)

七、对生态系统的意义

优点

  • 快速安全更新:高危漏洞可在数天内修复
  • 减少碎片化:统一核心系统行为
  • 降低 OEM 负担:Google 维护核心组件
  • 新功能快速部署:无需等待 Android 大版本

挑战

  • ⚠️ 测试复杂度增加:需保证模块间兼容性
  • ⚠️ 存储开销:每个模块独立打包增加空间占用
  • ⚠️ 启动时间:模块化可能影响启动性能

八、发展趋势

  1. 更多模块化 :Android 13+ 将更多组件移入 modules/
  2. 动态交付:支持按需下载和安装模块
  3. 云控制:Google 可远程配置模块行为
  4. 可定制性:OEM 可在基础上添加定制功能

九、相关命令和工具

bash 复制代码
# 查看已安装模块
adb shell pm list packages | grep apex

# 手动安装模块
adb install --staged-ready-timeout 60000 module.apex

# 调试模块
adb logcat | grep MODULE_NAME

# 模块版本检查
adb shell dumpsys package com.android.wifi

packages/modules 代表了 Android 架构现代化的关键一步,从固化的操作系统向可更新的平台演进,是 Android 应对安全挑战和设备碎片化的重要解决方案。

相关推荐
走在路上的菜鸟2 小时前
Android学Dart学习笔记第十六节 类-构造方法
android·笔记·学习·flutter
TimeFine2 小时前
Android AI解放生产力(一):开始使用Codex Cli
android
_李小白4 小时前
【Android FrameWork】第三十三天:Camera视频流写入SurfaceView的机制
android
csj504 小时前
安卓基础之《(4)—Activity组件(2)》
android
_李小白5 小时前
【Android GLSurfaceView源码学习】第二天:GLSurfaceView深度分析
android·学习
元气满满-樱6 小时前
LNMP架构学习
android·学习·架构
allk556 小时前
Android 渲染性能优化实战总结:从监控体系到架构落地
android·性能优化·架构
思成不止于此6 小时前
C++红黑树封装map/set核心揭秘
android
走在路上的菜鸟6 小时前
Android学Dart学习笔记第十七节 类-成员方法
android·笔记·学习·flutter