Android 源码编译生成framework.jar

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//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 。

你可能感兴趣的:(Android,编译,android,framework)