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 应对安全挑战和设备碎片化的重要解决方案。

相关推荐
驰骋工作流5 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
传奇开心果编程7 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
方白羽11 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app
weixin_5633714711 小时前
Android Studio 2024 版 Device Explorer 打开方法
android·ide·android studio
AIsoft_868914 小时前
职场音频文件怎么整理?录音APP有哪些用法
android·音视频
booboosui14 小时前
第一批个人 Agent 用户正在卸载,问题不在模型,在它住在哪儿
android
洞见前行14 小时前
点击图标到内容出现,你的 App 在这几秒里做了什么:Android 冷启动全链路优化实战
android·性能优化·android studio
凯基迪科技14 小时前
芯片UID绑定修改 加密与逆向修改思路分析
android
Liben15 小时前
Weex开发踩坑记录
android·前端·ios
救救孩子把17 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务