編譯安卓源碼

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:總結以及後續

斷斷續續花了差不多一個星期才搞定,挺煩搭環境的,不過遇見問題又不能不解決,好在終於完成了。後續的話再編譯源碼就不會這麼浪費時間了。花個時間寫個小總結,給以後想要編譯安卓源碼的少踩點坑吧。還有就是搭環境的時候儘可能多找幾篇帖子看看,各種問題先有點了解,解決起來會快很多。

0x04:參考

http://blog.csdn.net/qq1084283172/article/details/54426189

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章