Download Android Source Code

本篇文章要介紹如何下載Google官方提供的Android原始碼。

首先要先將環境準備好,詳細內容可以參考官方的文獻:
Establishing a Build Environment

泰勞本身的環境如下:
Ubuntu 14.04 LTS
OpenJDK 7
git 1.9.1
curl 7.35.0

Ubuntu 14.04 需要另外安裝一些套件:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
libgl1-mesa-dev libxml2-utils xsltproc unzip

以上需求都建置好就可以進行下一個步驟囉!

參考文獻:
Downloading the Source

安裝Repo

1.在家目錄底下建立一個bin目錄,並將它加入環境變數。

$ mkdir ~/bin
$ PATH=~/bin:$PATH

2.下載Repo至bin目錄底下,並修改它的執行權限。

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo 

初始化Repo

1.建立一個空目錄(待會下載的原始碼將會放在此目錄底下)

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY 

#泰勞習慣將目錄名稱設定為欲下載的版本名稱
例如:android-7.0.0_r6,就下mkdir android-7.0.0_r6

2.設定git

$ git config --global user.name stevenash
$ git config --global user.email ilovestevenash@gmail.com

3.初始化repo

$ repo init -u https://android.googlesource.com/platform/manifest

#如果你想要指定非master的版本,請加上 -b 和版本標籤

$ repo init -u https://android.googlesource.com/platform/manifest -b android-x.x.x_xx

下載原始碼

$ repo sync

Android原始碼將會載入至你的WORKING_DIRECTORY目錄底下。另外,sync這個作業將會花費不少時間喔!

下載完成就可以開始研究囉!如果有需要也可以透過以下方法將原始碼匯入至Android Studio,在觀看以及追蹤程式碼時「可能」會方便一些。

參考網址:
Can we use Android studio for AOSP development ?
自己動手調試Android原始碼

方法很簡單,只要在原始碼根目錄執行以下指令即可。

$ make idegen && development/tools/idegen/idegen.sh

>然後打開Android Studio
>選擇Open an existing Android Studio project
>選擇根目錄底下的android.ipr

當然,也可以選擇只導入部份原始碼,只要在android.iml裡面將不想導入的部份標明清楚。

<excludeFloder url="file://$MODULE_DIR$"/xxxxx>

例如:只需要導入framework和packages,標示方法如下所示。

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/ndk" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/tools" />

泰勞本人其實不太建議將原始碼導入Android Studio,因為真的很佔資源,不過可以獲得比較舒適的視覺饗宴?

留言

這個網誌中的熱門文章

Repo 實用指令

程式語言常用之符號與詞彙 - 中英文對照

什麼是 Bootloader?