GoogleGSI刷写教程
GSI烧写的意义
体验Android 最新版本的功能,GSM 认证中的VTS测试必须要使⽤⾕歌的GSI包
GSI烧写流程
1、确定设备起始版本,确定是否是p版以前的旧版本(28 为 pie 最新)
adb shell getprop ro.product.first_api_level
android最新版
2、版本补丁⽇期查看,要与下载的GSI补丁⽇期要⼀致
adb shell getprop ro.build.version.security_patch
3、查看是否⽀持刷GSI通⽤版本,通过运⾏以下命令检查是否具有 Treble ⽀持:
adb shell abled
4、通过运⾏以下命令检查是否具有跨版本⽀持:
adb shell cat /system/fig. | 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并启动完成。
不出意外的话,烧写成功。