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