注意
:硬盤剩余空間至少要100G吟逝。編譯過程分析參考:Android編譯過程及腳本分析甫匹。
1. 源碼下載
參考1:Android 鏡像使用幫助
參考2:AOSP(Android) 鏡像使用幫助
參考3:建立Android系統(tǒng)開發(fā)環(huán)境
參考4:編譯Android源碼
參考5:Android 系統(tǒng)源碼—下載到編譯
參考6:下載源代碼
參考7:Android4.4源碼編譯總結(jié)
參考8:Ubuntu 16.04(18.04) 編譯安卓4.4.4_r1系統(tǒng)源碼
參考9:Ubantu18.04環(huán)境下編譯android源碼
參考10:編譯最新Android源碼及SDK
2. 編譯整個項(xiàng)目
可以使用 make 編譯任何代碼蒲牧。GNU make 可以借助 -jN 參數(shù)處理并行任務(wù),通常使用的任務(wù)數(shù) N 介于編譯時所用計(jì)算機(jī)上硬件線程數(shù)的 1-2 倍之間巡莹。例如司志,在一臺雙核 E5520 計(jì)算機(jī)(2 個 CPU甜紫,每個 CPU 4 個內(nèi)核,每個內(nèi)核 2 個線程)上骂远,要實(shí)現(xiàn)最快的編譯速度囚霸,可以使用介于
make -j16
到make -j32
之間的命令。make -j8 表示開八個線程編譯(開啟的線程數(shù)一般為內(nèi)核的兩倍激才,如果不知道電腦內(nèi)核直接 make 就好了)拓型。
說明:編譯Android源碼非常耗時(耗時不算停下來的時間大約6小時),并且編譯時會有各種錯誤導(dǎo)致編譯終止瘸恼,但百度一下都能找到解決方法劣挫,修改后重新編譯即可。這里我把我編譯過程中出現(xiàn)的問題總結(jié)了一下:
可忽略的提示
:不會導(dǎo)致編譯終止
報錯1
:/bin/bash: xmllint: 未找到命令
解決:根據(jù)提示东帅,需動手安裝對應(yīng)的工具xmllint(libxml2-utils)揣云,安裝命令為
sudo apt-get install libxml2-utils
。使用ubuntu的apt-get的時候冰啃,經(jīng)常會遇到install時失敗的情況。既然提示域名解析失敗刘莹,那么就想辦法加一個萬能的域名:
a. 編輯文件 sudo vim /etc/resolv.conf
b. 在最后加上 nameserver 8.8.8.8
c. 保存退出
報錯2
:段錯誤阎毅,核心已轉(zhuǎn)儲
解決:重新編譯,竟然編譯成功了
3. 編譯指定模塊
(1) 創(chuàng)建并編譯指定模塊
(2) 編譯指定模塊失敗
分析:可能是工程沒有make(編譯)過点弯,單獨(dú)編譯某個模塊導(dǎo)致的扇调。先把工程整個make一下。整個項(xiàng)目編譯成功后抢肛,才可重新編譯指定的test模塊:
(3) 總結(jié):需掌握Android.mk 的基本語法
知識點(diǎn)1:修改編譯生成的目標(biāo)文件的安裝目錄
備注:修改Android.mk狼钮,使用連接符“\”將每個源文件添加到Android.mk中,保存后重新編譯即可捡絮。test.c為
知識點(diǎn)2:編譯多個源碼文件
備注:修改Android.mk熬芜,配置環(huán)境變量LOCAL_MODULE_PATH,保存后重新編譯即可福稳。
拓展:使用tree命令查看目錄結(jié)構(gòu)
備注:需先使用ubuntu的apt命令安裝tree工具涎拉。