使用Aosp編譯Rom並燒錄Pixel

2021-09-30 13:33:35 字數 3682 閱讀 2733

系統編譯

刷機作為乙個標準的安卓程式猿,不會編譯乙個自己的安卓系統有點說不過去了,其中的好處不多說了,直接開搞吧!

首先我們得準備原材料:

假設我們的工具類的路徑放在~/bin下,那麼我們這樣:

#建立存放repo的目錄

mkdir ~/bin

#將repo所在目錄加入到環境

path=~/bin:$path

curl -o repo > ~/bin/repo

#更改repo執行許可權

chmod a+x ~/bin/repo

#將repo_url設定成清華的位址

export repo_url='/'

repo說白了就是對git指令做了一層封裝。

使用方法如下:

tar xf aosp-latest.tar

cd aosp # 解壓得到的 aosp 工程目錄

# 這時 ls 的話什麼也看不到,因為只有乙個隱藏的 .repo 目錄

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

# 或 repo sync -l 僅checkout**

repo init -u  -b android-11.0.0_r4
然後在該目錄下執行

#使用-f是為了防止中途斷掉

repo sync -f

這個時候刷刷刷一大片**閃過,開始下東西了,網速好的話半個小時就能下完。

當然有的小夥伴是通過shell登入的,希望在shell終端退出的時候任務還在進行,就能使用這個nohup命令:

nohup repo sync -f &#nohup [命令]&就能讓該命令後台執行,然後輸入exit就可以了

curl -o 

curl -o

curl -o

將這三個tgz的包解壓之後會有三個shell的指令碼。

使用解壓指令

比如將/source/kernel.tgz解壓到 /source/linux-2.6.29 目錄

tar zxvf /source/kernel.tgz /source/ linux-2.6.29

分別執行這三個指令碼的話,會生成乙個vendor的資料夾,裡面有broadcom lge qcom三個子資料夾。

這樣的話,把vendor放到android原始碼的根目錄下,參加編譯;需要注意的是在執行這三個s**件的時候,需要你在閱讀完條款後輸入i accept,我有很多時候直接退出來了,所以大家注意條款滑到第八項e條的時候,暫停等到輸入i accept 。

envsetup.sh,載入命令

source build/envsetup.sh

lunch 選擇平台編譯選項,這裡需要分支

lunch full_lentk6735_35gc_l1-eng

make

make -j4 2>&1 | tee build.log

2是標準錯誤,&1是標準輸出,2>&1意思就是將標準錯誤輸出到標準輸出中。 如果沒有2>&1,只會有標準輸出,沒有錯誤;

tee的作用同時輸出到控制台和檔案;

make > build.log 是將所有標準輸出到這個檔案中,並沒有定義標準錯誤應該是定義到了標準輸出,也就是說如果make執行出現錯誤,那麼就不會寫到 build.log中,而是輸出到螢幕上;

2>&1是錯誤和結果都重定向到build.log中! 可以到根目錄看到 build.log;

可能出現錯誤:

recipe fortarget 'out/host/linux-x86/obj32/lib/libnativehelper.so' failed
修正方法:

修改 /art/build/android.common_build.mk,:

# host.

art_host_clang := false

ifeq ($(without_host_clang),false)//larson change true to false

# by default, host builds use clang for better warnings.

art_host_clang := true

endif

如果上述方法沒有用,則執行

cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
-j12數字的選用一般根據執行緒數x2決定,比如我電腦是8核16執行緒,那就是 make -j32

在編譯完成了之後,進入到out目錄下,會有boot.img, userdata.img, system.img

連線手機,安裝好驅動後,usb除錯連線電腦,使用adb命令重啟到fastboot,進入刷機模式:

adb reboot bootloader
進入到fastboot後執行雙清

fastboot format cache

fastboot format userdata

依次使用

fastboot flash boot boot.img

fastboot flash userdata userdata.img

fastboot flash system system.img

燒機結束後,使用fastboot reboot重啟就可以了。

我自己的電腦上是這樣的:

adb reboot bootloader

z:cd z:\nexus_source\out\target\product\mako

fastboot format cache

fastboot format userdata

fastboot flash boot boot.img

fastboot flash userdata userdata.img

fastboot flash system system.img

fastboot reboot

刷機過程**現的問題:

1.

< waiting for device >

sending 'boot' (6350 kb)... okay

writing 'boot'... failed (remote: not supported in locked device)

說的是我的n4沒有解鎖,需要先解鎖。

fastboot oem unlock
然後提示解鎖,電源鍵確認後就解鎖了,重複上述刷機動作。

sending 'boot' (344149 kb)... okay

writing 'boot'... failed (remote: size too large)

提示空間不足,需要雙清,然後我按照教程刷了第三方recovery

上面上調fastboot命令接的引數不一樣,乙個是boot,乙個是system,乙個是userdata,別搞錯了

編譯安卓6 0原始碼並燒錄手機

實驗環境是ubuntu14.04。採用手機nexus 5,編譯安卓6.0.1原始碼並燒錄安卓。原始碼編譯沒有一蹴而就,建議使用一台linux機器開啟ssh後,通過遠端的方式利用閒暇時間編譯並檢視結果。主要步驟按照官方文件走。首先,搭建要編譯的環境,裝相應的jdk以及一些軟體。需要注意的一點是,最好使...

2 3如何編譯W800 SDK程式並燒錄執行

開啟 cds workbench,匯入工程sdk,project explorer 區域,右鍵 import 選擇 existing csky projects into workspace,然 後點選 next。點選右側 browse 指定 w800 sdk 的工程路徑。路徑選擇後,sdk 工程會...

如何編譯W800 SDK原始碼程式並燒錄執行

project explorer 區域,右鍵 import 選擇 existing csky projects into workspace,然 後點選 next。點選右側 browse 指定 w800 sdk 的工程路徑。路徑選擇後,sdk 工程會出現在 projects 區域,預設是勾選 w80...