標籤:
--------------------------------------------------寫在前面--------------------------------------------------
由於在編譯過程中遇到了很多奇奇怪怪的、難解的問題~~~
到後面,實際上還是在macmini中安裝了Ubuntu系統,最後在Ubuntu系統下完成的Android源碼編譯。
以下就是在OS X系統中進行編譯時間遇到的一些問題和解決辦法,聊作記錄。
--------------------------------------------------寫在前面--------------------------------------------------
參考:Build Android 5.1.1 on OSX 10.10 Yosemite With Xcode7
一、環境配置
電腦:Mac Mini (OS X 10.10.5)
記憶體:2 GB 1333 MHz DDR3
XCode:XCode 7.1 beta
二、錯誤
(1)
select: error: tool ‘xcodebuild‘ requires Xcode, but active developer directory ‘/Library/Developer/CommandLineTools‘ is a command line tools instance
解決辦法:
sudo xcode-select --switch /Applications/Xcode-beta.app
(2)
build/core/combo/mac_version.mk:38: *****************************************************build/core/combo/mac_version.mk:39: * Can not find SDK 10.10 at /Developer/SDKs/MacOSX10.10.sdkbuild/core/combo/mac_version.mk:40: *****************************************************
解決辦法:在build/core/combo/mac_version.mk檔案中將mac_supported_versions 增加10.11
mac_sdk_versions_supported := 10.6 10.7 10.8 10.9 10.10 10.11
(3)
build/core/main.mk:116: ************************************************************build/core/main.mk:117: You are building on a case-insensitive filesystem.build/core/main.mk:118: Please move your source tree to a case-sensitive filesystem.build/core/main.mk:119: ************************************************************build/core/main.mk:120: *** Case-insensitive filesystems not supported. Stop.
Android原始碼必須在大小寫敏感的檔案系統下編譯,而Mac OS預設不是大小寫敏感的,因此需要建立一個大小寫敏感的磁碟分割。
解決辦法:
使用磁碟工具分出一個格式為(MAC OS 日誌式、區分大小寫)的分區。
出現“分區無法驗證”的錯誤提示“無法分區”時,重啟電腦,在電腦一啟動時按下COMMAND+S不動,進入單一使用者模式,輸入fsck -f命令,修複磁碟後,輸入reboot重啟電腦,再次用磁碟工具進行分區即可。
(4)
host C++: validatekeymaps <= frameworks/base/tools/validatekeymaps/Main.cpp<built-in>:0: error: Unknown value ‘10.11’ of -mmacosx-version-minIn file included from system/core/include/cutils/log.h:1, from system/core/include/utils/KeyedVector.h:24, from frameworks/native/include/input/Input.h:26, from frameworks/native/include/input/KeyCharacterMap.h:26, from frameworks/base/tools/validatekeymaps/Main.cpp:17:system/core/include/log/log.h:35:20: error: stdarg.h: No such file or directorymake: *** [out/host/darwin-x86/obj32/EXECUTABLES/validatekeymaps_intermediates/Main.o] Error 1
解決辦法:
在build/core/combo/HOST_darwin-x86.mk裡面,增加10.10 10.11的判斷:
ifneq ($(filter 10.8 10.9 10.10 10.11, $(mac_sdk_version)),)# Mac SDK 10.8+ no longer has stdarg.h, etchost_toolchain_header := $($(combo_2nd_arch_prefix)HOST_TOOLCHAIN_ROOT)/lib/gcc/i686-apple-darwin$(gcc_darwin_version)/4.2.1/include$(combo_2nd_arch_prefix)HOST_GLOBAL_CFLAGS += -isystem $(host_toolchain_header)endif
(5)
<built-in>:0: error: Unknown value ‘10.11’ of -mmacosx-version-minmake: *** [out/host/darwin-x86/obj32/EXECUTABLES/validatekeymaps_intermediates/Main.o] Error 1
解決辦法:
下載低版本的XCode(XCode 6.1.1),擷取OS X 10.9的SDK.
OS X 10.10.5編譯Android5.1.1源碼