Ubuntu20.04 編譯Android 10原始碼 并燒錄原始碼到pixel3的避坑指南
- 實驗環境
- 下載Android原始碼樹
- 在pixel3上安裝手機驅動版本
- 編譯Android原始碼
- Android Studio匯入Android系統原始碼
- 原始碼匯入Android Studio過慢
- 在pixel3上刷入剛剛編譯好的鏡像檔案
- 避坑
- 最終效果圖
實驗環境
- Ubuntu20.04
- pixel3
下載Android原始碼樹
下載android源代碼可以選擇下載最新版本,也可以下載指定分支,如果能使用科學上網建議在google的原始碼樹進行下載,如果不行推薦使用清華鏡像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/,使用鏡像教程鏈接已經詳細給出,這里就不一一贅述啦
- 下載repo工具:
// 下載repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
- 安裝Repo后,設定自己的客戶端用來訪問代碼庫: 這里需要自己注冊一個google帳號
(1)創建一個檔案夾用來存放原始碼
mkdir Pixel3
cd Pixel3
(2)使用google帳號和真實姓名去配置Git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
(3)運行repo init 獲取最新版本代碼或者指定分支
repo init -u https://android.googlesource.com/platform/manifest // 獲取最新原始碼
repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r1// 指定分支
- 下載Android原始碼樹
repo sync
在pixel3上安裝手機驅動版本
-
在官網上找到與手機型號以及安卓原始碼Build號相對應的驅動版本
這里我下載的原始碼是android-10.0.0_r1,因此它的Build號為QP1A.190711.019

再到驅動官網上找到對應的驅動資訊并下載下來

-
解壓到剛剛下載下來的原始碼根目錄下
-
在命令列中輸入如下代碼,然后按回車來閱讀協議,但是由于協議過長,可以按ctrl+c進行中斷,在此會提示需要輸入I ACCEPT,輸入完畢后便可以提取鏡像了
./extract-google_devices-blueline.sh
./extract-qcom-blueline.sh

- 提取成功后會在根目錄下生成vendor目錄

編譯Android原始碼
注意編譯原始碼至少需要16GB的記憶體,因此需要增加swap磁區,詳細步驟請參照我第一篇博文
source build/envsetup.sh
lunch aosp_blueline-userdebug
make -j12
Android Studio匯入Android系統原始碼
- 編譯成功后執行如下命令進行編譯原始碼idegen模塊及生成AS配置建(*ipr):
mmm development/tools/idegen/
development/tools/idegen/idegen.sh
完成后就會在根目錄下看到三個新檔案:
android.iml(用于記錄專案所包含的module,依賴關系,sdk版本)
android.ipr(工程的具體配置,代碼以及依賴的lib資訊) android.iws(個人的配置資訊)
- 將android.iml android.ipr權限改成777
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
- 打開Android studio,匯入已有專案,選擇根目錄下的.ipr檔案
原始碼匯入Android Studio過慢
sudo vim /etc/sysctl.conf
進入檔案后按i進入編輯模式
在檔案最后加上
fs.inotify.max_user_watches = 524288
輸入完這段話以后按Esc進入normal模式,再按:然后輸入wq(表示寫入保存)
生效檔案
sudo sysctl -p –system // 生效檔案
在pixel3上刷入剛剛編譯好的鏡像檔案
- 將pixel3連接上電腦,進入bootloader模式
adb reboot bootloader
- 解鎖手機
fastboot flashing unlock
- 進入fastbootd模式,參考檔案為

// (1) 方法一:在bootloader模式下輸入
fastboot reboot fastboot
// (2)方法二:回傳Android系統,輸入以下命令
adb reboot fastboot
- 命令列里輸入以下命令
source ./build/envsetup.sh
- 命令列里輸入以下命令
lunch aosp_blueline-userdebug
- 進入生成的product路徑,在命令列里輸入以下命令
cd $ANDROID_PRODUCT_OUT
- 燒錄編譯好的鏡像檔案,在命令列中輸入以下命令
fastboot flashall -w

避坑
- 在選擇刷機的手機的時候,不要買pixel2 美版,它的bootloader無法解鎖,若要刷pixel2手機需要購買歐版的
- 如果在輸入鏡像之前一定要做在pixel3上刷入剛剛編譯好的鏡像檔案3,4步,不然在刷入鏡像檔案的時候會遇到"Value too large for defined data type"
- 一定要在fastbootd模式下刷機,不然在刷到System會遇到錯誤:‘Partition should be flashed in fastbootd’
- :假如手機原先的系統是android 11的,如果將Android 10.0的鏡像檔案燒錄到設備中會燒錄失敗,,建議先去官網燒錄編譯的原始碼分支的底包(factory images),然后再去燒錄Android 10.0的鏡像檔案
- 如果在fastboot flashall -w輸入結束后,出現“wait for any devices”,那么在pixel3上刷入剛剛編譯好的鏡像檔案這些步驟需要在root權限下執行,
最終效果圖

參考鏈接
https://blog.csdn.net/weixin_45767368/article/details/105962606?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-6&spm=1001.2101.3001.4242
https://developers.google.com/android/drivers#bluelineqp1a.190711.019
https://source.android.google.cn/devices/bootloader/fastbootd?hl=zh-cn
https://www.jianshu.com/p/1f4a2b18246a
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/263859.html
標籤:其他
下一篇:動態代理及實際應用
