如何在Docker容器中运行emulator64-arm?

10

我尝试在Docker容器中运行emulator64-arm,但它报告:

$ emulator64-arm -avd t2 -no-window -no-accel -gpu off
qemu: could not open disk image /home/testuser/.android/avd/t2.avd/sdcard.img: Interrupted system cal

我认为qemu-aarch64应该是一个纯软件仿真器,不涉及任何花哨的东西,但我错了。 我还尝试使用--privileged启动容器,但仍然没有运气。

在我的情况下,我们需要为我们的Android APK运行一些烟雾测试,速度并不重要,但Android-X86不是一个选项。


2
可以是所有的东西:权限?您是在容器内创建模拟器还是绑定了卷?sdcard.img 存在吗?能否请分享 Docker 文件? - spacifici
@spacifici,我真的没有Dockerfile,我手动安装了所有依赖项,包括android-sdk、环境变量等。在相同的过程之后,它在容器外部工作,但在容器内部不起作用。我只是想知道这个“Interrupted system call”是什么意思,即使img不存在,它也不应该出现,而且是的,sdcard.img在那里。 - Windoze
我有一个沙盒游乐场,在那里我运行模拟器而不使用硬件加速。你可以在这里检查 https://github.com/plastiv/peta-androidsdk/blob/master/android-28/version-check.sh#L18,看看你的设置是否有任何明显的不同。 - Sergii Pechenizkyi
请提供 "docker info" 输出、详细输出和 Dockerfile(安装所使用的所有命令集)- 这将有助于复制您的问题。 - Jan Garaj
@Windoze 很棒,它起作用了。请考虑自我回答 https://stackoverflow.com/help/self-answer - Sergii Pechenizkyi
显示剩余3条评论
1个回答

2

这不是关于根本原因,而是一个解决方法。

在Linux下创建的AVD也会为每个映像创建“qcow2”文件,使用这些qcow2文件,模拟器可以成功启动。

但是这些qcow2文件不会在任何其他平台下创建,我曾经使用在Mac下创建的AVD并遇到了错误,然后我在Linux下重新创建了AVD,错误就消失了。

(注:Original Answer翻译成"最初的回答")


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