Android 刷写Google通用镜像(GSI)

7,853 阅读3分钟

获取Google的GSI镜像地址(科学上网)

检查设备的合规性

  1. 需要检查设备是否支持刷写GSI的通用镜像,通过运行以下命令检查是否支持
adb shell getprop ro.treble.enabled

如果响应为false,则该设备与 GSI 不兼容,您不应继续。如果响应为true,则继续执行下一步。

  1. 通过运行以下命令检查跨版本支持:
adb shell cat /system/etc/ld.config.version_identifier.txt \| grep -A 20 "[vendor]"

在输出中,查看 的部分 [vendor]。 namespace.default.isolated

如果该属性的值为true,则设备完全支持 供应商原生开发工具包 (VNDK),并且可以使用比设备操作系统版本更新的任何 GSI 操作系统 (OS) 版本。选择可用的最新 GSI 操作系统版本。 如果该属性的值为false,则该设备不完全符合 VNDK,并且该设备只能将 GSI 用于相同的设备操作系统版本。例如,不兼容 VNDK 的 Android 9(API 版本 28)设备只能加载 Android 9 GSI 图像。

大部分设备执行这个命令是不行,也就是没用;可以下载 Treble Check App来检查设备是否支持刷写。

  1. GSI CPU 架构类型必须与设备的 CPU 架构相匹配。要为 GSI 映像找到正确的 CPU 架构,请运行以下命令:
adb shell getprop ro.product.cpu.abi

使用输出来确定刷新设备时要使用的 GSI 映像。例如,在 Pixel 3 上,输出将指示 CPU 架构为arm64-v8a,因此您将使用arm64GSI 类型。

安装GSI通用镜像

Android 设备可以有不同的设计,因此没有通用的命令或指令集用于刷新 GSI 以应用于所有设备。请与 Android 设备的制造商联系以获取明确的闪烁说明。(手机需要解BL锁,以及OEM解锁打开,各个品牌不一样需要自行查询)

  1. 需要进入fastboot模式
$ fastboot reboot fastboot

2.擦除 GSI 并将其刷入系统分区(systemimg需要替换成你下载的镜像.img):

$ fastboot erase system
$ fastboot flash system system.img

3.擦除用户数据并清除其他必要分区的数据(例如,用户数据和系统分区):

$ fastboot -w

在系统分区较小的 Android 10 或更新版本的设备上,刷入 GSI 时可能会出现以下错误消息:

  Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
  fastboot: error: Command failed

使用以下命令删除产品分区并为系统分区释放空间。这为内存GSI提供了额外的空间:

$ fastboot delete-logical-partition product_a

有些无法执行上面的命令的需要进入fastbootd,需要在fastboot界面执行(执行后,出现UI在执行上述操作):

fastboot reboot fastboot

出现这些情况需要重新开始在执行一次

4.最后重启系统:

fastboot reboot

我在使用Google Pixel 3进行刷写Android13的镜像时候,出现最多的问题就是A/B分区问题,大概执行第三步操作就行;具体问题可以百度查询,建议刷写的手机是Google Pixel系列和Google Nexus系列,可能会避免解BL锁的烦恼。