Bootloop 如果使用 -writable-system

Bootloop if -writable-system is used

我曾经使用

启动我的 Android Studio 模拟器
emulator -avd "mydevice" -writable-system

但突然之间,只有我删除 -writable-system 选项才有效,否则它会卡在引导徽标上。

为什么这个选项会改变启动的结果?

我怎样才能理解发生了什么,以便解决这个问题并使 -writable-system 选项再次起作用?

在最坏的情况下,有没有办法在不清除用户数据的情况下重置系统映像?

最后我自己解决了问题...

问题的原因是系统分区损坏。

我进入我的 AVD 文件夹并将系统映像文件 system.img.qcow2 重命名为 BACKUP_system.img.qcow2(我也可以删除它,但你永远不知道)。

然后,一旦我运行带有选项-writable-system的模拟器,因为它再也找不到系统映像文件,然后它创建了一个新的,现在可以写在再次系统分区。

而且这也让我避免了擦除用户数据分区,因此我保存了数据,就像没有发生过任何坏事一样。

没有-writable-system选项仍然有效的原因:

当我删除 system.img.qcow2 文件时,最初我尝试 运行 模拟器 没有 -writable-system。再次,它起作用了...并且没有生成新的系统映像文件

我试图对此进行调查,当 运行ning:

emulator -help-disk-images

我注意到它说:

If you use a virtual device, its content directory should store
all writable images, and read-only ones will be found from the
corresponding platform/add-on directories.

所以这就是为什么模拟器在没有 -writable-system 选项的情况下仍然可以工作的原因,尽管系统映像文件已损坏。这是因为那是一个可写的图像文件,所以如果不使用-writable-system选项则不会加载它,并且只读而是加载存储在不同位置的系统映像。

当然,当模拟器需要创建一个新的可写系统分区时(如本例),它会从只读系统映像中复制它。