GSI燒寫的意義
體驗Android 最新版本的功能,GSM 認證中的VTS測試必須要使用谷歌的GSI包
GSI燒寫流程
一、前期準備工作
GSI包下載地址:https://ci.android.com/builds/branches/aosp-pie-gsi/grid?(包括GSI包和fastboot工具,保持版本一致)
如果谷歌開發者合作伙伴賬戶,可以在裏面下載,裏面的資源比較全。
1、確定設備起始版本,確定是否是p版以前的舊版本(28 爲 pie 最新)
adb shell getprop ro.product.first_api_level
2、版本補丁日期查看,要與下載的GSI補丁日期要一致
adb shell getprop ro.build.version.security_patch
3、查看是否支持刷GSI通用版本,通過運行以下命令檢查是否具有 Treble 支持:
adb shell getprop ro.treble.enabled
4、通過運行以下命令檢查是否具有跨版本支持:
adb shell cat /system/etc/ld.config.version_identifier.txt | grep -A 20 "\[vendor\]"
5、GSI CPU 架構類型必須與設備的 CPU 架構保持一致。要爲 GSI 映像查找合適的 CPU 架構,請運行以下命令:
adb shell getprop ro.product.cpu.abi
6、要確定系統用戶的權限級別,(針對9.0以下的版本,8.0 ,8.1),請運行以下命令:
adb shell cat /proc/mounts | grep -q /dev/root && echo "system-as-root" || echo "non-system-as-root"
如果命令的輸出是 system-as-root,則您必須使用 _ab 類型的 GSI 映像。如果輸出是 non-system-as-root,則必須使用 _a 類型。如果命令的輸出中沒有值,則表示設備與 GSI 不兼容,不支持刷GSI。
二、刷寫GSI的設備需要具備的條件
Android 設備可能具有不同的設計,因此不可能通過單個命令或單組指令就能將 GSI 刷寫到特定設備上。可以參考以下常規步驟:
1、確保設備具備以下條件:
1)支持 HIDL-HAL 接口
2)用於解鎖設備的方法(以便能夠使用 fastboot 對其進行刷寫)
3)用於停用驗證啓動(例如 vboot 1.0 或 AVB)的方法
4)使其可通過 fastboot 進行刷寫的已解鎖狀態(爲確保您擁有最新版本的 fastboot,請從 Android 源代碼樹進行編譯,或者下載GSI附帶的fastboot。)
2、停用驗證啓動。
3、清空當前系統分區,然後將 GSI 刷寫到系統分區。
4、擦除用戶數據,並清除來自其他必要分區(例如,用戶數據分區和系統分區)的數據。
5、重新啓動設備。
三、燒寫流程(linux環境下)
1、adb devices #確保設備連上
2、adb reboot fastboot #adb重啓並進入fastboot模式
3、sudo ./fastboot devices #查看fastboot模式下的在線設備
4、sudo ./fastboot flashing unlock #解鎖操作(新款設備)
注意:解鎖新款設備和舊款設備
自 2014 年以來發布的所有 Nexus 和 Pixel 設備(從 Nexus 6 和 Nexus 9 開始)都內置有恢復出廠設置保護功能,需要執行多個步驟才能解鎖引導加載程序。
1)要在設備上啓用 OEM 解鎖功能,請執行以下操作:
(1)在“設置”中,點按關於手機,然後點按版本號七 (7) 次。
(2)當看到“您已處於開發者模式”這條消息後,點按返回按鈕。
(3)點按開發者選項,然後啓用 OEM 解鎖和 USB 調試(如果 OEM (4)解鎖處於停用狀態,請連接到互聯網,以便設備可以至少簽到一次。如果“OEM 解鎖”仍處於停用狀態,則說明設備可能已被運營商鎖定 SIM 卡,系統無法解鎖引導加載程序)。
2)重新啓動進入引導加載程序,然後使用 fastboot 解鎖。
(1)對於新款設備(2015 年及之後發佈的設備):
sudo ./fastboot flashing unlock,對應值加鎖 sudo ./fastboot flashing lock
(2)對於老款設備(2014 年及之前發佈的設備):sudo ./fastboot oem lock
sudo ./fastboot oem unlock
3)在屏幕上確認解鎖。
5、sudo ./fastboot --disable-verification flash vbmeta /home/VTS/GSI/vbmeta.img #通過刷寫 vbmeta.img 停用驗證啓動 (AVB)
6、sudo ./fastboot erase system #擦除系統分區
7、sudo ./fastboot flash system /home/VTS/GSI/system.img #將 GSI 刷寫到系統分區
sudo ./fastboot -S 100M flash system /home/VTS/GSI/system.img
8、sudo ./fastboot -w #擦除用戶數據,並清除來自其他必要分區的數據(例如,用戶數據分區和系統分區)
9、sudo ./fastboot reboot #重啓
重啓後可能會進入recovery 模式,選擇清除用戶數據即可
等待開機進入android logo並啓動完成。
不出意外的話,燒寫成功。