Android 源码编译生成framework.jar

15 篇文章 1 订阅

Debug 系统应用时,导入到 AS 会有大量报红代码,基本都是 framework 和新增模块的,需要导入对应的 jar 包才方便代码查看和跳转。

一般来说,使用 Android 源码全编译之后,
会生成 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

这个就是我们需要的 framework.jar (重命名一下),导入到 AS 里后,相关的代码就不会报红了。

但有些代码编译之后没有生成这个,
生成的是 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-header.jar
这个不是我们需要的。
导入到 AS 里,相关的代码还是会报红。

既然有源码,自己编译生成 framework.jar 试试。

在已经编译过的代码上,执行如下命令编译,

make javac-check-framework

Android 源码编译使用 jack 编译的。
javac-check 是指用 javac(而非 jack)编译 java文件或模块,需要在已经完整编译后使用。
make javac-check-framework 意思是用 javac 编译 framework 模块。
javac 编译 framework 模块 可以生成 jar 包。

会生成如下文件,

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
out/target/product/<product_name>/obj/JAVA_LIBRARIES/framework_intermediates/javalib.jar

前者就是我们需要的。

扩展,

对于其他模块,对应的 jar 包生成路径是

out/target/common/obj/JAVA_LIBRARIES/xxx_intermediates/classes.jar

xxx 就是对应的模块的名字,如 android-support-v7-recyclerview_intermediates 。

对于 app ,对应的 jar 包生成路径是

out/target/common/obj/APP/appname_intermediates/classes.jar

app_name 就是 app 的名称,如 SystemUI_intermediates 。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值