Mac編譯Android 10源碼(QW)

寫在前面

最近因為工作需要又要編譯Android源碼,看了官方文檔,又搜索了很多中文博客廷区,發(fā)現(xiàn)一個問題:多數(shù)博主都是亦步亦趨的翻譯了Android官方介紹买窟,新手如果按照這些博客去做往往做到一半會發(fā)現(xiàn)各種問題丰泊,影響效率。
希望能通過這篇博客幫助到更多的Android開發(fā)者(我希望能幫助到有腦子蔑祟、看了博客能理清楚編譯源碼思路的開發(fā)者趁耗,而不是伸手黨)。有時間會補充每個環(huán)節(jié)的細(xì)節(jié)疆虚。
阿里校招開始了!歡迎同學(xué)們投遞簡歷满葛,詳見文末二維碼径簿!

事前準(zhǔn)備

我使用Mac pro + 移動硬盤 + Pixel 3XL編譯刷機

  • 操作系統(tǒng):Mac OS 10.14(或Linux),不推薦Windows嘀韧,坑多
  • 存儲空間:120G(很多博客寫40/60G篇亭,大坑,完全不夠用)锄贷,一定要設(shè)置為“Mac OS 擴展(區(qū)分大小寫译蒂,日志式)”
  • 手機:專門買了Pixel 3XL做測試設(shè)備,Pixel 2/3/3XL都有部分是v版谊却,不支持解鎖柔昼,買之前一定要看清楚!不想浪費錢用模擬器也行
  • 軟件:這里也是大坑炎辨,很多博客都在最后寫出現(xiàn)xxx error捕透,是要更新xxx
    • vpn:大家都懂,有了梯子方便很多碴萧,沒有也行乙嘀,下載源碼或其他軟件時選擇國內(nèi)鏡像
    • platform-tools:第一次用24編譯出錯,改成29就好了
    • Java:我用Java 8破喻,編譯過程沒報錯
    • Xcode:我的是9.4.1虎谢,編譯沒報錯
    • Homebrew、GnuPG曹质、Gerrit婴噩、環(huán)境變量等的錯誤提示都很明顯,隨便Google/百度都有答案咆繁,不細(xì)寫了讳推,注意一點,提前配置好git config
    • Python:新版repo(新手先簡單理解repo=下載器)要使用Python3.6+玩般,但Python3.6+在repo運行過程中會強制校驗SSL證書银觅,所以可以在repo里加兩行代碼跳過校驗
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

編譯

整個流程是這樣:初始化repo->下載源碼->下載驅(qū)動->編譯->刷機
這里要注意!很多博客會寫下載源碼后直接編譯坏为,但如果不下載手機對應(yīng)的驅(qū)動究驴,編譯出來的鏡像是不能刷機的镊绪,刷了容易變磚!
下載源碼前要看自己的手機是否支持Android高版本洒忧!拿著Nexus 3是刷不了Android 10的蝴韭!在這里查:https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds
敲黑板:如果英語過關(guān),一定要官網(wǎng)的英文文檔熙侍,有些文檔中文版更新不及時榄鉴,非常誤事!比如最新的源碼版本介紹蛉抓,中文版比英文版的更新晚整一個月庆尘!

初始化repo,下載源碼

看官方文檔:https://source.android.com/setup/build/downloading
嫌麻煩直接按我的介紹敲命令行:

$ cd
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir WORKING_DIRECTORY(替換為你的目標(biāo)源碼目錄)
$ cd WORKING_DIRECTORY(進入你的目標(biāo)源碼目錄)
$ repo init -u https://android.googlesource.com/platform/manifest
$ repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r30
$ repo sync(開始下載巷送,幾十個G驶忌,我下了4個小時)

下載驅(qū)動

看這里:https://developers.google.com/android/drivers,如果不是Nexus/Pixel就自己找原廠資源吧
下完兩個zip包笑跛,解壓出來2個sh文件付魔,放在你的源碼目錄下(就是上一步的WORKING_DIRECTORY),使用sh命令分別運行兩個文件飞蹂,完事

編譯

嫌麻煩直接按我的介紹敲命令行:

$ make clobber(清空之前的編譯產(chǎn)物)
$ source build/envsetup.sh
$ lunch
$ 15(這里要對應(yīng)你的測試收集几苍,比如我用Pixel 3XL,這里就敲“15”晤柄,具體看這里:https://source.android.com/setup/build/running#selecting-device-build)
$ make -j8(邪惡..8代表并行8個編譯任務(wù)擦剑,一般選CPU核數(shù)*2,我用Mac pro編了7個小時)

這里有個坑芥颈,要配置環(huán)境變量惠勒,保證“echo $ANDROID_PRODUCT_OUT”輸出的結(jié)果是:WORKING_DIRECTORY/out/target/product/crosshatch,crosshatch替換為你編譯的版本

刷機

如果用模擬器就不用往下看了爬坑,這里命令行直接敲“emulator”等模擬器啟動就好

  • 進入開發(fā)者模式纠屋,打開“OEM 解鎖”開關(guān)
  • 進入刷機模式,看這里:https://source.android.com/setup/build/running盾计,命令行或物理組合鍵都能進
  • 嫌麻煩直接按我的介紹敲命令行:
$ fastboot flashing unlock(或fastboot oem unlock售担,分別適用于新舊手機)
$ fastboot flashall -w

正常到這里,你能看到手機自動重啟署辉,然后進入了一個Android 1.5一樣簡陋的頁面族铆,只有WebView、Camera哭尝、Phone等十來個基礎(chǔ)應(yīng)用哥攘,恭喜,刷機成功!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逝淹,一起剝皮案震驚了整個濱河市耕姊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栅葡,老刑警劉巖茉兰,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異欣簇,居然都是意外死亡规脸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門熊咽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燃辖,“玉大人,你說我怎么就攤上這事网棍。” “怎么了妇智?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵滥玷,是天一觀的道長。 經(jīng)常有香客問我巍棱,道長惑畴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任航徙,我火速辦了婚禮如贷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘到踏。我一直安慰自己杠袱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布窝稿。 她就那樣靜靜地躺著楣富,像睡著了一般。 火紅的嫁衣襯著肌膚如雪伴榔。 梳的紋絲不亂的頭發(fā)上纹蝴,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音踪少,去河邊找鬼塘安。 笑死,一個胖子當(dāng)著我的面吹牛援奢,可吹牛的內(nèi)容都是我干的兼犯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼免都!你這毒婦竟也來了锉罐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤绕娘,失蹤者是張志新(化名)和其女友劉穎脓规,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體险领,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡侨舆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绢陌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挨下。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖脐湾,靈堂內(nèi)的尸體忽然破棺而出臭笆,到底是詐尸還是另有隱情,我是刑警寧澤秤掌,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布愁铺,位于F島的核電站,受9級特大地震影響闻鉴,放射性物質(zhì)發(fā)生泄漏茵乱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一孟岛、第九天 我趴在偏房一處隱蔽的房頂上張望瓶竭。 院中可真熱鬧,春花似錦渠羞、人聲如沸斤贰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渗蟹,卻和暖如春块饺,著一層夾襖步出監(jiān)牢的瞬間雌芽,已是汗流浹背授艰。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工世落, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淮腾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像谷朝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圆凰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容