在Ubuntu 17.04上,与Windows 10相比,Android模拟器运行极慢

8
我尝试从这个链接安装kvm:https://help.ubuntu.com/community/KVM/Installation。但是,即使我尝试了这个方法,在软件GLES 2.0模式下运行仿真器仍然很慢,并且当我选择硬件GLES 2.0作为图形时,我无法启动avd。它会显示启动avd几秒钟,然后之后就没有任何反应了。我是否遗漏了什么重要的步骤?

保留硬件 GLES 2.0 选项,从控制台运行以下命令 /yoursdkpath/emulator/.emulator -avd youremulatorname -use-system-libs 并告诉我发生了什么。请注意替换您的 SDK 路径和模拟器名称。 - Martin Revert
@MartinRevert 谢谢!它完美地运行了。所以我每次都要通过终端启动它吗? - Nidhin Rejoice
不,你不需要这样。我只是在尝试诊断问题。我会在几分钟内发布一个带有解决方案的答案。 - Martin Revert
1个回答

16

所以,问题在于Android SDK找不到OpenGL配置和库。Google会随SDK一起分发OpenGL库,但在Ubuntu上,由于找不到C++库,因此该配置文件已损坏,所以我找到的最佳解决方案是将符号链接指向您已经拥有的系统库。我让您执行的先前测试可以从命令行强制执行该情况,但通过下面的步骤,您可以获得更加永久和舒适的解决方案,使您能够直接从AVD UI启动任何硬件加速的模拟器。

首先,您的系统库在Ubuntu路径中:

/usr/lib/x86_64-linux-gnu/
如果在/usr/lib/x86_64-linux-gnu/目录下没有libstdc++.so.6文件,请使用以下命令进行安装:
sudo apt install libstdc++6

在您的情况下,很明显您已经安装了正确的库,否则模拟器将无法从命令行启动,但我留下上一步是为那些系统中没有正确库的人准备的。

所以,现在我们需要告诉Android SDK我们需要使用系统库。只需执行以下操作:

如果在~/yoursdkpath/emulator/lib64/libstdc++/路径下有一个libstdc++6文件,请执行mv libstdc++6 libstdc++6.bak进行备份。

然后:

ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6  ~/yoursdkpath/emulator/lib64/libstdc++/libstdc++.so.6

就是这样,去AVD启动任何选择了Hardware GLES 2.0配置的模拟器,它就可以运行了。

重要提示:谷歌会不时更新您的模拟器。如果您注意到在谷歌更新后模拟器无法从AVD启动,请重复此步骤,一切都将恢复正常。


1
我在 SDK/emulator/lib64 目录下找不到 libstdc++ 文件夹。我使用的是 Ubuntu 20。 - Othmane Namani
你必须自己创建目录。 - bemoore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接