Android O 替换 system.img 无法开机问题

此文已同步推送到微信公众号:灰灰的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
fastboot mode

扫描二维码关注公众号,回复: 2699410 查看本文章

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笔记

猜你喜欢

转载自blog.csdn.net/ShawnXiaFei/article/details/80848364