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

相关推荐
程序员-珍3 小时前
报错下载android sdk失败
android·java
齊家治國平天下4 小时前
AAOS 电源管理深度解析:休眠/唤醒/功耗优化
android·车载系统·aaos·aosp·电源管理·休眠唤醒·carpowermanager
Xzaveir5 小时前
企业号码展示不可观测怎么办:状态机、拨测事件与异常回放
android·人工智能
2501_916007475 小时前
iOS和macOS应用程序性能分析和优化工具使用综合指南
android·macos·ios·小程序·uni-app·iphone·webview
黄林晴5 小时前
Nearby Connections 重大变更:不再自动开启 Wi-Fi / 蓝牙,适配指南
android
恋猫de小郭6 小时前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter
HLC++19 小时前
Linux的进程间通信
android·linux·服务器
爱笑鱼1 天前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼1 天前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon1 天前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化