所以我想设置一个 Android 模拟器,在 Linux Mint 台式机上玩《明日方舟》。
我有 libvirtd,并使用 virt-manager 来处理我的虚拟机。我设置了 Android-x86 9 和 Android-x86 8.1 虚拟机,但出现了相同的错误,或者说没有错误。使用 Arknights 时,它只是崩溃了,后续启动只会导致“Arknights 不断停止”,并且任何简单的修复(例如更新 AndroidWebView)似乎都不起作用,因为我无法更新或卸载它。
我尝试安装并运行 VOEZ,结果出现了一个稍微有用的错误,提示无法加载libmain.so
。我在 Google 上搜索了这个问题,只找到了建议我降级的开发者日志,所以我切换到了 Android 8.1,但这并没有解决任何问题。我还尝试运行任何程序,adb
但adb
都不存在,无论是在控制台还是在终端仿真器中。
我没有找到任何好的资源来学习 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-v7a和arm64-v8a。
您可以使用模拟 ARM 设备的模拟器来解决该问题。不过性能会受到很大影响。
模拟器可能也不支持游戏通常需要的 GPU 加速。
还有一个障碍:这款游戏有应用内购买功能,并且与 Google Play 紧密集成。它还可能包含更多 DRM(数字版权管理)、“复制保护”和/或篡改保护。
解决这些问题非常困难,即使你设法做到了,下一次更新可能会再次阻止你。
我的个人建议:放弃吧。这是不可行的。
答案2
安装Android-x86到它自己的分区,然后直接启动它。一般来说,使用 GFX 和所有硬件寻址将获得最佳效果。