在Docker的Android仿真器上运行AndroidTest

问题描述 投票:1回答:1

我看到了一些有关在Docker中运行AndroidTest的链接和帖子。喜欢:

https://dzone.com/articles/running-android-tests-in-docker

https://github.com/ksoichiro/android-tests/tree/master/docker-emulator

还有更多。但是,它们似乎都不适合CI中的AndroidTest,因为它们需要实际的VM,或者仅仅是它们太旧了。

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

RUN /opt/adk/tools/bin/sdkmanager "emulator" "build-tools;${BUILD_TOOLS}" "platforms;${ANDROID_PLATFORM}" "system-images;${ANDROID_PLATFORM};google_apis;armeabi-v7a" \
    && echo no | /opt/adk/tools/bin/avdmanager create avd -n "Android" -k "system-images;${ANDROID_PLATFORM};google_apis;armeabi-v7a" \

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

/opt/adk/emulator/emulator @Android -writable-system -nocache -no-snapstorage &

但是,当尝试运行connectedAndroidTest时,出现了一些奇怪的异常,例如:Caused by: com.android.ddmlib.InstallException: Unknown failure: Error: Could not access the Package Manager. Is the system running?

或者,如果我尝试手动安装测试APK,然后运行am instrumentandroid.util.AndroidException: Can't connect to activity manager; is the system running?

所以我的问题是:是否有人在模拟器上运行AndroidTest作为Docker上CI的一部分?就是说,仅需要挂载项目并运行gradle connectedAndroidTest的图像,一切正常吗?有没有可行的例子?

android docker android-emulator continuous-integration
1个回答
0
投票

我知道。使用此图像:https://hub.docker.com/r/chrisss404/android-emulator

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

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

© www.soinside.com 2019 - 2024. All rights reserved.