一直有個當心願,想要了解以及調試Android源碼。爲了實現這個目標,我經歷了種種坎坷,花了一個多周才搞定了。最近家裏的電腦一直沒怎麼關機,一直在給我跑AOSP。公司最近在每天加班,因此一天只有一次試錯的機會,出錯了只能晚上回來繼續解決問題。源碼實在是太大了,我這個Android P的代碼剛下載下來的時候差很少有60G左右吧。 我說真的,本身成功編譯一遍AOSP,真的太舒服了。php
爲此我還專門買了一塊2T的硬盤,學習得捨得花錢.個人那個CPU不是很好,編譯特別特別慢,每次編譯都是一個整整一個晚上.網速有多快搞多快.html
若是你當前使用的系統已是mac OS或者是Ubuntu,那麼能夠跳過這一節.linux
系統安裝以前須要準備Ubuntu系統鏡像 我是下載的mint.由於我的緣由,以前用過mint一段時間,因此此次使用的是mint,其實和Ubuntu同樣的.官方原話: Linux Mint 是一款基於 Ubuntu 與 Debian 開發的 Linux 操做系統發行,被不少愛好者譽爲「最好的桌面應用系統」,就像是 Linux 世界中的 macOS,很是適合我的平常辦公或開發電腦使用.android
mint下載地址git
我以前是用的Windows 10,因而我下載了mint以後開始用VirtualBox安裝該Linux系統..這個沒啥好說的,一路next,而後內存最好是4G,硬盤空間給它200G. 若是須要看教程能夠參考這裏.若是你對VMware比較喜歡,也能夠用VMware安裝虛擬機,安裝過程是差很少的.bash
我是安裝的真機....沒錯是那種真實的系統,個人Windows 10是在原來的那塊SSD上,新的Linux系統是安裝在新的2T機械硬盤上,我覺得安裝以後開機時引導會有問題,可是還好,竟然沒出問題,哈哈哈哈哈.curl
安裝Linux的時候,須要先下載ultraiso軟件,製做U盤啓動盤.製做過程參考這裏.寫入方式記得選"RAW".而後重啓電腦,U盤設置爲第一啓動項.以後的安裝過程就是一路next,記得選擇和Windows並存.最好是別切換語言,就用English,這樣的條件下系統默認建立的文件夾是英文的,用着舒服.詳細安裝過程看這裏學習
安裝完系統以後,進入系統設置,能夠看到底部有一個軟件源,進入以後將源換成中國的.ui
首先須要安裝Git,由於源碼是用Git管理的.url
sudo apt-get install git
複製代碼
接下來建立一個bin文件夾,並加入到PATH中,有點像Windows的環境變量.
mkdir ~/bin
PATH=~/bin:$PATH
複製代碼
安裝curl下載的庫:
sudo apt-get install curl
複製代碼
下載repo並設置權限:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
複製代碼
而後找個空曠的地方,建立一個AOSP文件夾,待會兒須要把源碼下載到這裏:
而後運行下面這句話,添加源.這裏使用的是清華的源.
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
複製代碼
而後初始化Git,郵箱和姓名:
git config --global user.email "xxx@gmail.com"
git config --global user.name "xxx"
複製代碼
初始化倉庫:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
複製代碼
初始化並指定版本:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
複製代碼
開始同步源碼:
repo sync
複製代碼
等待源碼下載完成後,注意,這個過程千萬不能斷網,也不能關機,也不能讓電腦睡眠啥的.下載源碼很費時間,,,,
首先須要安裝jdk
sudo apt-get update
sudo apt-get install openjdk-8-jdk
複製代碼
而後進入AOSP文件夾,
source build/envsetup.sh
// 編譯前刪除build文件夾
make clobber
複製代碼
這裏我選擇編譯開發工程師的版本,能夠方便debug
lunch aosp_x86-eng
複製代碼
而後開始編譯
make -j6
複製代碼
直到看到下面的log
我這裏是編譯了10個多小時.終於編譯好了......對於電腦來講,又是一個不眠之夜
運行模擬器 在編譯完成以後,就能夠經過如下命令運行Android虛擬機了,命令以下:
source build/envsetup.sh
lunch 5
emulator
複製代碼
若是是在編譯完後運行虛擬機,因爲以前已經執行過source和lunch命令了,能夠直接運行:
emulator
複製代碼
最後的最後,,我看到了勝利的曙光