我尝试同时使用快照和GPU支持来运行模拟器,但模拟器无法启动:
模拟器:错误:此时快照和GPU是相互排斥的。请关闭其中一个,并重新启动模拟器。
我想知道这些限制的原因是什么?对我来说似乎不是逻辑上的冲突。
我尝试同时使用快照和GPU支持来运行模拟器,但模拟器无法启动:
模拟器:错误:此时快照和GPU是相互排斥的。请关闭其中一个,并重新启动模拟器。
我想知道这些限制的原因是什么?对我来说似乎不是逻辑上的冲突。
Android模拟器基于QEMU,需要模拟各种硬件设备,就像Android在真实手机上运行时一样。具体地,它模拟了一个名为“goldfish”的虚构手机。
当您保存快照时,设备RAM必须保存在快照中。但这不仅仅意味着主RAM——它还涉及到手机硬件的所有其他琐碎部分——例如CPU寄存器、实时时钟硬件状态以及此虚拟手机中每个其他硬件的所有寄存器。
如果您没有启用GPU,则图形硬件状态相对简单——它将是一个帧缓冲区和表示x维度、y维度和像素格式的少量寄存器。
然而,如果您启用了GPU直通,那么保存该硬件的状态将更加复杂。QEMU需要保存每个纹理的状态,设置了哪些摄像头,几何形状,以及GPU中保留的其他无数内容。流向GPU的命令流水线也必须在任意点被打断,并记录这些命令的执行状态(很难,因为有多级流水线,有些指令可能已经部分执行)。
此外,qemu实际上可能很难获得这些信息,因为qemu只是将它通过到主机GPU。qemu无法询问主机GPU驱动程序已经执行了哪些操作和未执行哪些操作。至少,这需要主机操作系统和GPU驱动程序的支持,甚至可能需要更改GPU流水线以简化事情,使得可以在任意点停止并重新启动流水线。
首先检查您的Android模拟器快照是否已启用?(如果已启用,请将其取消选中) 在Eclipse中转到AVD ->选择您的模拟器 ->编辑 ->启用快照 ->取消选中它。 重新启动后将正常运行。 我为同样的问题做了这件事。