0x01:環境搭建
環境:Ubuntu 14.04
android 源碼:[android4.4.4 r1](https://pan.baidu.com/s/1miqu7ji),也可以自己去其他地方下載
JDK版本:[Oracle JDK 1.6](https://pan.baidu.com/s/1o83NCEm),這個官網也可以下載,具體下載方式見參考鏈接博客裏。
1.搭建編譯環境
將從官網下載的 jdk-6u45-linux-x64.bin 拷貝ubuntu 14.04.5系統的 /home/xxx/xxx/ 路徑下,執行解壓:
cd /home/xxx/xxx
sudo chmod u+x jdk-6u45-linux-x64.bin
sudo ./jdk-6u45-linux-x64.bin
添加Oracle JDK 1.60_45的路徑到ubuntu系統的環境變量中:
sudo gedit /etc/profile || sudo gedit ~/.bashrc
先打開全局環境變量添加文件 /etc/profile(或者bashrc),將jdk 1.60_45相關的環境變量添加到文件 /etc/profile(或者bashrc)的末尾,然後保存/etc/profile(或者bashrc)文件,關閉 gedit程序:
# 添加java環境變量
export JAVA_HOME=/home/xxx/xxx/jdk1.6.0_45
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
使用source更新下.profile文件:
source /etc/profile || source ~/.bashrc
執行命令 java -version 看下jdk 1.60_45是否安裝成功:
java -version
設置ubuntu系統默認jdk的擴展操作命令:
// 爲Oracle jdk創建/usr/bin的符號鏈接(數字300 表示優先級)
sudo update-alternatives --install /usr/bin/java java /home/xxx/xxx/jdk1.6.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /home/xxx/xxx/jdk1.6.0_45/bin/javac 300
// 後面兩項可以不配置
sudo update-alternatives --install /usr/bin/javah javah /home/xxx/xxx/jdk1.6.0_45/bin/javah 300
sudo update-alternatives --install /usr/bin/jar jar /home/xxx/xxx/jdk1.6.0_45/bin/jar 300
// jdk默認版本切換命令
sudo update-alternatives --config java
sudo update-alternatives --config javac
// 設置系統默認的JDK/JRE
sudo update-alternatives --set java /usr/bin/java java /home/xxx/xxx/jdk1.6.0_45/bin/java
sudo update-alternatives --set javac /usr/bin/javac javac /home/xxx/xxx/jdk1.6.0_45/bin/javac
安裝編譯依賴文件
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
如果安裝不通過需要執行下面命令
sudo apt-get remove libcheese-gtk23 libcheese7
sudo apt-get install libcheese-gtk23 libcheese7
然後就可以編譯了,如果出現其他錯誤,可以先在參考鏈接裏找一下解決方式。
0x03:編譯安卓源碼
1.初始化編譯環境
. build/envsetup.sh 或 source build/envsetup.sh
2.選擇編譯目標版本
直接執行 lunch 會列出14個編譯版本選項
這裏我需要arm下的,遂選擇了lunch 1
3.編譯
make -k(make失敗後繼續編譯,我直接用的這個,大概編譯兩三個小時)
make -jn(n是編譯時選擇多個核編譯)
0x02: 編譯過程中踩的坑
python版本問題
我這邊裝了pyenv多版本管理的,設置的python版本爲3.4.3的,然後除了pyenv,系統裏也裝了一個3.4.3的版本,然後android4.4.4裏的py腳本都是python2的腳本,導致某些語法衝突,所以可以想辦法設置默認python版本2.7的。或者先把python3卸了,但是有風險,ubuntu更新之後好多依賴python3的,卸載會很坑。
虛擬機不能解壓官方Oracle JDK 1.6
這個問題一開始我以爲是安裝包有問題,重新下了再試也還是不行,重新裝了虛擬機也不行,最後直接在真機裏解壓就沒事了。坑了我好久。
ubuntu 重啓之後界面出了問題
這個問題,一開始沒有認真看博客,所以糾結了好久才解決,最後解決方法跟博客裏的差不多。
進入命令行界面
> 進入了命令行界面,輸完用戶名和密碼
> 重裝gdm,sudo apt-get install gdm
> 設置啓動界面的風格:dpkg -reconfigure gdm
> 重啓reboot可登錄。
登陸後,進入終端恢復ubuntu最初登錄界面
> sudo apt-get install lightdm
> dpkg -reconfigure lightdm
基於前面的原因ubuntu系統的system setting中的圖標可能會消失,需要修復,執行下面的命令:
> sudo apt-get install unity-control-center
0x03:總結以及後續
斷斷續續花了差不多一個星期才搞定,挺煩搭環境的,不過遇見問題又不能不解決,好在終於完成了。後續的話再編譯源碼就不會這麼浪費時間了。花個時間寫個小總結,給以後想要編譯安卓源碼的少踩點坑吧。還有就是搭環境的時候儘可能多找幾篇帖子看看,各種問題先有點了解,解決起來會快很多。