1. 程式人生 > >Mac OS X 下 Android6.0原始碼的下載與編譯

Mac OS X 下 Android6.0原始碼的下載與編譯

原文連結:https://blog.csdn.net/loften_93663469/article/details/51503293

為什麼要閱讀原始碼

  1. 瞭解基層,高層才能更好地工作。
  2. 能夠理解Android設計者的意圖。
  3. 能夠學習優秀開源專案的程式碼風格和設計理念。

安裝步驟

Step 1. 建立一個大小寫敏感的磁碟映象

$ sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/android.dmg
  • 1

當然,你可能覺得80g不夠用,就自己給大點,只要不超過映象檔案所在磁碟的剩餘空間就行,還有點就是映象檔案在磁碟上佔的空間大小是你向映象檔案裡放置的檔案的實際大小,而不是上面定義的80g,這個最大空間的大小將來還能更改,所以不必擔心弄太大佔了空間,如果通過上面已經建立了,你可以通過下面重新設定映象大小

$ sudo hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
  • 1

Step 2. 載入分割槽

$ sudo hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android
  • 1

Step 3. 下載並安裝需要的輔助工具

$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
  • 1

Step 4. 設定一個檔案描述符限制

Mac 系統下預設只能同時開啟 1024 個檔案,而在進行 Android 原始碼編譯時有可能會超出這個限制,因此需要解除這個限制。在~/.bash_profile中新增以下內容:

#set the number of open files to be 1024
ulimit -S -n 1024
  • 1
  • 2

至於~/.bash_profile你可以這樣開啟:

1.啟動終端Terminal

2.進入當前使用者的home目錄 
輸入cd~

3.建立.bash_profile 
輸入touch .bash_profile

4.編輯.bash_profile檔案 
輸入open -e .bash_profile

5.新增上面內容,儲存檔案,關閉.bash_profile

6.更新剛配置的環境變數 
輸入source .bash_profile

Step 5. 安裝Repo 
Repo是一個輔助於Git管理Android版本及分支的工具。

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
  • 1
  • 2
  • 3
  • 4
$ tar xf aosp-latest.tar
$ cd AOSP   # 解壓得到的 AOSP 工程目錄
$ repo sync # 正常同步一遍即可得到完整目錄
  • 1
  • 2
  • 3

這裡如果出問題卡住,重新同步。如果是repo執行出錯的話,就重新執行Step5。

Step 7. 進入 Step 2 載入的分割槽 
注意,先將之前解壓同步完的 AOSP 資料夾拷貝到分割槽中。 
接著,

$ cd /Volumes/android/AOSP/
  • 1

如果出現-bash: cd: /Volumes/android/AOSP/: No such file or directory,記得執行Step2步驟。

Step 8*. 編譯

$ source build/envsetup.sh
  • 1

為閱讀原始碼

$ lunch aosp_arm-eng
  • 1

最後

$ sudo make -j4
  • 1

出現問題,解決,再 sudo make -j4 ,迴圈往復,直到最su終編譯完成。不用管出現的多個 warning ,有 error 時解決完繼續下去。我遇到過Unsupported curl 和 Out of memory error,其實一般有問題百度、谷歌、Stack Overflow 找,總可以解決的,耐心點就行。—>不過,我找的真的快崩潰了,試了好多種,差點放棄了,還好想著白富美,堅持了下去。。。

終於,不知等了多久,編譯終於完成!!心情是相當的激動的,但是,既然編譯好原始碼,我們起碼得去看下吧,想閱讀原始碼又不只是去開啟一個個檔案看,當然要藉助工具了,這裡,我們通過Android Studio閱讀原始碼。

在上面編譯成功後,繼續在原始碼的根目錄下,即/Volumes/android/AOSP/下執行

$ mmm development/tools/idegen/
  • 1

稍等片刻,接著

$ sh ./development/tools/idegen/idegen.sh
  • 1

最終完成後,開啟 Android Studio ,選擇開啟一個現有的 Android Studio 專案,選擇 Android 原始碼的根目錄,匯入android.ipr 檔案,最後,附上原始碼圖

img

完美散花!!