Ubuntu 18.04 WMware 編譯 AOSP android-7.1.2_r33 筆記

0 前言

筆者在編譯之前并沒有加入專有二進(jìn)制文件(后續(xù)加入了再補(bǔ)充筆記),以供真機(jī)運(yùn)行時一些硬件設(shè)備驅(qū)動都正常運(yùn)行,詳細(xì)請參考谷歌官方教程:https://source.android.com/setup/build/downloading#obtaining-proprietary-binaries 自備出國留學(xué)工具

主機(jī)配置:Windows 10 HOME | I7 12700KF | 海盜船 32G DDR4 3200MHz 雙通道 | 西數(shù) SN570 1T PCIE 3.0
虛擬環(huán)境:Ubuntu 18.04 Bionic (VMware) | 8C 16G
編譯目標(biāo):NZH54D | android-7.1.2_r33 | Pixel (sailfish)、Pixel XL (marlin)

準(zhǔn)備開始,接下來的每個完成一個步驟,都打個備份點,方便還原編譯其它AOSP版本

1 系統(tǒng)安裝

虛擬機(jī)和系統(tǒng)安裝過程省略(網(wǎng)上大堆教程)...

改源

# backup sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# replace
sudo sed -i 's#//.*archive.ubuntu.com#//mirrors.aliyun.com#g'   /etc/apt/sources.list
sudo sed -i 's#//.*security.ubuntu.com#//mirrors.aliyun.com#g'  /etc/apt/sources.list
# update
sudo apt update

安裝常用軟件包

sudo apt install curl vim htop tmux lolcat tree

關(guān)閉屏幕休眠

設(shè)置 → 電源 → 節(jié)點 → 改為從不

2 源碼同步(環(huán)境準(zhǔn)備)

python

sudo apt install python

git

sudo apt install git
git config --global user.email "youremail@email.com"
git config --global user.name "yourname"

repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
# curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

3 源碼同步

如果不指定分支默認(rèn)獲取 master,如需簽出 master 之外的其他分支,請使用 -b 指定此分支。 如需查看分支列表,請參閱源代碼標(biāo)記和 build

cd; mkdir aosp; cd aosp;
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r33 --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
repo sync -j8 # 同步源碼到最新狀態(tài),-j8 是開啟八個線程同時下載

大概要下載100多g,聯(lián)通500M,實測耗時70分鐘左右

4 源碼編譯(環(huán)境準(zhǔn)備)

當(dāng)前記錄是針對 android 7.1.2,依賴環(huán)境如下,如果編譯更高版本,環(huán)境也許不同,所以編譯環(huán)境在下載源碼之后進(jìn)行會方便VMware打備份點

jdk

sudo apt install openjdk-8-jdk

提前修復(fù)編譯時錯誤:SSL error when connecting to the Jack server. Try 'jack-diagnose'

  • sudo vim /etc/java-8-openjdk/security/java.security
  • 搜索找到這行代碼:jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
  • 刪除 TLSv1, TLSv1.1, 后保存

如果沒有提前修復(fù),而是編譯過程中報錯了再修復(fù)這個問題的話,需要在修復(fù)之后重啟 jack-admin,命令如下

  • cd ~/aosp/prebuilts/sdk/tools/
  • ./jack-admin kill-server
  • ./jack-admin start-server

python

Ubuntu 18.04 自帶 Python 3.6.9,編譯 aosp 7.1.2 需要用 Python 2.x
如果編譯更高版本可能依賴 Python 3,命令如下,現(xiàn)在不需要執(zhí)行

# sudo apt install python3
# sudo ln -sfn /usr/bin/python3 /usr/bin/python

其他

sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

5 源碼編譯

開始編譯

如果在沒有參數(shù)的情況下運(yùn)行,則 lunch 會提示您從菜單中選擇目標(biāo)。如需了解所有現(xiàn)有設(shè)備的構(gòu)建配置,請參閱擇設(shè)備構(gòu)建系統(tǒng)。
make -j20 是使用多少個線程編譯,一般為CPU核心數(shù)×2,我這里多給了4,實測也沒什么問題,并且編譯速度確實提升了不少。

# cd ~/aosp
# rm -rf out
export LC_ALL=C
source build/envsetup.sh
lunch 18 # aosp_sailfish-userdebug
make -j20

編譯成功

實測耗時
??8C 16G make j16 35分 CPU占用50%左右
??8C 16G make j20 30分 CPU占用55%左右 資源占用和耗時比 最佳
10C 20G make j20 28分 CPU占用65%左右
12C 16G make j24 27分 CPU占用80%左右
12C 24G make j24 26分 CPU占用80%左右

輸出目錄 out/target/product/產(chǎn)品代號

ubuntu@ubuntu1804:~/aosp/out/target/product/sailfish$ du -h *.img
25M     boot.img
6.4M    ramdisk-recovery.img
1.5M    ramdisk.img
825M    system.img
223M    system_other.img
146M    userdata.img
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容