此文已同步推送到微信公众号:灰灰的Rom笔记
问题背景
自 Android 发布以来,以其开源特性吸引了大量厂商,但也因其开源特性,导致碎片化异常严重。严重的碎片化不仅让开发者适配起来苦不堪言,Google 也一肚子委屈。
为了减轻碎片化,Google 近几年对 Android 的使用逐渐有了一定的限制;其中比较直接的就是捆绑 Google 服务,而要使用 Google 服务,就得过 GMS 认证,GMS 认证又分 CTS、CTSV、GTS、VTS 几项。
自 Android O 开始 VTS 多了一项,就是要求 ROM 厂商必须要保证自己的 ROM 能刷入其他厂商的 system image,这里我管它叫“system 通刷”。
在 VTS 测试中,Google 提供了一个标准的 system.img (GSI),用来模拟第三方厂商的 system image。但在实际测试过程中,往往会发现在 user/userdebug 版本中,直接使用flash tool 单独烧录 GSI 时,会出现无法开机的现象。
比如开机闪 logo 之后,进入 fastboot mode…
解决方法
之所以出现这个问题,是因为在 user/userdebug 版本中,dm-verity 是使能的,替换GSI后导致 dm-verity 不能通过,因此无法进入正常开机流程。
为了解决这个问题,在烧录 system.img 前就得先进行unlock
操作,然后使用fastboot
方式进行 flashing,具体操作步骤如下:
1、
正常开机,进入系统,激活开发者模式。
2、
(Android O)进入开发者模式,找到并打开 OEM unlocking
,如下图。
3、
在开发者模式中,找到并打开 USB debugging
,如上图。
4、
正常关机,然后按住Volume UP + Power
按键,根据提示进入 fastboot mode
。
5、
使用数据线连接电脑,打开Windows CMD
或者Linux Terminal
,这里以 CMD 为例。
5.1、
在 CMD 输入如下命令,查看机器连接
是否正常:
C:\Users\ShawnXia>fastboot devices
L76P45I749HE9L8D fastboot
C:\Users\ShawnXia>
如看到上面的信息,则表示 fastboot mode 连接正常,可以进行下一步操作。
5.2、
输入如下命令,请求解锁 fastboot flashing
:
C:\Users\ShawnXia>fastboot flashing unlock
...
此时 CMD 进入等待状态,Android 设备显示如下信息:
根据提示信息,选择Yes
,即按下Volume UP
。
此时 Android 设备会显示 3秒后回到 fastboot mode,CMD 显示操作成功的信息:
C:\Users\ShawnXia>fastboot flashing unlock
...
OKAY [ 6.927s]
finished. total time: 6.929s
C:\Users\ShawnXia>
5.3、
输入如下命令,请求解锁 fastboot oem
:
C:\Users\ShawnXia>fastboot oem unlock
...
此时 CMD 再次进入等待状态,Android 设备显示如下信息:
仍旧根据提示信息,选择Yes
,即按下Volume UP
。
此时 Android 设备会显示 3秒后回到 fastboot mode,CMD 显示操作成功的信息:
C:\Users\ShawnXia>fastboot oem unlock
...
OKAY [119.422s]
finished. total time: 119.425s
C:\Users\ShawnXia>
6、
至此,解锁操作已完成,可以开始刷 system.img
了。
在 CMD 输入如下命令:
C:\Users\ShawnXia>fastboot flash system "你的路径\system.img"
此时 CMD 会显示如下信息,说明 img 文件找到了,可以用往下走:
target reported max download size of 134217728 bytes
短暂等待之后,Android 设备上会显示 flashing 进度,同时 CMD 会同步显示如下信息:
erasing 'system'...
OKAY [ 0.746s]
sending sparse 'system' 1/10 (131069 KB)...
OKAY [ 3.951s]
writing 'system' 1/10...
OKAY [ 8.125s]
sending sparse 'system' 2/10 (128351 KB)...
OKAY [ 3.849s]
writing 'system' 2/10...
OKAY [ 9.103s]
~~~ 此处省略部分进度 ~~~
sending sparse 'system' 9/10 (128246 KB)...
OKAY [ 3.848s]
writing 'system' 9/10...
OKAY [ 9.337s]
sending sparse 'system' 10/10 (43080 KB)...
OKAY [ 1.317s]
writing 'system' 10/10...
OKAY [ 2.778s]
finished. total time: 124.244s
当看到 finished 时,说明已经成功将 system.img 刷入机器了。
7、
至此,只需要在 CMD 输入如下命令,重启设备就可以了:
C:\Users\ShawnXia>fastboot reboot
rebooting...
finished. total time: 0.007s
C:\Users\ShawnXia>
此文已同步推送到微信公众号:灰灰的Rom笔记