本文主要包含以下幾個方面
- 創(chuàng)建Android源碼的編譯環(huán)境(Mac OS X)
- 下載Android源碼
- 編譯Android源碼
- 將Android源碼導入到Android Studio閱讀
本文所依賴運行環(huán)境
- Mac OS X 10.11.2
- JDK 8
- Xcode 7.2
創(chuàng)建Android源碼的編譯環(huán)境(Mac OS X)
一、創(chuàng)立一個大小寫敏感的磁盤鏡像
因為Mac OS 文件管理系統(tǒng)對于文件名大小寫特殊處理,我們需要建立一個大小寫敏感的磁盤鏡像
我們可以用Mac OS自帶的磁盤工具軟件,也可以使用命令行,在終端中敲入:
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
這樣就在你的HOME目錄下建立了一個名字為android.dmg或者android.dmg.sparseimage的文件。
如果你隨后想調(diào)整該磁盤鏡像的大小,可以使用以下命令:
# hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
現(xiàn)在,你已擁有一個在HOME目錄下得android.dmg或者android.dmg.sparseimage文件。
所以你可以在你的~/.bash_profile中加入以下方法:
加載鏡像:
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
卸載鏡像:
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
二、安裝必須的軟件和包庫
1.安裝JDK
最近的Android版本(master分支)安裝 jdk 8u45 或者更新的。所需jdk版本參考鏈接:https://source.android.com/source/requirements.html
2.必需的包
- 安裝Xcode
- 安裝MacPorts
- 通過MacPorts安裝gmake、git 和GPG
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
如果使用Mac OS X v10.4,還需要
$ POSIXLY_CORRECT=1 sudo port install bison
3.設置文件描述符限制
在Mac OS,在同時進行的文件描述符數(shù)的缺省限制開太低,高度并行構建過程可能會超過此限制。
為了提高上限,添加以下行到你的?/ .bash_profile中:
# set the number of open files to be 1024
ulimit -S -n 1024
下載Android源碼
一、安裝Repo
1.確保擁有~/bin目錄
$ mkdir ~/bin
$ PATH=~/bin:$PATH
2.下載Repo工具并確保他是可執(zhí)行的
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
二、安裝一個Repo Client
1.建立代碼要下載到的目錄:
在第一項內(nèi)容中我們已經(jīng)建立了一個區(qū)分大小寫的磁盤鏡像,加載之,然后在里面執(zhí)行:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
2.設置您的Git賬戶:
$ git config --global user.name "Your Name"
$ git config --global user.email "you@example.com"
3.執(zhí)行repo init ,你必須指定一個mainfest的URL,這將決定接下來下載的版本。
$ repo init -u https://android.googlesource.com/platform/manifest
如果需要下載一個master之外的分支,通過-b 指定。所有分支的列表: Source Code Tags and Builds。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
執(zhí)行完成會看到相應提示,這時Repo客戶端的目錄下將會包含.repo 目錄。
三、開始下載代碼
$ repo sync
取決于你的網(wǎng)速。這將會花費一個小時或者更多時間才能下載完。
編譯Android源碼
設置環(huán)境
$ source build/envsetup.sh
或者
$ . build/envsetup.sh
選擇一個編譯的目標
$ lunch aosp_arm-eng
| Buildtype | Use |
|---|---|
| user | limited access; suited for production |
| userdebug | like "user" but with root access and debuggability; preferred for debugging |
| eng | development configuration with additional debugging tools |
編譯源碼
$ make -j4
編譯過程中遇到的問題
據(jù)說人品好的可以一次編譯通過,但是我在其中遇到了幾個問題:
1.內(nèi)存移除 給出的提示是:GC overhead limit exceeded Try increasing heap size with java option '-Xmx<size>'
于是我根據(jù)提示增加了分配內(nèi)存:
export JVM_ARGS="-Xmx4096m -XX:MaxPermSize=1024m"
之后再次運行,編譯一段時間后依然OOM報錯:
于是我再次增加了內(nèi)存:
export JVM_ARGS="-Xmx6144m -XX:MaxPermSize=2048m"
運行一段時間依然報錯...只能求助Google:得一文:http://www.cnblogs.com/hucn/p/3572384.html
將設置改為:
export JVM_ARGS="-Xmx6144m -XX:-UseGCOverheadLimit"
重新編譯,然后雖得到無數(shù)Warning,漫長等待后還是編譯通過了。
將Android源碼導入到Android Studio閱讀
請參考工匠若水的博客,寫的很詳細:
使用Android Studio導入源碼
參考鏈接
Android 源碼官網(wǎng)
OS X 10.11下載和編譯Android6.0源碼
Mac OSX 10.11 EI 編譯 Android 6.0 Marshmallow 源碼
在Mac 10.11中編譯Android 6.0源碼
Android Open Source Project Site