我曾经使用启动我的 Android Studio 模拟器
emulator -avd "mydevice" -writable-system
但突然之间,它只有在我删除该-writable-system
选项时才有效,否则它会卡在启动徽标上。
为什么该选项会改变引导的结果?
我怎样才能理解发生了什么,以便解决这个问题并使该-writable-system
选项再次起作用?
在最坏的情况下,有没有办法在不删除用户数据的情况下重置系统映像?
我曾经使用启动我的 Android Studio 模拟器
emulator -avd "mydevice" -writable-system
但突然之间,它只有在我删除该-writable-system
选项时才有效,否则它会卡在启动徽标上。
为什么该选项会改变引导的结果?
我怎样才能理解发生了什么,以便解决这个问题并使该-writable-system
选项再次起作用?
在最坏的情况下,有没有办法在不删除用户数据的情况下重置系统映像?
最后我自己解决了这个问题...
问题的原因是系统分区损坏。
我进入了我的 AVD 文件夹并将系统映像文件重命名system.img.qcow2
为BACKUP_system.img.qcow2
(我也可以删除它,但你永远不知道)。
然后,一旦我用 option 运行模拟器-writable-system
,因为它再也找不到系统映像文件,所以它创建了一个新的,现在可以再次在系统分区上写入。
这也让我避免了擦除用户数据分区,因此我保存了数据,就像没有发生任何坏事一样。
-writable-system
没有选项它仍然工作的原因:
当我删除system.img.qcow2
文件时,最初我尝试在没有-writable-system
. 再次,它工作了......并且没有生成新的系统映像文件。
我试图对此进行调查,并且在运行时:
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
不使用该选项,则不会加载它,而是加载存储在不同位置的只读系统图像。
当然,当模拟器需要创建一个新的可写系统分区(如本例中)时,它会从该只读系统映像中复制它。