0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Ubuntu18.04編譯AOSP10.0r41刷入Pixel3的步驟

哆啦安全 ? 來源:黃大官AOSP ? 2023-05-29 10:09 ? 次閱讀

背景

已經(jīng)在AOSP 7.1.1 nexus 5x上面實(shí)現(xiàn)了修改位置打卡,現(xiàn)在是想在pixel3中繼續(xù)嘗試。

如何選擇代碼

要選擇有對(duì)應(yīng)驅(qū)動(dòng)版本的代碼分支,如果沒有標(biāo)明,強(qiáng)行用其他版本的驅(qū)動(dòng)來編譯刷機(jī)不知道是否可行。

比如我選擇的情況是這樣的。

這里是查代碼分支和驅(qū)動(dòng)版本的網(wǎng)站。

402d6f92-fca4-11ed-90ce-dac502259ad0.jpg

為什么呢?因?yàn)槲业木W(wǎng)盤中的Android10代碼有這個(gè)分支,如果通過repo的方式下載,我網(wǎng)絡(luò)太差了,容易失敗,相信很多人放棄都會(huì)卡在這一步,下個(gè)代碼都下不了。

我們之間下載某個(gè)分支的代碼就行了,前提是這個(gè)分支剛好有驅(qū)動(dòng)。

復(fù)制代號(hào):QQ3A.200805.001

去驅(qū)動(dòng)的網(wǎng)頁上面搜索:

403f95be-fca4-11ed-90ce-dac502259ad0.jpg

在這里找到你的手機(jī)和對(duì)應(yīng)代號(hào)的驅(qū)動(dòng)。

android-10.0.0_r41 -> QQ3A.200805.001 > Pixel 3 binaries for Android 10.0.0 (QQ3A.200805.001)

關(guān)聯(lián)起來,點(diǎn)擊下載那2個(gè)文件就行了,先保存起來,到時(shí)候參與編譯的。

編譯環(huán)境

Ubuntu 1804

安裝好openjdk8

和下面一堆東西。

如果安裝不了,請(qǐng)切換國內(nèi)的源,快很多。(怎么切源,自己處理)

sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install -y git-core gnupg flex bison gperf build-essential

sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install -y libc6-dev-i386

sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install -y lib32z1-dev ccache

sudo apt-get install -y bc python flex bison gperf libsdl-dev libesd0-dev build-essential zip curl

sudo apt-get install -y libssl-dev liblz4-tool

sudo apt-get install -y libesd-java libwxgtk3.0-dev squashfs-tools pngcrush schedtool libxml2

sudo apt-get install -y lzop schedtool lib32readline-dev libswitch-perl libssl-dev

創(chuàng)建虛擬機(jī)的時(shí)候硬盤如果空間足夠,盡量給多點(diǎn)比如300g,我給了虛擬機(jī)200g。

編譯好之后我的虛擬機(jī)可用空間剩余20g了。

虛擬機(jī)內(nèi)存至少16g。如果編譯過程中遇到oom,內(nèi)存不夠,可以關(guān)機(jī)了加點(diǎn),編譯的進(jìn)度會(huì)保留的。

準(zhǔn)備編譯

進(jìn)入源碼根目錄,解壓驅(qū)動(dòng)。

用7z解壓驅(qū)動(dòng)包得到sh,如果安裝7z,自己解決。

tar zxvf google_devices-blueline-qq.3a.200805.001-466a3cb1.tgz

tar zxvf qcom-blueline-200805.001-a5511ad3.tgz

解壓后得到2個(gè)sh文件

extract-開頭的。

執(zhí)行sh文件

./extract-

都是按空格繼續(xù),最后要手動(dòng)輸入I ACCEPT。兩個(gè)文件都是一樣的流程。

如果開始編譯的時(shí)候遇到這樣的錯(cuò)誤

find vendor: permission denied

給驅(qū)動(dòng)文件夾權(quán)限。

sudo chmod -R 777 vendor

到此開始編譯。

源碼根目錄輸入:

source build/envsetup.sh

回車

lunch

回車

4054b8ea-fca4-11ed-90ce-dac502259ad0.jpg

我們的手機(jī)pixel3就選擇blueline這個(gè)產(chǎn)品,userdebug模式刷機(jī)完成就打開adb調(diào)試,有su。

40619236-fca4-11ed-90ce-dac502259ad0.jpg

開始編譯:

make -j4

回車

由于配置低就用4線程編譯,如果你配置高,就配置多點(diǎn)

開始后你可能會(huì)遇到這個(gè)錯(cuò)誤:

test github.com/google/blueprint/pathtools

FAILED: out/soong/.bootstrap/blueprint-pathtools/test/test.passed

out/soong/.bootstrap/bin/gotestrunner -p ./build/blueprint/pathtools -f out/soong/.bootstrap/blueprint-pathtools/test/test.passed -- out/soong/.bootstrap/blueprint-pathtools/test/test -test.short

--- FAIL: TestGlobEscapes (0.02s)

--- FAIL: TestGlobEscapes/**/* (0.02s)

glob_test.go:562: incorrect matches list:

glob_test.go:562: pattern: "**/*"

glob_test.go:562: got: []string{"a/", "b", "a/a"}

glob_test.go:562: expected: []string{"*", "**/", "?", "a/", "b", "**/*", "**/a", "**/b/", "**/b/b", "a/a"}

glob_test.go:562: incorrect deps list:

glob_test.go:562: pattern: "**/*"

glob_test.go:562: got: []string{".", "a"}

glob_test.go:562: expected: []string{".", "**", "**/b", "a"}

--- FAIL: TestGlobEscapes/**/* (0.00s)

glob_test.go:562: incorrect matches list:

glob_test.go:562: pattern: "**/\*"

glob_test.go:562: got: []string(nil)

glob_test.go:562: expected: []string{"*", "**/*"}

glob_test.go:562: incorrect deps list:

glob_test.go:562: pattern: "**/\*"

glob_test.go:562: got: []string{".", "a"}

glob_test.go:562: expected: []string{".", "**", "**/b", "a"}

--- FAIL: TestGlobEscapes/**/* (0.00s)

glob_test.go incorrect matches list:

glob_test.go pattern: "\*\*/*"

glob_test.go got: []string(nil)

glob_test.go expected: []string{"**/*", "**/a", "**/b/"}

glob_test.go incorrect deps list:

glob_test.go pattern: "\*\*/*"

glob_test.go got: []string{"."}

glob_test.go expected: []string{".", "**"}

--- FAIL: TestGlobEscapes/**/**/* (0.00s)

glob_test.go incorrect matches list:

glob_test.go pattern: "\*\*/**/*"

glob_test.go got: []string(nil)

glob_test.go expected: []string{"**/*", "**/a", "**/b/", "**/b/b"}

glob_test.go incorrect deps list:

glob_test.go pattern: "\*\*/**/*"

glob_test.go got: []string{"."}

glob_test.go expected: []string{".", "**", "**/b"}

FAIL

1813 soong bootstrap failed with: exit status 1

就是把源碼根目錄下build/blueprint/Blueprints "pathtools/globtest.go"和fstest.go刪除了保存就好了,找了幾個(gè)小時(shí)的錯(cuò)誤,就這個(gè)有用。

繼續(xù)make -j4。

406d902c-fca4-11ed-90ce-dac502259ad0.jpg

編譯完成。

刷入手機(jī)pixel3中

注意條件:

1:pixel3解開bl鎖

2:必須退出登錄的所有g(shù)oogle賬號(hào),后果自負(fù)(懂的都懂)

3:usb接口已經(jīng)配置好訪問權(quán)限。

開始刷機(jī)。

手機(jī)連接電腦,觸發(fā)虛擬機(jī)選擇連接的設(shè)備,選擇虛擬機(jī)就行。

adb devices

檢查手機(jī)狀態(tài),如果已經(jīng)連接會(huì)顯示

sfasdfadf devices

我在這里遇到問題,我的手機(jī)之前系統(tǒng)是Android9,和現(xiàn)在編譯的代碼版本不一樣,而且boot給我修改過的。

如果直接刷機(jī),可能會(huì)遇到這樣的錯(cuò)誤。

fastboot flashall -w

--------------------------------------------

Bootloader Version...: b4s4-0.1-5613380

Baseband Version.....: g670-00011-190411-B-5457439

Serial Number........: XXXXXXXXXX

--------------------------------------------

Checking 'product' OKAY [ 0.057s]

Setting current slot to 'a' OKAY [ 0.372s]

Sending 'boot_a' (65536 KB) OKAY [ 1.850s]

Writing 'boot_a' OKAY [ 0.349s]

Sending 'dtbo_a' (8192 KB) OKAY [ 0.320s]

Writing 'dtbo_a' OKAY [ 0.095s]

Sending 'vbmeta_a' (4 KB) OKAY [ 0.120s]

Writing 'vbmeta_a' OKAY [ 0.066s]

Rebooting into fastboot FAILED (remote: 'Unsupported reboot option reboot-fastboot')

fastboot: error: Command failed

然后手機(jī)就掛了

40755aa0-fca4-11ed-90ce-dac502259ad0.jpg

查了資料,說是引導(dǎo)和當(dāng)前編譯的系統(tǒng)版本的不一樣。

407eabd2-fca4-11ed-90ce-dac502259ad0.jpg

下載完成之后,解壓zip,然后手機(jī)連接電腦,手機(jī)開機(jī)和音量下一起按住,等待進(jìn)入BootLoader模式。

進(jìn)入模式之后,電腦如果win,雙擊flash-all.bat,Mac和Linux執(zhí)行./flash-all.sh就行。進(jìn)入刷機(jī),可能重啟數(shù)次。

刷機(jī)完成之后,打開開發(fā)者模式,再次連接電腦,虛擬機(jī)連接手機(jī)。

進(jìn)入源碼根目錄中,配置下fastboot。

cd out/host/linux-x86/bin

執(zhí)行

sudo chown root:root fastboot && sudo chmod +s fastboot

輸入你的虛擬機(jī)密碼,回車。

回到根目錄下

ANDROID_PRODUCT_OUT=out/target/product/blueline

開始刷機(jī)

如果你的手機(jī)開機(jī),先重啟

adb reboot bootloader

重啟到bootloader后

fastboot devices

看看手機(jī)連接情況

fastboot flashall -w

408f352e-fca4-11ed-90ce-dac502259ad0.jpg

手機(jī)重啟之后,虛擬機(jī)選擇連接的手機(jī)設(shè)備就行了,重啟多次。

40945d38-fca4-11ed-90ce-dac502259ad0.jpg

這個(gè)時(shí)候手機(jī)會(huì)自動(dòng)重啟。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • USB接口
    +關(guān)注

    關(guān)注

    9

    文章

    691

    瀏覽量

    55368
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    888

    瀏覽量

    27811
  • Ubuntu系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    3859

原文標(biāo)題:Ubuntu18.04編譯AOSP10.0r41刷入Pixel3

文章出處:【微信號(hào):哆啦安全,微信公眾號(hào):哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于ubuntu18.04搭建100ASK-ESP32開發(fā)環(huán)境并成功點(diǎn)燈

    前面搭了一個(gè)ubuntu18.04的服務(wù)器+遠(yuǎn)程VScode開發(fā)環(huán)境,最終就是為了玩板。
    發(fā)表于 06-25 11:41 ?667次閱讀
    基于<b class='flag-5'>ubuntu18.04</b>搭建100ASK-ESP32開發(fā)環(huán)境并成功點(diǎn)燈

    Ubuntu18.04工控機(jī)如何綁定USB串口?

    Ubuntu18.04工控機(jī)如何綁定USB串口?
    發(fā)表于 09-30 08:08

    ubuntu18.04虛擬機(jī)的登錄密碼是多少

    下載了i.mx8mm開發(fā)板官方提供的ubuntu18.04的虛擬機(jī),登陸用戶名是foxlinux,密碼是多少?
    發(fā)表于 12-30 06:33

    Ubuntu18.04如何安裝.Net5?

    的t507_linux_okt507_uart0.img鏡像中,安裝.Net5失敗。這是微軟的文檔,Ubuntu18.04支持.Net5https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu請(qǐng)幫忙
    發(fā)表于 12-31 06:26

    Ubuntu18.04下運(yùn)行run_demo報(bào)錯(cuò)怎么辦

    為什么Ubuntu18.04下運(yùn)行run_demo會(huì)報(bào)錯(cuò)呢?Ubuntu18.04下運(yùn)行run_demo報(bào)錯(cuò)怎么辦?
    發(fā)表于 02-16 06:37

    如何安裝ubuntu18.04 QT開發(fā)環(huán)境?

    如何安裝ubuntu18.04 QT開發(fā)環(huán)境?
    發(fā)表于 03-04 06:12

    怎樣在ubuntu18.04的pc機(jī)上去編寫程序呢

    怎樣在ubuntu18.04的pc機(jī)上去編寫程序呢?有哪些編寫步驟呢?
    發(fā)表于 03-07 10:22

    怎樣在RK3399核心板上安裝ubuntu18.04系統(tǒng)呢

    怎樣在RK3399核心板上安裝ubuntu18.04系統(tǒng)呢?有哪些安裝步驟?
    發(fā)表于 03-07 11:02

    rk3399 ubuntu18.04 wifi 無法使用如何解決

    ubuntu18.04 ifconfig沒有wlan0節(jié)點(diǎn),同樣編譯出來的linuxrootfs和debian系統(tǒng)都沒問題,有遇到同樣問題的沒?
    發(fā)表于 06-14 10:01

    新手求助RK3399 ubuntu18.04 wifi無法使用

    ubuntu18.04 ifconfig沒有wlan0節(jié)點(diǎn),同樣編譯出來的linuxrootfs和debian系統(tǒng)都沒問題,有遇到同樣問題的沒?
    發(fā)表于 08-31 16:41

    Core 3399 JD4固件Ubuntu18.04/20.04(GPT)

    電子發(fā)燒友網(wǎng)站提供《Core 3399 JD4固件Ubuntu18.04/20.04(GPT).txt》資料免費(fèi)下載
    發(fā)表于 09-02 09:43 ?0次下載
    Core 3399 JD4固件<b class='flag-5'>Ubuntu18.04</b>/20.04(GPT)

    Core 3399 JD4 V2固件Ubuntu18.04/20.04(GPT)

    電子發(fā)燒友網(wǎng)站提供《Core 3399 JD4 V2固件Ubuntu18.04/20.04(GPT).txt》資料免費(fèi)下載
    發(fā)表于 09-16 10:00 ?0次下載
    Core 3399 JD4 V2固件<b class='flag-5'>Ubuntu18.04</b>/20.04(GPT)

    Core 1808 JD4固件Linux根文件系統(tǒng)(Ubuntu18.04

    電子發(fā)燒友網(wǎng)站提供《Core 1808 JD4固件Linux根文件系統(tǒng)(Ubuntu18.04).txt》資料免費(fèi)下載
    發(fā)表于 09-20 17:05 ?0次下載
    Core 1808 JD4固件Linux根文件系統(tǒng)(<b class='flag-5'>Ubuntu18.04</b>)

    ROC RK3399 PC Pro固件Ubuntu18.04/20.04(GPT)

    電子發(fā)燒友網(wǎng)站提供《ROC RK3399 PC Pro固件Ubuntu18.04/20.04(GPT).txt》資料免費(fèi)下載
    發(fā)表于 09-20 15:53 ?3次下載
    ROC RK3399 PC Pro固件<b class='flag-5'>Ubuntu18.04</b>/20.04(GPT)

    如何在Ubuntu18.04編譯小米K30U的內(nèi)核呢?

    Ubuntu18.04編譯小米官方內(nèi)核K30U的內(nèi)核,環(huán)境配置等。
    的頭像 發(fā)表于 09-08 09:42 ?2851次閱讀