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并启动完成。
不出意外的话,烧写成功。