感謝博主:https://blog.csdn.net/qq_42889470/article/details/81463559
硬件要求:
越高越好,不建議在虛擬機內編譯
內存越大越好,推薦200G,在這裏就不贅述怎麼安裝ubuntu雙系統了,網上教程很多,有時間寫一教程出來傳送門
安裝並配置git
sudo apt-get install git -y
git config --global user.name "your name"
git config --global user.email "[email protected]"
安裝repo
sudo apt install repo -y
sudo apt-get install curl -y
下載repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
若下載不了,用下面的方法(推薦)
git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
cp ~/git-repo/repo ~/bin/
chmod a+x ~/bin/repo
下載源碼
1. repo的運行過程中會嘗試訪問官方的git源更新自己,如果想使用tuna的鏡像源進行更新,可以將如下內容複製到你的~/.bashrc裏:
export REPO_URL=’https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’
2.並編輯 ~/bin/repo文件,找到REPO_URL這一行,然後將其內容修改(註釋並增加一行)爲:
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
順帶說一聲清華源用起真爽!
echo " export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' ">> ~/.bashrc #執行步驟1
vi ~/bin/repo
mkdir ~/android8source #將會存放源碼
cd ~/android8source/
初始化倉庫
查看分支表:
打開新終端,下載manifests
mkdir ~/tabl
cd ~/tabl
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
cd ~/tabl/.repo/manifests/
git branch -a
同步8.1分支:
我們將上面的source文件夾作爲倉庫,現在需要來初始化這個倉庫了.通過執行初始化倉庫命令可以獲取AOSP項目master上最新的代碼並初始化該倉庫,命令如下:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r2
同步源碼到本地
初始化倉庫之後,就可以開始正式同步代碼到本地了,命令如下:
repo sync
出現……success…….即同步完成,下面是編譯
編譯過程易錯且過程漫長,需要耐心。 I am too young?!?!?!
我現在在Ubuntu 18.04下編譯AOSP主線代碼,因此需要安裝OpenJDK 8,執行命令如下:
sudo apt-get update
sudo apt-get install openjdk-8-jdk -y
構建依賴
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib -y
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386 -y
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt install make make-guile -y
sudo apt-get install tofrodos -y
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
爲了應對下面的錯誤需要加點內容:
在當前用戶的.bashrc文件中增加:
export LC_ALL=C
echo "export LC_ALL=C" >> ~/.bashrc
加鏈:
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
修改prebuilts/sdk/tools/jack-admin文件,找到文件中的這一行:
JACK_SERVER_COMMAND=”java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=TMPDIRTMPDIRLAUNCHER_NAME”
在 -cp 前加上-Xmx4096m (4096儘量爲RAM也就是運行內存或者說swap的一半大小,其實看不見括號這句話也沒關係的)如:
JACK_SERVER_COMMAND=”java -Djava.io.tmpdir=TMPDIRTMPDIRLAUNCHER_NAME”
vi ~/android8source/prebuilts/sdk/tools/jack-admin
# ~/android8source 爲剛纔同步源碼的目錄,編譯會在這裏面進行
cd android8source/prebuilts/sdk/tools/
./jack-admin install-serve jack-launcher.jar jack-server-4.11.ALPHA.jar
重啓終端:
# 鍵入Ctrl + D
#鍵入Ctrl + Alt +T
初始化編譯環境
確保上述過程完成後,接下來我們需要初始化編譯環境,命令如下:
cd ~/android8source/
source build/envsetup.sh
#該命令執行成功後,我們會得到了一些有用的命令,比如下面要用到的lunch命令
lunch aosp_arm64-eng
#我手機架構爲arm64
開始編譯
通過make指令進行代碼編譯,該指令通過-j參數來設置參與編譯的線程數量,以提高編譯速度.比如這裏我設置8個線程同時編譯:
make -j8
#看自己電腦配置選擇線程。參與編譯的線程並不是越多越好,通常是根據你機器cup的核心來確定:core*2,即當前cpu的核心的2倍.比如,我現在的筆記本是雙核四線程的,因此根據公式,最快速的編譯可以make -j8.
(通過cat /proc/cpuinfo查看相關cpu信息)
#如果一切順利的化,在幾個小時之後,便可以編譯完成.
#看到### build completed successfully (01:41:38 (hh:mm:ss)) ###表示你編譯成功了.
運行模擬器
在編譯完成之後,就可以通過以下命令運行Android虛擬機了,命令如下:
source build/envsetup.sh
lunch aosp_arm64-eng #選擇剛纔你設置的目標版本
emulator
如果你是在編譯完後立刻運行虛擬機,由於我們之前已經執行過source及lunch命令了,因此現在你只需要執行命令就可以運行Android虛擬機:
emulator
不出意外,在等待一會之後,你會看到運行界面: