You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编译含额外日志的android.jar?AOSP编译路径及方法问询

编译含自定义日志的android.jar完整指南

1. AOSP构建是否生成android.jar?

是的,android.jar是AOSP构建framework核心库的关键产物,包含你修改的Activity、Window这类系统核心类的字节码。它分为两种:一种是供系统内部使用的framework.jar,另一种是对外暴露SDK接口的android.jar。

2. android.jar的生成路径

不同AOSP版本路径略有差异,常见路径如下:

  • framework核心类编译产物:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar(这个就是包含你修改代码的核心jar,可重命名为android.jar使用)
  • 系统framework包:out/target/product/<你的设备代号>/system/framework/framework.jar(系统运行时加载的库,包含所有framework类)
  • SDK版android.jar:out/host/linux-x86/framework/android.jar 或 out/host/linux-x86/sdk/android-sdk_eng.<用户名>_linux-x86/platforms/android-<API级别>/android.jar(供开发SDK使用的对外API包)

3. 编译android.jar的几种方式

方式一:完整构建AOSP

适合首次构建或修改较多系统代码的场景:

source build/envsetup.sh
lunch <你的设备代号>-userdebug  # 示例:aosp_arm64-userdebug
make -j$(nproc)  # 用CPU核心数加速构建

方式二:单独编译framework模块

如果只修改了framework核心类,无需完整构建,节省时间:

source build/envsetup.sh
lunch <你的设备代号>-userdebug
make framework -j$(nproc)

执行后会重新编译framework相关代码,生成上述路径的jar包。

方式三:生成SDK专用android.jar

如果需要的是符合SDK规范的android.jar(仅包含对外公开API):

source build/envsetup.sh
lunch <你的设备代号>-userdebug
make sdk -j$(nproc)

产物会生成在SDK对应的platform目录下。

4. clean build后找不到android.jar的解决办法

clean操作会清空所有构建产物,所以你必须重新执行构建命令才能生成jar文件。只执行make clean而不后续构建,自然找不到任何产物。解决步骤:

  1. 执行source build/envsetup.sh && lunch <你的设备代号>-userdebug
  2. 执行make -j$(nproc)或make framework -j$(nproc)完成构建
  3. 构建完成后去上述对应路径查找

额外提示

  • 你添加的日志代码会被编译进classes.jar和framework.jar中,系统运行时会执行这些日志逻辑。
  • 如果要在自己的应用中使用自定义android.jar,需要替换Android Studio项目中SDK目录下的对应文件,注意保持API级别一致,避免兼容性问题。

内容的提问来源于stack exchange,提问作者Tushar Gopale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:52:12