1.獲取Android源碼
(1)下載repo
在用戶目錄下創(chuàng)建一個(gè)bin文件夾來(lái)存放repo匙隔,并把該路徑設(shè)置到環(huán)境變量中
mkdir ~/bin
PATH=~/bin:$PATH
下載repo腳本
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
設(shè)置repo可執(zhí)行權(quán)限
chmod a+x ~/bin/repo
(2)初始化repo客戶端
創(chuàng)建AndroidCode目錄用來(lái)存放源碼
mkdir AndroidCode
cd AndroidCode
運(yùn)行repo下載源碼
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1
repo sync
注:下載android源碼對(duì)網(wǎng)絡(luò)要求較高色鸳,如果中間出現(xiàn)錯(cuò)誤鱼冀,不要?jiǎng)h除已緩存的文件挪凑,重新執(zhí)行repo sync即可。如果網(wǎng)速不允許的話缘滥,推薦在論壇或者網(wǎng)盤(pán)上找資源眶明,在windows下載后拷貝到ubuntu下即可(無(wú)需配置repo)。無(wú)論采用哪種方式既琴,切記源碼的路徑一定不要含有中文占婉。
2.搭建編譯環(huán)境
(1)安裝編譯工具
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
注:安裝過(guò)程中可能出現(xiàn)版本不匹配的問(wèn)題,但是系統(tǒng)會(huì)給出應(yīng)安裝的正確版本提示甫恩,按照系統(tǒng)提示安裝即可逆济。如果出現(xiàn)不能安裝的情況,可以執(zhí)行 sudo apt-get update 后再進(jìn)行安裝,如果再安裝不上奖慌,則可以放棄抛虫,影響不大。如果電腦里沒(méi)有g(shù)it一定要安裝一下git简僧。
(2)安裝jdk
Android4.4的源碼編譯所使用的jdk為oracle jdk1.6建椰。由于不能直接下載,所以可在論壇或網(wǎng)盤(pán)上找資源下載jdk1.6.0_45.下載后為.bin文件
首先在/usr/loacl目錄下創(chuàng)建jvm文件夾用來(lái)存放jdk
mkdir /usr/local/jvm
然后進(jìn)入到Downloads下找到剛才下載的jdk岛马,復(fù)制到/usr/local/jvm中
cp jdk-6u45-linux-x64.bin /usr/local/jvm
然后進(jìn)入到/usr/local/jvm下棉姐,給.bin文件一個(gè)可執(zhí)行權(quán)限
chmod +x jdk-6u45-linux-x64.bin
執(zhí)行.bin文件進(jìn)行安裝
./jdk-6u45-linux-x64.bin
安裝成功后設(shè)置環(huán)境變量,打開(kāi)/etc/profile啦逆,添加如下幾行后保存
export JAVA_HOME=/usr/local/jvm/jdk1.6.0_45
export JRE_HOME=/usr/local/jvm/jdk1.6.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
修改后Log Out之后再進(jìn)入伞矩,在終端輸入java -version,顯示java version "1.6.0_45"則為配置成功
注:編譯的時(shí)候jdk一定要安裝1.6的最高版本夏志,即jdk1.6.0_45乃坤,否則編譯中會(huì)報(bào)錯(cuò),推薦下載地址http://download.csdn.net/detail/javahr/7291125
(3)安裝make
由于ubuntu16.04自帶make版本過(guò)高沟蔑,無(wú)法編譯侥袜。因此需要將make降至3.81或3.82版本
下載地址ftp://ftp.gnu.org/gnu/make/
下載后到Downloads下將文件拷到其他目錄(home下即可),然后解壓
tar -zxvf make3.8.2.tar.gz
解壓后進(jìn)入到make3.8.2的目錄下
./configure
make
make install
執(zhí)行完后在/usr/local/bin中可得到新版本的make溉贿,復(fù)制到/usr/bin中即可
注:make過(guò)程中可能會(huì)出現(xiàn)錯(cuò)誤枫吧,不用理會(huì),只要make install能夠成功執(zhí)行即可宇色。
(4)編譯
首先在.bashrc文件末尾追加export USE_CCACHE = 1
echo export USE_CCACHE=1 >> ~/.bashrc
然后導(dǎo)入編譯Android源碼所需的環(huán)境變量和其他參數(shù):
source build/envsetup.sh
然后
make clean
make update-api
make
注:其中前兩行不是必須的九杂,make update-api可能會(huì)出錯(cuò),但是影響不大宣蠕。
最后一行make也可以用make -j4(四線程編譯)例隆,電腦性能好的可以用make -j8或-j10,總之是二的倍數(shù)抢蚀。我怕電腦死機(jī)只用了make镀层,不過(guò)稍微有點(diǎn)慢。
如果沒(méi)什么意外的話等待編譯成功就好了皿曲。唱逢。。
(5)啟動(dòng)Android模擬器
source build/envsetup.sh
lunch sdk-eng
emulator
等待一會(huì)之后模擬器即可啟動(dòng)
(6)最后:
過(guò)程整理出來(lái)大概就是這樣屋休,由于上文好多命令都是我自己手敲上去的坞古,可能有的敲錯(cuò)了,給大家推薦兩篇參考博客
http://www.reibang.com/p/6d97b4a10b18
http://blog.sina.com.cn/s/blog_6e65e8cc0102wm83.html
如果順利的話整個(gè)編譯過(guò)程是不會(huì)出現(xiàn)網(wǎng)上所說(shuō)的各種錯(cuò)誤的劫樟。
祝大家編譯成功~