Google GSI 刷写教程

匿名 (未验证) 提交于 2019-12-03 00:11:01

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!