Android 的原始碼現在要求開發環境的Java 版本為1.5 . 當時在搭建開發環境的時候,沒有注意到 java 版本的要求,就安裝了 1.6 版的java。 結果在編譯的時候遇到了java 版本檢測不通過的問題。
開啟檔案 build/core/main.mk ,找到 java 版本檢測的地方,屏蔽原來的代碼,添加新的一行判斷為:
# Check for the correct version of java
#java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')
java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')
java 版本判斷有兩處,另外一處也同樣修改為:# Check for the correct version of javac#javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]') 這樣修改就可以在編譯 Android 的時候,順利編譯通過。後來在編譯 Android SDK 的時候,遇到提示:Docs droiddoc: out/target/common/docs/dxjavadoc: 錯誤 - 在 doclet 類 DroidDoc 中,方法 start 已拋出異常 java.lang.reflect.InvocationTargetExceptioncom.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的類檔案1 錯誤make: *** [out/target/common/docs/dx-timestamp] Error 45 其實在編譯過程中我是不需要編譯SDK 的文檔部分的,這個問題是由於java 的版本不是 1.5 的原因。 不想再去把開發環境中的java 版本換成 1.5的,便決定屏蔽了 droiddoc 的編譯。 開啟 build/core/droiddoc.mk 檔案找到 ALL_DOCS += $(full_target) 把這一行屏蔽。既可