在Docker中的Android Emulator上运行AndroidTest

在Docker中的Android Emulator上运行AndroidTest,android,docker,android-emulator,continuous-integration,Android,Docker,Android Emulator,Continuous Integration,我看到了一些关于在Docker中运行AndroidTest的链接和帖子。比如: 还有一些。然而,它们似乎都不适合CI中的AndroidTest,因为它们需要一个实际的VM,或者只是它们太旧了 我尝试了以下行Docker图像(部分): 然后我使用以下命令运行模拟器: /opt/adk/emulator/emulator @Android -writable-system -nocache -no-snapstorage & 但是,当尝试运行connectedAndroidTest时,

我看到了一些关于在Docker中运行AndroidTest的链接和帖子。比如:

还有一些。然而,它们似乎都不适合CI中的AndroidTest,因为它们需要一个实际的VM,或者只是它们太旧了

我尝试了以下行Docker图像(部分):

然后我使用以下命令运行模拟器:

/opt/adk/emulator/emulator @Android -writable-system -nocache -no-snapstorage &
但是,当尝试运行
connectedAndroidTest
时,出现了一些奇怪的异常,如:
原因:com.android.ddmlib.InstallException:未知故障:错误:无法访问包管理器。系统正在运行吗?

或者,如果我尝试手动安装测试APK,并运行
am instrument
android.util.AndroidException:无法连接到活动管理器;系统正在运行吗?


所以我的问题是:是否有人在emulator上运行AndroidTest作为docker上CI的一部分?这意味着,您只需要装载项目并运行
gradleconnectedandroidtest
,然后一切都正常了吗?有这样的工作示例吗?

我在emulator上运行AndroidTest,作为docker上CI的一部分,使用以下图像:

您可能会遇到的问题是,由于缺少嵌套KVM,主机上的硬件加速不可用(只是猜测,但这正是我面临的问题)。在这种情况下,您必须使用软件渲染,这可能需要大量时间


使用软件渲染,启动大约需要40分钟,直到模拟器可用(在我的主机上)。但是,您可以像往常一样在可接受的时间范围内运行检测测试。

我们的CI在AWS上运行。如果有人感兴趣,我们想研究的解决方案是使用Genymotion AWS映像,并在其上运行androidTest。谢谢!您是在本地运行还是在AWS上运行?听起来docker始终处于活动状态,您不会在CI期间启动它,对吗?我不是在本地或AWS上运行它,而是在hetzner(CX21)的VPS上运行它。是的,您是对的,在CI构建作业期间,容器始终在运行且未启动。@ChristianHofer:My container在mac上30秒内自动退出。你的意思是,我应该在40分钟后再次运行容器吗?
/opt/adk/emulator/emulator @Android -writable-system -nocache -no-snapstorage &