Android (AAOS) 13 编译中间产物(Wifi Jar)

Android 13 framework-wifi 编译产物

在 Android 13 (API 33) 及更高版本中,Wi-Fi 框架已完全模块化(Mainline Module)。其源码位于 packages/modules/Wifi,编译产物主要分布在 Soong 中间目录、APEX 软件包和系统镜像中。

1. 编译产物核心路径总览

产物类别 物理路径 (相对于 out/ 目录) 主要用途
Soong 中间产物 soong/.intermediates/packages/modules/Wifi/framework/framework-wifi/ 包含编译过程中的 .class、.dex 及未签名的 JAR。
模块 SDK 产物 soong/.intermediates/packages/modules/Wifi/framework/framework-wifi-module-sdk/ 供其他模块依赖的存根 (Stub) 库。
Target 预置产物 target/product/[device]/obj/JAVA_LIBRARIES/framework-wifi_intermediates/ 链接后的目标文件,用于最终镜像合成。
APEX 镜像文件 target/product/[device]/system/apex/com.android.wifi.apex Wi-Fi 模块的最终发布格式(压缩包)。

2. 详细产物结构解析

A. Soong 编译中间层 (Intermediates)

当你执行 m framework-wifi 时,这是最关键的目录:

out/soong/.intermediates/packages/modules/Wifi/framework/framework-wifi/android_common/

  1. javac/ :

    • framework-wifi.jar: 包含标准 Java 字节码 (.class 文件)。
    • 用于静态扫描或简单的代码逻辑分析。
  2. dex/ :

    • framework-wifi.jar: 包含经过 D8 转换后的 Dalvik 字节码 (classes.dex)。
    • 注意:这是真正运行在 Android 虚拟机上的代码格式。
  3. combined/ :

    • framework-wifi.jar: 整合后的 JAR 包,通常包含资源和代码,用于最终链接。

B. APEX 模块内路径

由于 Wi-Fi 是一个 Mainline 模块,它最终被封装在 com.android.wifi.apex 中。在设备运行或镜像挂载后,其路径如下:

  • 运行时路径 : /apex/com.android.wifi/javalib/framework-wifi.jar
  • 镜像构建路径 : out/target/product/[product]/system/apex/com.android.wifi/javalib/framework-wifi.jar

3. 关键文件作用说明

  • framework-wifi.jar: Wi-Fi 框架的核心实现。

  • framework-wifi.res.jar: (如果存在) 包含 Wi-Fi 相关的资源文件(如定义的 Overlay 属性)。

  • API 签名文件:

    • 位于 prebuilts/sdk/current/public/api/framework-wifi.txt。
    • 如果你修改了 framework-wifi 的 public 或 system 接口,编译会报错,提示你运行 m update-api 更新此处的文件。

4. 常用调试操作

如何快速查找刚编译出的 JAR 包?

如果你不确定具体目录名(有时会有变动),可以在根目录执行:

Bash

arduino 复制代码
find out/soong/.intermediates/packages/modules/Wifi -name "framework-wifi.jar"

如何确认我的改动已进入 DEX?

你可以使用 Android SDK 自带的 dexdump 工具查看编译产物:

Bash

bash 复制代码
dexdump -d out/soong/.intermediates/packages/modules/Wifi/framework/framework-wifi/android_common/dex/framework-wifi.jar | grep "你的类名或方法名"

5. 编译小贴士 (Tips)

  • 全量与模块编译 :使用 m framework-wifi 只会编译该库,但不会重新打包 APEX。若需更新镜像,建议执行 m com.android.wifi。
  • Symbols :如果你在进行本地调试或需要符号表,请关注 out/target/product/[device]/symbols/apex/com.android.wifi/... 路径下的文件。

适用版本: Android 13 (Tiramisu) / AAOS 13

相关推荐
Dovis(誓平步青云)1 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码3 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程3 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程6 小时前
【现代声明式UI学与练】第9课 性能优化——渲染优化、列表优化、内存优化、启动优化
学习·flutter·react native·ui·性能优化·swiftui·android jetpack
传奇开心果编程6 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程7 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓8 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程8 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer