Android编译报错

在大环境中用make编译app时有时候会报下面的错误。

ninja: error: 'out/target/common/obj/JAVA_LIBRARIES/widget_intermediates/classes-header.jar', needed by 'out/target/common/obj/APPS/Mms_intermediates/classes-full-debug.jar', missing and no known rule to make it

17:42:04 ninja failed with: exit status 1


从错误看,是找不到header包。但是单编widget这个包的时候,生成的又没有这个header包,全编的时候才有,所以要把这个模块的mk文件include到MMS模块的mk文件中,重新编译一下就有了。

用JD-JUI 把这个classes-header.jar打开看一下,发现这个文件包里面只有各个类的函数声明,没有具体的实现,就类似C语言的.h文件,是在编译java文件的时候同步生成的,可以查系统 的mk编译文件。


在android 的external 目录下有一个 Turbine 包,应该是生成jar的header文件的。

在 build/make/core/java.mk 里面有header的生成,希望有时间仔细研究一下。

# Run jarjar before generateclasses-header.jarif necessary.274 ifneq($(strip$(LOCAL_JARJAR_RULES)),)275 $(full_classes_header_jarjar):PRIVATE_JARJAR_RULES:=$(LOCAL_JARJAR_RULES)276 $(full_classes_header_jarjar): $(full_classes_turbine_jar) $(LOCAL_JARJAR_RULES) | $(JARJAR)277 @echoHeaderJarJar: $@278 $(hide) $(JAVA)-jar$(JARJAR)process$(PRIVATE_JARJAR_RULES)$< $@279 else280 full_classes_header_jarjar:=$(full_classes_turbine_jar)281 endif282 

你可能感兴趣的:(Android编译报错)