編譯Android 源碼

本文主要包含以下幾個方面

  1. 創(chuàng)建Android源碼的編譯環(huán)境(Mac OS X)
  2. 下載Android源碼
  3. 編譯Android源碼
  4. 將Android源碼導入到Android Studio閱讀

本文所依賴運行環(huán)境

  1. Mac OS X 10.11.2
  2. JDK 8
  3. 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.必需的包
  1. 安裝Xcode
  2. 安裝MacPorts
  3. 通過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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容