去 "codenanme-tages-and-buildnumber" 去看,pixel4最後一個版本tag name 是 android-12.1.0_r11
所以
repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r11 repo sync -c -j8官方說 "-c" 就可以只fetch current version (所以 repo init 不用加 --depth=1 ?)
download 玩aosp 後,要 download hardware 相關的 none-open binary.
要依照build id 來download,剛剛的android-12.1.0_r11 的 build id 是 SQ3A.220705.003.A1
有 google 跟 qualcomm 兩個 tgz 檔。
說明解開後是自解壓縮script,說在 aosp 的 root folder 執行,accept license後,就會放在正確位置 (vendor)。
開始build:
source build/envsetup.sh接下來的lunch 要選pixel4,依照說明去 flash device 查,是 flame,所以:
lunch aosp_flame-userdebug然後就可以用 "m" 來build,不用加任何option,他會看cpu核心數開啟對應process。
-- 用 i9 13 代,限制溫度70,64G ram, 普通hd, 需要90分鐘。
build kernel
現在AOSP 的kernel是 prebuilt kernel,所以要build 的話,要另外clone 下來。
kernel build法以 Android 12 為分界。
12 (含)以前,用build.sh
另外,pixel6以上,android 13(含)以上,支援 GKI (generalize kernel image),所以可以只update kernel vender part,所以只build 出 kernel 就可以。
古老的還是要build 好 kernel 後,到 aosp 再build 一次,把 kernel 包進去。
現在做 pixel4, android12 的作法:build.sh
用 repo clone source,先到kernel branch 去看android12 for pixel 4 的 branch name 是什嗎。
猜大概是 common-android12-5.10 吧?
repo init -u https://android.googlesource.com/kernel/manifest -b common-android12-5.10 repo sync -j8
燒錄
要先 unlock bootloader
pixel 4 要先到 Setting 中的 developement option 去開啟 allow unlock bootloader,
然後關機,按著volume down + power 開機進入bootloader mode.
用 fastboot flashing unlock 來unlock
其實在pixel 4 的 bootloader 畫面也有 unlock 選項,選後按下 power,他會自己 reboot,之後就是 unlock mode 了。
開始燒錄。
一樣在 bootloader mode,所以先進入 bootlaoder:
adb reboot bootloaderfastboot 要看環境變數 ANDROID_PRODUCT_OUT 來找 img 檔。
所以要先設定這個變數到剛剛 build 好的 aosp src /out/target/product/flame
之後就可以下
$ fastboot flashall -w -------------------------------------------- Bootloader Version...: c2f2-0.4-7617419 Baseband Version.....: g8150-00111-210817-B-7650554 Serial Number........: 99211FFAXXXXXX -------------------------------------------- Checking 'product' OKAY [ 0.070s] Setting current slot to 'b' OKAY [ 0.157s] Sending 'boot_b' (65536 KB) OKAY [ 1.850s] Writing 'boot_b' OKAY [ 0.299s] Sending 'dtbo_b' (8192 KB) OKAY [ 0.340s] Writing 'dtbo_b' OKAY [ 0.094s] Sending 'vbmeta_b' (4 KB) OKAY [ 0.140s] Writing 'vbmeta_b' OKAY [ 0.078s] Sending 'vbmeta_system_b' (4 KB) OKAY [ 0.140s] Writing 'vbmeta_system_b' OKAY [ 0.078s] Rebooting into fastboot OKAY [ 0.070s] < waiting for any device > Sending 'super' (4 KB) OKAY [ 0.018s] Updating super partition OKAY [ 0.025s] Resizing 'product_b' OKAY [ 0.003s] Resizing 'system_b' OKAY [ 0.003s] Resizing 'system_ext_b' OKAY [ 0.003s] Resizing 'system_a' OKAY [ 0.005s] Resizing 'vendor_b' OKAY [ 0.005s] Resizing 'vendor_a' OKAY [ 0.003s] Resizing 'product_b' OKAY [ 0.003s] Sending sparse 'product_b' 1/2 (262140 KB) OKAY [ 6.835s] Writing 'product_b' OKAY [ 1.816s] Sending sparse 'product_b' 2/2 (10064 KB) OKAY [ 0.274s] Writing 'product_b' OKAY [ 0.089s] Resizing 'system_b' OKAY [ 0.004s] Sending sparse 'system_b' 1/4 (262140 KB) OKAY [ 7.071s] Writing 'system_b' OKAY [ 1.884s] Sending sparse 'system_b' 2/4 (262140 KB) OKAY [ 7.484s] Writing 'system_b' OKAY [ 0.896s] Sending sparse 'system_b' 3/4 (262140 KB) OKAY [ 6.993s] Writing 'system_b' OKAY [ 0.873s] Sending sparse 'system_b' 4/4 (34396 KB) OKAY [ 0.924s] Writing 'system_b' OKAY [ 0.176s] Resizing 'system_ext_b' OKAY [ 0.004s] Sending 'system_ext_b' (136184 KB) OKAY [ 3.665s] Writing 'system_ext_b' OKAY [ 1.531s] Resizing 'system_a' OKAY [ 0.003s] Sending 'system_a' (23492 KB) OKAY [ 0.728s] Writing 'system_a' OKAY [ 0.151s] Resizing 'vendor_b' OKAY [ 0.004s] Sending sparse 'vendor_b' 1/4 (262140 KB) OKAY [ 7.022s] Writing 'vendor_b' OKAY [ 1.893s] Sending sparse 'vendor_b' 2/4 (262140 KB) OKAY [ 6.996s] Writing 'vendor_b' OKAY [ 0.898s] Sending sparse 'vendor_b' 3/4 (262140 KB) OKAY [ 7.075s] Writing 'vendor_b' OKAY [ 0.902s] Sending sparse 'vendor_b' 4/4 (42360 KB) OKAY [ 1.120s] Writing 'vendor_b' OKAY [ 0.212s] Erasing 'userdata' OKAY [ 12.301s] Erase successful, but not automatically formatting. File system type raw not supported. Erasing 'metadata' OKAY [ 0.008s] Erase successful, but not automatically formatting. File system type raw not supported. Rebooting OKAY [ 0.000s] Finished. Total time: 105.627s可以看到燒錄過程中,燒完 dtb 和 system 後會自己 reboot,不要動他。
reboot 完會自己繼續download,最後 reboot,進入android.
memo 一下 pixel4 的最後版本 android-13.0.0_r31
一樣,下載 propriety binary 後 build OK, 但是燒錄後無法開機,停在 google logo 畫面。
另外,build 好的 aosp folder copy 到另一台機器上 會 build fail。
因為 out/host/linux-x86/b8in 下,有一些 python script 是絕對路徑的 link。
結果要燒回 factory ota image 時,用 adb sideload 出現 signiture verified error。
最後用 android flash tool 網頁版,才燒錄成功。
沒有留言:
張貼留言