【问题标题】:Bootloop if -writable-system is used如果使用 -writable-system,则引导循环
【发布时间】:2020-05-03 06:56:24
【问题描述】:

我曾经使用过启动我的 Android Studio 模拟器

emulator -avd "mydevice" -writable-system

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

为什么该选项会改变引导结果?

为了解决这个问题并让-writable-system 选项再次起作用,我该如何理解发生了什么?

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

【问题讨论】:

    标签: android-studio android-emulator avd avd-manager


    【解决方案1】:

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

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

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

    然后,一旦我使用选项-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选项,它就不会被加载,而只读系统图像,它存储在一个不同的地方,而是加载。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 2013-12-10
      • 2013-04-02
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多