AOSP之代碼下載、編譯和燒錄(Pixel3)

清華鏡像站地址:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

google官網(wǎng)代號(hào)標(biāo)記和細(xì)分版本:https://source.android.com/setup/start/build-numbers

pixel3 Binary Drive下載地址:https://developers.google.com/android/drivers#walleye

google kernel地址:https://source.android.com/setup/build/building-kernels#id-version

1. 首先通過(guò)清華源下載aosp最新代碼壓縮包

1.1 安裝repo工具

mkdir ~/bin && cd ~/bin

PATH=~/bin:$PATH

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

chmod +x repo

可以把repo的路徑加入到環(huán)境變量里這樣就不用每次都跑臨時(shí)環(huán)境變量

sudo vi ~/.bashrc

// 添加如下語(yǔ)句到文件末尾

PATH=~/bin:$PATH

// 保存

1.2 下載每月更新的初始化包

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下載初始化包

tar xf aosp-latest.tar

cd AOSP? # 解壓得到的 AOSP 工程目錄

# 這時(shí) ls 的話什么也看不到,因?yàn)橹挥幸粋€(gè)隱藏的 .repo 目錄

repo sync # 正常同步一遍即可得到完整目錄

# 下載完成記得生成md5碼校驗(yàn),因?yàn)槲募容^大,校驗(yàn)不對(duì)的話,編譯出來(lái)的代碼會(huì)出問(wèn)題

# 另外,如果是月底去下載aosp-latest.tar需要注意,因?yàn)樵摪吭赂乱淮危?/p>

# 包很大,有90G,短時(shí)間內(nèi)下載不完,那這個(gè)時(shí)候,請(qǐng)下載帶日期的最新包,

# 避免更新aosp-latest.tar導(dǎo)致數(shù)據(jù)出入,其實(shí)aosp-latest.tar包就是網(wǎng)站上

# 最晚月份的包,只是重命名了而已

1.3 同步完成后,根據(jù)自己的硬件手機(jī)來(lái)制定對(duì)應(yīng)的分支拉出代碼,我使用的是谷歌pixel3

下載Android11的代碼

從這里可以查出對(duì)應(yīng)pixel3最新Android11的分支號(hào),然后使用下面命令拉出,

google官網(wǎng)代號(hào)標(biāo)記和細(xì)分版本:https://source.android.com/setup/start/build-numbers

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r17

repo sync

等待sync完成,一般晚上12點(diǎn)開始,很快。

2. 開始編譯之前,進(jìn)行編譯依賴包安裝,為了提高軟件包,安裝速度,請(qǐng)自行修改軟件源為國(guó)內(nèi)的源,我這里使用了阿里云的源。


sudo apt install openjdk-8-jdk -y #請(qǐng)輸入java -version確認(rèn)安裝正確

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

安裝依賴:

sudo apt-get install libesd0-dev 可能會(huì)出現(xiàn)錯(cuò)誤,請(qǐng)參考下面排錯(cuò)進(jìn)行解決

3. 提取pixel3手機(jī)對(duì)應(yīng)的kernel和bootloader文件,這部分谷歌沒有開源,只有對(duì)應(yīng)的image包,是生成在sh腳本里面,只能說(shuō)谷歌厲害,直接用腳本提取就可以,所以需要下載。

Binary Drive下載:

https://developers.google.com/android/drivers#walleye

選取pixel3手機(jī)對(duì)應(yīng)Android版本的編號(hào),我選的是這個(gè)build id RP1A.201105.002這個(gè)版本

這個(gè)腳本可以查看,

Pixel 3 binaries for Android 11.0.0 (RP1A.201105.002)


兩個(gè)都進(jìn)行下載,一個(gè)是google vendor,一個(gè)qcom。

解壓得到

extract-google_devices-blueline.sh

extract-qcom-blueline.sh

將這兩個(gè)腳本放到aosp代碼目錄下,進(jìn)行提取

sh extract-google_devices-blueline.sh

sh extract-qcom-blueline.sh

這里需要一直按回車進(jìn)行讀取下一行,然后到最后輸入I ACCEPT,進(jìn)行確認(rèn)

由于很容易錯(cuò)過(guò)最后一行,可以在運(yùn)行之后,直接 / 進(jìn)行搜索,"ACCEPT",直達(dá)最后一行

然后輸入 "I ACCEPT" 提取鏡像,此處應(yīng)有掌聲(太厲害了)

4. 編譯,等待編譯完成

make -j4 | tee make.log

5. 刷機(jī)

將pixel3連接上電腦,進(jìn)入bootloader模式

adb reboot bootloader

把out目錄下編譯出來(lái)的*.img鏡像刷進(jìn)機(jī)器

fastboot flashall -w

提示ANDROID_PRODUCT_OUT no set,將存放img的路徑配置到環(huán)境變量里,設(shè)置好之后,重來(lái)一遍

這次提示:fastboot: error: could not read android-info.txt

將out目錄下的android-info.txt拷貝準(zhǔn)備刷機(jī)器的img目錄下


成功,Done?。?!

排錯(cuò):

1. sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev 報(bào)錯(cuò)如下:

E: Unable to locate package libesd0-dev


# 解決方法:

sudo vi /etc/apt/sources.list

# 在文件末尾添加如下信息:

deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe

deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

# 更新源之后并進(jìn)行重新安裝,

sudo apt-get update && sudo apt-get install libesd0-dev

開始編譯出錯(cuò):

[100% 1/1] out/soong/.minibootstrap/minibp out/soong/.bootstrap/build.ninja

FAILED: out/soong/.bootstrap/build.ninja

out/soong/.minibootstrap/minibp -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/.bootstrap/build.ninja.d -globFile out/soong/.minibootstrap/build-globs.ninja -o out/soong/.bootstrap/build.ninja Android.bp

internal error: could not open symlink hardware/qcom/sm7250/Android.bp; its target (gps/os_pickup.bp) cannot be opened

ninja: build stopped: subcommand failed.

16:26:06 soong minibootstrap failed with: exit status 1

----解決方法:把對(duì)應(yīng)的mk和bp文件重命名

cd android-11.0.0_r17/hardware/qcom/sm7250

mv Android.bp Android.bp.ori

mv Android.mk Android.mk.ori

重新開始編譯,編譯通過(guò)沒有問(wèn)題。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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