Jenkins上的Android模拟器错误:设备离线

7
我已经为Jenkins安装了Android模拟器插件。我可以构建和测试一个Android项目。我的Jenkins正在Ubuntu服务器上运行(只能通过终端访问)。该项目从Github拉取。现在我想使用模拟器。这是我的配置:
  • Android操作系统版本:4.4
  • 屏幕密度:160
  • 屏幕分辨率:480x800
  • 目标ABI:armeabi-v7a

我还安装了adb并执行了以下命令:

/opt/android-sdk-linux/tools/android update sdk --no-ui 

但是它无法正常工作:

 > /usr/bin/git rev-list 3440b28279e2e95113ce1c9499d9d881e76f6810 # timeout=10
$ /opt/android-sdk-linux/tools/android list target
[android] Using Android SDK: /opt/android-sdk-linux
$ /opt/android-sdk-linux/platform-tools/adb start-server
* daemon not running. starting it now on port 7767 *
* daemon started successfully *
$ /opt/android-sdk-linux/platform-tools/adb start-server
[android] Starting Android emulator
$ /opt/android-sdk-linux/tools/emulator -ports 7765,7766 -prop persist.sys.language=en -prop persist.sys.country=US -avd hudson_en-US_160_WVGA_android-19_armeabi-v7a -no-snapshot-load -no-snapshot-save -no-window
Failed to Initialize backend EGL display
Could not initialize emulated framebufferemulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
emulator: warning: opening audio output failed

$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766
connected to localhost:7766
[android] Waiting for emulator to finish booting...
$ /opt/android-sdk-linux/platform-tools/adb -s localhost:7766 shell getprop init.svc.bootanim
error: device offline
$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766
$ /opt/android-sdk-linux/platform-tools/adb -s localhost:7766 shell getprop init.svc.bootanim
error: device offline
...
$ /opt/android-sdk-linux/platform-tools/adb connect localhost:7766
[android] Interrupted while waiting for emulator to finish booting.
[android] Emulator was shut down before it finished booting
$ /opt/android-sdk-linux/platform-tools/adb disconnect localhost:7766
[android] Stopping Android emulator
$ /opt/android-sdk-linux/platform-tools/adb kill-server
Archiving artifacts
Recording test results
ERROR: Publisher hudson.tasks.junit.JUnitResultArchiver aborted due to exception
hudson.AbortException: Test reports were found but none of them are new. Did tests run? 
For example, AndroidManifest.xml is 10 min old

有人能解释一下这个问题吗?谢谢。

请参见https://dev59.com/vWAg5IYBdhLWcg3wWpxE。 - John Cummings
1个回答

2
我遇到了相同的问题,即使手动尝试命令也无法解决。 但是,根据该评论,我可以使用像5555、5556这样的端口来解决问题:JENKINS-27456 有一个相关的拉取请求:PR on github 我会看看是否有时间获取和测试带有该补丁的构建,并在解决该问题后通知您。

仍在处理中(非全职)。我注意到,“adb connect”在打开套接字并发送其“CNXN”请求后,但在接收“CNXN”响应之前返回“已连接”。然后,如果在此之前执行下一个adb命令,则会失败。但我不知道为什么有时立即出现该响应,有时则需要5-6秒钟。正在调查中。一旦有有趣的报告,我将发布更新(如果相关,则提交PR)。 - Fabien L.D.
所以,我通过稍微修改模拟器插件并在adb连接命令后添加“Thread.sleep(10*1000)”来使插件显示除“设备离线”之外的其他内容。但此时,模拟器会出现“running”状态的bootanim,并期望出现“stopped”状态。 - Fabien L.D.
手动进行测试(即手动运行插件执行的命令行)时,我注意到模拟器需要超过15分钟才能达到那个点。FYI,我们在x86-64服务器上使用armeabi-v7a ABI。这对我们来说不合适。我们现在考虑的唯一选择是在我们的云服务器上配置KVM,以便能够使用x86_64 ABI。希望这可以帮助。 - Fabien L.D.

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