Android2.3.1源碼編譯
編譯2.3.1源碼,用于學(xué)習(xí)老羅的《Android系統(tǒng)源碼解析》
安裝虛擬機(jī)
Android源碼編譯必須在Linux環(huán)境下才能運(yùn)行,所以必須使用Linux系統(tǒng),在這里使用ubuntu14版本,虛擬機(jī)使用vmware12,這些可自由在網(wǎng)絡(luò)上下載。
安裝虛擬機(jī)看個(gè)人習(xí)慣,一般配置配置虛擬硬盤大小最好在70G以上,如果要下載編譯高版本的Android,那么硬盤設(shè)定在200G以上比較好。
配置虛擬機(jī)環(huán)境
Android2.3.1安裝需要java1.6版本,需要下載然后手動(dòng)配置環(huán)境變量。
安裝其他編譯時(shí)依賴的軟件.
sudo apt-get install gnupg
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install gperf
sudo apt-get install zip
sudo apt-get install curl
sudo apt-get install build-essential
sudo apt-get install libesd0-dev
sudo apt-get install libwxgtk2.8-dev
sudo apt-get install libsdl-dev
sudo apt-get install lsb-core
sudo apt-get install lib32readline-gplv2-dev
sudo apt-get install g++-multilib
sudo apt-get install lib32z1-dev
sudo apt-get install libswitch-perl
sudo apt-get install valgrind
sudo apt-get install phablet-tools
sudo apt-get install git-core gnupg
下載源碼
由于Google無法正常鏈接,所以這里采用了清華大學(xué)開源鏡像網(wǎng)站進(jìn)行下載源碼,地址如下:
下載詳細(xì)方法網(wǎng)站上有,這里粗略的寫一下:
下載 repo 工具:
repo同步鏈接的一個(gè)工具,用于從服務(wù)器獲取不同版本的android源碼
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
下載初始化包
由于初始化包比較大,所以不推薦大家直接通過http下載,可以通過各種下載工具直接下載初始化包,網(wǎng)址如下:
由于我們需要android2.3.1的源碼,因此不需要選擇最新的初始化包,可以選擇最小的初始化包。
初始化源碼
在下載完初始化包之后,假設(shè)pc與虛擬機(jī)的ubuntu之間設(shè)定的共享文件夾為Share(Windows位于D:Share, ubuntu為mnt/hgfs/Share).
將aosp(初始化包)放置在share中。
然后在Ubuntu中創(chuàng)建工作目錄(可隨意命名),用于放置android源碼。
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
然后將aosp解壓到WORKING_DIRECTORY,然后在命令行初始化:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-2.3.1_r1
獲取android分支2.3.1的源碼。
然后同步源碼樹(以后只需執(zhí)行這條命令來同步):
repo sync
android2.3.1源碼較小,一般只需要三四個(gè)小時(shí)就能下載完畢。
下載完就可按照書上所說進(jìn)行編譯源碼。
下載Android內(nèi)核
在《Android系統(tǒng)源碼解析》中需要Android內(nèi)核源碼,但是也是需要谷歌的地址,可以按照書中所說,把git地址更換為清華大學(xué)開源鏡像網(wǎng)的地址進(jìn)行下載,網(wǎng)址如下:
這樣就可以獲取到相同的內(nèi)核地址
源碼查看工具
Android系統(tǒng)的源碼在Ubuntu可以使用Android studio來查看,但是需要先編譯源碼,android2.3.1編譯源碼只需要兩三個(gè)小時(shí),期間可能出現(xiàn)一系列錯(cuò)誤,但是都可以搜索到解決答案。
在編譯完源碼后,在源碼根目錄執(zhí)行:
mmm development/tools/idegen/
mmm命令需要在源碼根目錄先執(zhí)行:
. build/envsetup.sh
執(zhí)行后才可使用mmm命令。
執(zhí)行后在根目錄繼續(xù)執(zhí)行:
sh ./development/tools/idegen/idegen.sh
就能在源碼根目錄生成android.iws, android.ipr, android.iml 。使用android studio打開android.ipr即可