一直想編譯 Android 的源碼革砸,苦于 Mac 硬盤太小除秀,PC 上的硬盤也只有 128G,想著機(jī)械盤編譯又太慢算利,最終咬牙册踩,在淘寶入了一個(gè) 256 的SSD,裝了個(gè) Ubuntu 14.04效拭,然后開(kāi)始搗鼓暂吉,現(xiàn)在記錄一下?lián)v鼓的過(guò)程
-
Android 開(kāi)發(fā)環(huán)境
-
首先是 JAVA 環(huán)境
apt-cache search openjdk //用于找到 jdk 版本胖秒,會(huì)出現(xiàn)一大堆列表,找到j(luò)dk慕的,復(fù)制下名字 sudo apt-get install openjdk-7-jdk//根據(jù)上面找到的扒怖,開(kāi)始安裝 java -version//測(cè)試
-
然后是 Android SDK 和 Android stuido 開(kāi)發(fā)環(huán)境(這步與后面源碼編譯并無(wú)很大關(guān)系,但是還是做了业稼,因?yàn)楹笃趯?dǎo)入源碼,又要折騰一次Android studio蚂蕴,此處其實(shí)可以不用下載sdk低散,因?yàn)樵创a可以編譯出sdk,開(kāi)始不知道骡楼,就直接下載了)
在AndroidDevTools找到自己想要的版本熔号,我找了Android stuido 2.0 beta6,然后下載,下載后解壓鸟整,將文件整個(gè)文件夾拷貝到自己的工作目錄下cd 工作目錄/android-studio ./bin/studio.sh
看到Android studio 運(yùn)行界面引镊,等待后,選擇 Cancel
選擇 Re-run the setup wizard on the next Android Studio startup(Recommended)
然后選擇 OK
繼續(xù)選擇右下角的 configrution
選擇 SDK Manager
點(diǎn)擊 Launch Standalone SDK Manager
左上角 Tools=>Options..
然后根據(jù) AndroidDevTools 中的教程篮条,修改sdk鏡像源
下載鏡像
-
-
拉取源碼
-
首先是
repo
工具弟头,這是拉取谷歌家很多源碼都會(huì)用到的工具
清華鏡像,造福社會(huì)涉茧。
清華的教程其實(shí)寫的很清楚了赴恨,不過(guò)考慮到repo
可能有其他用處,我把它配置到了.bashrc
里curl https://storage.googleapis.com/git-repo-downloads/repo > ~/Tools/repo chmod a+x ~/Tools/repo sudo gedit .bashrc
末尾加上
export REPO = /home/flyer/Tools/repo export PATH=$PATH:$REPO 然后就是建立工作環(huán)境初始化倉(cāng)庫(kù) mkdir AOSP cd AOSP repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest //這里可能會(huì)讓你配置一下 git username 和 mail 地址伴栓,如果沒(méi)有 git 就安裝 git sudo apt-get install git sudo apt-get install git-core sudo git config user.name "flyer" sudo git config user.email "***@***"
考慮到 Android 版本很多伦连,可以通過(guò)拉取manifest,獲取版本信息
git clone git://aosp.tuna.tsinghua.edu.cn/aosp/platform/manifest cd manifest git branch -al//會(huì)顯示出所有的分支钳垮,也就是android的版本
拉取需要的版本
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r19 repo sync //開(kāi)始拉取代碼惑淳,這是一個(gè)很慢的過(guò)程,不過(guò)網(wǎng)速還是不錯(cuò)的
-
-
編譯源碼
-
安裝ccache(一個(gè)C++/C的高效編譯器)
sudo apt-get install ccache source ~/.bashrc
-
安裝第三方依賴(下面是可能會(huì)用到的依賴饺窿,我全跑了一遍歧焦,防止編譯的時(shí)候出現(xiàn)問(wèn)題,畢竟編譯時(shí)間太長(zhǎng)短荐,不可能一直看著)
sudo apt-get install git-core//前面已經(jīng)安裝了 sudo apt-get install git//前面已經(jīng)安裝了 sudo apt-get install gcc sudo apt-get install gnupg sudo apt-get install flex sudo apt-get install bison sudo apt-get install gperf sudo apt-get install build-essential sudo apt-get install zip sudo apt-get install curl sudo apt-get install libc6-dev sudo apt-get install libncurses5-dev:i386 sudo apt-get install x11proto-core-dev sudo apt-get install libx11-dev:i386 sudo apt-get install libreadline6-dev:i386 sudo apt-get install libgl1-mesa-dev sudo apt-get install g++-multilib sudo apt-get install mingw32 sudo apt-get install tofrodos sudo apt-get install python-markdown sudo apt-get install libxml2-utils sudo apt-get install xsltproc sudo apt-get install zlib1g-dev:i386 sudo apt-get install dpkg-dev‘ sudo apt-get autoremove sudo apt-get autoclean//最后我清理了一下無(wú)用的東西
-
編譯
cd AOSP //進(jìn)入源碼根目錄 prebuilts/misc/linux-x86/ccache/ccache -M 50G //設(shè)置ccache大小 . build/envsetup.sh//加載環(huán)境變量 lunch 1 //此處會(huì)出現(xiàn)需要選擇版本倚舀,我編譯的是虛擬機(jī)的,直接選了 1 make j2 //j4為4核心忍宋,看你電腦配置 #### make completed successfully (6:38:43 (hh:mm:ss)) #### //然后第二天睡醒痕貌,看到successfully
-
-
運(yùn)行
emulator//開(kāi)啟模擬器 //這中間,我由于去上班了糠排,直接把電腦關(guān)了舵稠,導(dǎo)致后面直接運(yùn)行 emulator 命令無(wú)效 //重新加載一遍環(huán)境即可 . build/envsetup.sh lunch 1 emulator
大功告成,特此記錄