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

相关推荐
2603_949462103 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
王泰虎5 小时前
安卓开发日记,因为JCenter 关闭导致加载不了三方库应该怎么办
android
2601_949543018 小时前
Flutter for OpenHarmony垃圾分类指南App实战:主题配置实现
android·flutter
2601_949833399 小时前
flutter_for_openharmony口腔护理app实战+知识实现
android·javascript·flutter
晚霞的不甘9 小时前
Flutter for OpenHarmony从基础到专业:深度解析新版番茄钟的倒计时优化
android·flutter·ui·正则表达式·前端框架·鸿蒙
鸟儿不吃草10 小时前
android的Retrofit请求https://192.168.43.73:8080/报错:Handshake failed
android·retrofit
Minilinux201810 小时前
Android音频系列(09)-AudioPolicyManager代码解析
android·音视频·apm·audiopolicy·音频策略
李子红了时10 小时前
【无标题】
android
Android系统攻城狮12 小时前
Android tinyalsa深度解析之pcm_close调用流程与实战(一百零四)
android·pcm·tinyalsa·音频进阶·音频性能实战·android hal
weixin_4111918412 小时前
LifecycleEventObserver和DefaultLifecycleObserver使用
android