Google GSI 刷写教程

  • Post author:
  • Post category:其他



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并启动完成。

不出意外的话,烧写成功。



版权声明:本文为h1217256980原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。