系統:ubuntu 16.04.2 TLS
1.源碼下載:
sudo apt-get install curl curl https://storage.googleapis.com/git-repo-downloads/repo > repo chmod a+x repo mkdir srcAndroid cd srcAndroid git config --global user.name "xunbu7" git config --global user.email "xunbu7@gmail.com" repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1 repo sync
選擇目標版本源碼,參考編譯版本標簽對照表:
https://source.android.com/source/build-numbers
2.驅動下載:
https://developers.google.com/android/drivers

將下載下來的3個壓縮包加壓到源碼目錄,分別執行3個sh文件,輸入“I ACCEPT”。可以看到源碼目錄多了一個vendor目錄。刪除sh文件即可。
3.環境配置
3.1 jdk環境
4.4.4_r1需要jdk6環境,而標准庫不支持舊版本,所以下載方式如下:
Open the terminal and execute below commands one by one. It will install JDk as well as JRE. No need to configure anything. It will take care of everything.
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java6-installer //JDK 6 along with JRE sudo apt-get install oracle-java7-installer //OR FOR JDK 7
有時候不知道java安裝在哪里了,通過whereis java命令不能知道java真實的安裝路徑,可以通過update-alternatives --config java命令查看
bean@ubuntu :~$ update-alternatives --config java There is only one alternative in link group java: /usr/lib/jvm/java-7-oracle/jre/bin/java Nothing to configure.
或者官網下載到本地后
seven@ThinkPad:~/Downloads$ chmod a+x jdk-6u45-linux-x64.bin seven@ThinkPad:~/Downloads$ ./jdk-6u45-linux-x64.bin 移動到自定義目錄: seven@ThinkPad:~/Documents/Android$ mv -f ~/Downloads/jdk1.6.0_45/ . seven@ThinkPad:~/Documents/Android/jdk1.6.0_45$ pwd /home/seven/Documents/Android/jdk1.6.0_45
修改配置文件:
seven@ThinkPad:~$ vim .bashrc 內容: export JAVA_HOME=/home/seven/Documents/Android/jdk1.6.0_45 export JRE_HOME=${JAVA_HOME}/jre export PATH=$PATH:${JAVA_HOME}/bin export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib seven@ThinkPad:~$ source .bashrc seven@ThinkPad:~$ javac -version javac 1.6.0_45
3.2 安裝make
ubuntu16.04自帶的make版本過高,無法編譯。因此需要將make降至3.82.
下載地址ftp://ftp.gnu.org/gnu/make/
下載后到Downloads下將文件拷到其他目錄(home下即可),然后解壓
tar -zxvf make3.8.2.tar.gz
解壓后進入到make3.8.2的目錄下
./configure
make
sudo make install
執行完后在/usr/local/bin中可得到新版本的make,復制到/usr/bin中即可
seven@ThinkPad:/usr/local/bin$ sudo mv make /usr/bin
注:make過程中可能會出現錯誤,不用理會,只要make install能夠成功執行即可。
3.3 安裝其他編譯環境
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 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 unzip m4
4.編譯
echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G source build/envsetup.sh lunch aosp_hammerhead-userdebug //虛擬機中當時必須用sudo su (切換su,root下:否則上面5兒子配置會被虛擬機配置覆蓋),后來用真實機不用也ok。 make –j8
5.刷機
源碼編譯完成后,我們開始將編譯好的系統燒錄進手機中。首先,先將我們的Nexus 5連接到電腦上,注意一定要打開USB調試,連接后手機可能會提示電腦要調試這台手機,允許即可。然后,我們令手機進入recovery模式,還是剛才的terminal(在源碼根目錄下),輸入以下命令:
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ ./adb reboot bootloader
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ./fastboot devices(用sudo,否則發現不了設備)
[sudo] password for seven:
072ba3800ae5fd9c fastboot
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ANDROID_PRODUCT_OUT=/home/seven/srcAndroid/src4.4.4_r1/out/target/product/hammerhead ./fastboot flashall -w(用sudo,否則發現不了設備)
或者也可以一個個img刷入:
0、重啟進入刷機模式 adb reboot bootloader 1、依次刷入其他鏡像文件: fastboot flash recovery recovery.img fastboot flash boot boot.img fastboot flash system system.img 2、強烈建議雙清(注意備份數據): fastboot flash cache cache.img fastboot flash userdata userdata.img 3、再次重啟: fastboot reboot
