編譯安卓6.0源碼並燒錄手機

實驗環境是Ubuntu14.04。採用手機nexus 5,編譯安卓6.0.1源碼並燒錄安卓。
源碼編譯沒有一蹴而就,建議使用一臺linux機器開啓ssh後,通過遠程的方式利用閒暇時間編譯並查看結果。

下載源碼

下載源碼時,建議使用科大的鏡像源
先找好適合你手機的源碼版本
然後採用repo的方式,repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本。
因爲可以採用ipv6,所以速度不錯。

環境搭建

主要步驟按照官方文檔走。

首先,搭建要編譯的環境,裝相應的JDK以及一些軟件。需要注意的一點是,最好使用aptitude而不是apt-get,因爲aptitude命令會幫你解決不少軟件互相依賴的問題。

本人採用的OPEN JDK編譯成功。

編譯步驟

源碼編譯

首先,因爲是在真機上運行,所以需要下載一些相應的驅動程序。先去版本號查看適合自己機型的版本:版本號。比如我用Nexus 5,編譯6.0.1,使用的驅動版本是:M4B30X。
然後,去下載對應版本的驅動:驅動下載
在Linux下,直接用wget命令下載就可以,然後,使用tar -zxvf 命令依次解壓出.sh文件到根目錄下,運行文件就會在根目錄下生成vendor文件夾,裏面放着驅動。

然後執行以下make clobber,清除無用的編譯。

我採用的機器是8核8G,因爲android 6以後採用jack編譯源碼成dex文件,同時測試過程中,會出現jack-admin out of memory的問題,所以執行以下:

export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g”
設置VM的內存爲4G。

然後,執行lunch命令,選擇你要編譯的手機的版本,我這裏nexus 5選擇hammerhead。

之後,因爲本人採用的遠程連接編譯,執行 nohup make -j8進行編譯。然後CTRL Z,並bg 1將任務放在後臺,每次通過less查看nohup.out並按住G來看編譯結果即可。
當然,不想給任務放在後臺或者沒有使用遠程的方法,直接make -j8即可。
編譯結果如下:

這裏寫圖片描述

可以看到img文件生成在out/target/product/hammerhead下。

燒錄手機

執行make fastboot adb編譯fastboot和adb,連上手機,開啓調試模式信任電腦,執行:adb reboot bootloader,然後fastboot oem unlock解開bootloader的鎖,這裏注意看手機上的說明,選擇確定。

然後執行 export ANDROID_PRODUCT_OUT=img目錄,編譯最終結果上面有寫出,我這裏是out/target/product/hammerhead。

最後進入AOSP/out/host/linux-x86/bin目錄下找到fastboot執行文件,

執行:./fastboot -w flashall

然後,等待即可。

發佈了57 篇原創文章 · 獲贊 21 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章