標籤:
一、下載android 4.4.4_r2源碼
1、建立目錄:cd ~ && mkdir bin src
2、切換到bin 目錄,按官方教程初始化好repo檔案3、設定檢出android源碼相關的host ip地址為nslookup g.cn查詢出來的IP地址;本次編譯使用的host ip地址(加入到hosts列表)
203.208.46.148 googlesource.com203.208.46.148 www.googlesource.com203.208.46.148 android.googlesource.com64.233.168.87 chromium.googlesource.com64.233.168.87 gerrit.googlesource.com64.233.168.87 kernel.googlesource.com
4、在src目錄執行../bin/repo sync,等下載好源碼,現在是android 5.0發布之後,源碼下載完後有70G+,裡面有個git的索引目錄.repo有60G+之大
二、編譯android 4.4.4_r2源碼
1、修改系統架構源碼,需要修改標頭檔如下
/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:156:/System/Library/Frameworks/QTKit.framework/Headers/QTMovieModernizer.h:163:
編譯qume時候報錯:error: expected a property attribute before ‘atomic’網上搜尋得出結論是新版xcode編譯預設了objc的property都是atomic的,所以不能定義 property attribute 為 atomic,都說要裝xcode5.x來編譯。沒那閑工夫,直接注釋QTMovieModernizer.h:156, 163兩行的atomic關鍵字,改後可以xcdoe 6.1.1正常編譯過去。
2、修改android源碼編譯指令碼,使其支援10.10系統下編譯。直接修改檔案
//相關修複方法從此博主小球球處得知,安裝編譯環境什麼都都是學習博主小球球的,感謝。vi build/core/combo/HOST_darwin-x86.mk
//找到找到mac_sdk_versions_supportedmac_sdk_versions_supported := 10.6 10.7 10.8 改成 mac_sdk_versions_supported := 10.9 10.10
修改external/chromium_org/base/android/jni_generator/jni_generator.py,按博主提示得到補丁修改,補丁片段就是檢查系統版本,決定子進程啟動參數是否帶-fpreprocessed
修改build/core/combo/HOST_darwin-x86.mk
ifeq ($(mac_sdk_version),10.8) // 10.8改成我們的sdk版本10.9
# Mac SDK 10.8 no longer has stdarg.h, etc
據說到這裡博主小球球就可以愉快的編譯下去了,可惜我不能。還需處理幾個步驟處理一下。
3、移除NDK_ROOT環境變數,在開始編譯支援需要unset NDK_ROOT, 否則編譯出現webrtc神馬的錯誤。如果你沒裝NDK,沒設定NDK_ROOT環境變數忽略之。
4、為SDL打源碼補丁,為什麼g神們就沒打上補丁呢,只好我們自己來修改源碼,參考補丁地址是http://hg.libsdl.org/SDL/changeset/bbfb41c13a87,在源碼目錄找到並開啟檔案SDL_QuartzVideo.h,找到CGDirectPaletteRef palette所在行數,前後加入判斷,如下:
#if (MAC_OS_X_VERSION_MIN_REQUIRED < 1070) CGDirectPaletteRef palette; /* palette of an 8-bit display */ #endif
5、至此我們就真的可以愉快的編譯下去了,我使用的的是遠程mac機器來編譯,所以在ssh 到遠程mac後切換到android src目錄後執行
source build/envsteup.sh //匯入一下環境變數lunch 1 //估計產生arm-eng的編譯配置吧nohup make -j4 > ~/android-build.log 2>&1 & //很奇怪的是,需要重新登入ssh,才能順利編譯,在本地表現為需要重新開啟新視窗,否則出現是奇怪分隔字元錯誤。
至此,我們的make就在後台使用4線程去編譯了,2小時完成組建了20G的out目錄。
osx 10.10.1編譯 Android 4.4.4_r2