我看到了一些关于在Docker中运行AndroidTest的链接和帖子,例如:
https://dzone.com/articles/running-android-tests-in-docker
https://github.com/ksoichiro/android-tests/tree/master/docker-emulator
还有其他一些。然而,它们似乎都不适用于CI中的AndroidTest,因为它们需要一个实际的虚拟机,或者它们太旧了。
我尝试了以下行命令(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 instrument
:android.util.AndroidException: Can't connect to activity manager; is the system running?
所以我的问题是:有人在docker的CI中作为一部分在模拟器上运行AndroidTest吗?这意味着你只需要挂载你的项目并运行gradle connectedAndroidTest
,一切正常。是否有一个可用的示例?