用java1.6编译android-froyo

下载了android froyo版本编译,提示java版本不对,找了一下判断的地方

在 build/core/main.mk中

 

找到这两句话把其中的5改成6就好了

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

 

 

一路编译下来没有问题,但是在make sdk的时候又出现了下面的错误

Docs droiddoc: out/target/common/docs/dx 
         javadoc: error - In doclet class DroidDoc, method start has thrown an 
         exception java.lang.reflect.InvocationTargetException 
         com.sun.tools.javac.code.Symbol$CompletionFailure: class file for 
         sun.util.resources.OpenListResourceBundle not found 

找了一下发现,网上的解决办法都是安装java 1.5去编译,偶又不想在系统上再装一个版本jdk了,研究了一下最新的版本anroid-AOSP代码已经没有这个问题了.

发现是在build/core/droiddoc.mk中添加了 -bootclasspath , 指定了rt.jar的路径。

对比两个代码生成了patch,可以保存到anroid源代码根目录然后用下面命令打补丁。

patch -p0

然后在make sdk就没有问题了。

--- build/core/droiddoc.mk 2010-12-02 15:57:04.595615674 +0800 +++ ../android_work1/build/core/droiddoc.mk 2010-12-02 15:23:52.579616182 +0800 @@ -57,6 +57,13 @@ $(full_target): PRIVATE_CLASSPATH:=$(LOCAL_CLASSPATH) full_java_lib_deps := +$(full_target): PRIVATE_BOOTCLASSPATH := +ifeq ($(BUILD_OS),linux) +# You have to set bootclasspath for javadoc manually on linux since Java 6. +host_jdk_rt_jar := $(dir $(HOST_JDK_TOOLS_JAR))../jre/lib/rt.jar +$(full_target): PRIVATE_BOOTCLASSPATH := $(host_jdk_rt_jar) +endif + ifneq ($(LOCAL_IS_HOST_MODULE),true) ifeq ($(LOCAL_JAVA_LIBRARIES),) @@ -165,6 +172,7 @@ -templatedir $(PRIVATE_CUSTOM_TEMPLATE_DIR) / -templatedir $(PRIVATE_TEMPLATE_DIR) / $(PRIVATE_DROIDDOC_HTML_DIR) / + $(addprefix -bootclasspath ,$(PRIVATE_BOOTCLASSPATH)) / $(addprefix -classpath ,$(PRIVATE_CLASSPATH)) / -sourcepath $(PRIVATE_SOURCE_PATH)$(addprefix :,$(PRIVATE_CLASSPATH)) / -d $(PRIVATE_OUT_DIR) / 

 

你可能感兴趣的:(android,java,android,javadoc,patch,shell,jdk)