用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) / 更多相关文章
随机推荐