死磕Android_AOSP編譯過程

一直有個當心願,想要了解以及調試Android源碼。爲了實現這個目標,我經歷了種種坎坷,花了一個多周才搞定了。最近家裏的電腦一直沒怎麼關機,一直在給我跑AOSP。公司最近在每天加班,因此一天只有一次試錯的機會,出錯了只能晚上回來繼續解決問題。源碼實在是太大了,我這個Android P的代碼剛下載下來的時候差很少有60G左右吧。 我說真的,本身成功編譯一遍AOSP,真的太舒服了。php

1. 準備工做

  1. 一塊大一點兒的硬盤,至少得有200G剩餘空間.
  2. CPU儘可能好點的,這樣編譯快.
  3. 網速越快越好,否則你想一想60G啊,要下載到何時...
  4. 系統最好是Ubuntu或者mac OS,官方是這樣推薦的.

爲此我還專門買了一塊2T的硬盤,學習得捨得花錢.個人那個CPU不是很好,編譯特別特別慢,每次編譯都是一個整整一個晚上.網速有多快搞多快.html

2. 系統安裝

若是你當前使用的系統已是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

image

image

3. 開始下載AOSP

首先須要安裝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
複製代碼

等待源碼下載完成後,注意,這個過程千萬不能斷網,也不能關機,也不能讓電腦睡眠啥的.下載源碼很費時間,,,,

4. 開始編譯AOSP

首先須要安裝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

image

我這裏是編譯了10個多小時.終於編譯好了......對於電腦來講,又是一個不眠之夜

運行模擬器 在編譯完成以後,就能夠經過如下命令運行Android虛擬機了,命令以下:

source build/envsetup.sh
lunch 5
emulator
複製代碼

若是是在編譯完後運行虛擬機,因爲以前已經執行過source和lunch命令了,能夠直接運行:

emulator
複製代碼

最後的最後,,我看到了勝利的曙光

image

感謝

相關文章
相關標籤/搜索