无法在 Linux Mint 上的 Android QEMU VM 上玩大多数游戏

无法在 Linux Mint 上的 Android QEMU VM 上玩大多数游戏

所以我想设置一个 Android 模拟器,在 Linux Mint 台式机上玩《明日方舟》。

我有 libvirtd,并使用 virt-manager 来处理我的虚拟机。我设置了 Android-x86 9 和 Android-x86 8.1 虚拟机,但出现了相同的错误,或者说没有错误。使用 Arknights 时,它只是崩溃了,后续启动只会导致“Arknights 不断停止”,并且任何简单的修复(例如更新 AndroidWebView)似乎都不起作用,因为我无法更新或卸载它。

我尝试安装并运行 VOEZ,结果出现了一个稍微有用的错误,提示无法加载libmain.so。我在 Google 上搜索了这个问题,只找到了建议我降级的开发者日志,所以我切换到了 Android 8.1,但这并没有解决任何问题。我还尝试运行任何程序,adbadb都不存在,无论是在控制台还是在终端仿真器中。

我没有找到任何好的资源来学习 QEMU,因为 gentoo 社区一如既往地封闭和不透明,所以这很容易成为我的问题,但我不知道。

这是我的虚拟机配置:

<domain type="kvm">
  <name>arknigjts</name>
  <uuid>125914a8-380e-433f-960b-415ffd3c3289</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://android-x86.org/android-x86/8.1"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">8388608</memory>
  <currentMemory unit="KiB">8388608</currentMemory>
  <vcpu placement="static">4</vcpu>
  <os>
    <type arch="x86_64" machine="pc-i440fx-jammy">hvm</type>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state="off"/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on"/>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2"/>
      <source file="/var/lib/libvirt/images/arknigjts.qcow2"/>
      <target dev="hda" bus="ide"/>
      <boot order="1"/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </disk>
    <controller type="usb" index="0" model="ich9-ehci1">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x7"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci1">
      <master startport="0"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0" multifunction="on"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci2">
      <master startport="2"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x1"/>
    </controller>
    <controller type="usb" index="0" model="ich9-uhci3">
      <master startport="4"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x2"/>
    </controller>
    <controller type="pci" index="0" model="pci-root"/>
    <controller type="ide" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x06" function="0x0"/>
    </controller>
    <interface type="network">
      <mac address="52:54:00:69:5b:58"/>
      <source network="default"/>
      <model type="virtio"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <graphics type="spice">
      <listen type="none"/>
      <image compression="off"/>
      <gl enable="yes"/>
    </graphics>
    <sound model="ich6">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
    </sound>
    <audio id="1" type="spice"/>
    <video>
      <model type="virtio" heads="1" primary="yes">
        <acceleration accel3d="yes"/>
      </model>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
    </video>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="2"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="3"/>
    </redirdev>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x07" function="0x0"/>
    </memballoon>
  </devices>
</domain>

答案1

由于 Android x86 在实际 Android 设备市场上根本不重要,因此应用程序可能根本不支持它。一些应用程序,尤其是游戏,带有原生部分(如libmain.so这里)。它们必须与平台匹配。开发人员还可以选择将多个 APK 上传到 Google Play,以针对不同的设备。确保您有一个兼容的 APK。对于 Arknights,我只能找到armeabi-v7aarm64-v8a

您可以使用模拟 ARM 设备的模拟器来解决该问题。不过性能会受到很大影响。

模拟器可能也不支持游戏通常需要的 GPU 加速。


还有一个障碍:这款游戏有应用内购买功能,并且与 Google Play 紧密集成。它还可能包含更多 DRM(数字版权管理)、“复制保护”和/或篡改保护。

解决这些问题非常困难,即使你设法做到了,下一次更新可能会再次阻止你。


我的个人建议:放弃吧。这是不可行的。

答案2

安装Android-x86到它自己的分区,然后直接启动它。一般来说,使用 GFX 和所有硬件寻址将获得最佳效果。

Android_x86 - 如何在 5 分钟内使用 Mint 设置双启动

相关内容