安卓模拟器 Jenkins 插件无法工作

20
我尝试在Cloudbees上使用Jenkins Android模拟器,但经常遇到以下输出:
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb disconnect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb disconnect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
$ /opt/android/android-sdk-linux/platform-tools/adb -s localhost:44194 shell getprop dev.bootcomplete
error: device offline
$ /opt/android/android-sdk-linux/platform-tools/adb connect localhost:44194
[android] Timed-out after waiting 720 seconds for emulator
$ /opt/android/android-sdk-linux/platform-tools/adb disconnect localhost:44194
[android] Stopping Android emulator
emulator: WARNING: Could not initialize OpenglES emulation, using software renderer.
$ /opt/android/android-sdk-linux/platform-tools/adb kill-server
Finished: NOT_BUILT

我将目标设为andoird-19,但尝试了几种其他目标版本。我也在本地Jenkins实例上尝试重现此问题,结果相同。

当我尝试从快照加载时,情况变得更糟:如果我不从快照开始,则模拟器在50%的情况下启动,如果我使用快照,则它总是会失败。

我使用emulator-arm作为可执行文件,因为我读到一些有关64位版本错误的信息。虽然我不确定它是否也适用于r19。

有什么想法吗?


当我尝试使用由Jenkins创建的模拟器时,我遇到了同样的问题。当我尝试使用现有的模拟器时,它根本找不到图像。(这两个问题都与v21有关)。让模拟器正常运行的最佳选项是什么? - Ivan V
3个回答

3

我遇到的Jenkins Android模拟器问题不胜枚举。以下是一份检查清单,以帮助解决问题:

1)您需要为android list和android update sdk都使用--all标志,否则某些软件包将无法安装:例如SDK 24

1a)$ANDROID_HOME/tools/android list sdk --all

1b)

(for i in {1..100}; do echo y; sleep 1; done) |
$ANDROID_HOME/tools/android update sdk --no-ui --all --filter 
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,80,81,82,82,84,85,101,102,103,112,113,117,118,119,120,121,122,123,124

如果你遇到了可怕的/home/jenkins/android-sdk-linux/platform-tools/adb -s emulator-XXXX shell getprop dev.bootcomplete error: device offline错误,很可能是在第1b步中缺少了一个包。
2)忽略可怕的Failed to Initialize backend EGL display错误,它是一个误导。
3)确保使用高级模拟器选项:
Emulator Options: -no-audio -gpu off
Emulator executable: emulator64-arm
Startup delay: 10  -- this *may* help

4) 一个预先构建的脚本 ${ANDROID_HOME}/platform-tools/adb kill-server 不会有害。

祝好运!


1

我在将Android模拟器插件升级到2.11.1后遇到了同样的问题。通过插件管理器降级到2.10已经被证明是一个可接受的解决方法。


使用SDK 4.2或Android-18/Google API 18可以正常工作。我猜这只会发生在最新版本的SDK中。 - valentina
你好,能详细说明一下你是如何降级的吗?我在我的“已安装”选项卡中没有看到这样的选项。 - Karthik T
是的,指定“android-18”而不是“android-19”可以正常工作。 - Yun
4
如果你需要测试应用程序兼容多个Android版本,从19降至18并不是一个很好的解决方案。 - Markus K

0

遇到了同样的问题,使用 Jenkins Android Emulator Plugin v2.13 与运行 android-19 及以上版本的模拟器。

我在 Jenkins 上找到了一个开放的修复问题的票据 here

看起来修复需要更新 Android Emulator 插件。同时,一个解决方法是使用 pre-android-19 模拟器 - 我在 android-16、android-17 或 android-18 模拟器上没有遇到这个问题。

另一种替代方法是尝试将 Android Emulator 插件降级到 v2.10,正如 @zachgeek 建议的那样。


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