6

我想通过 Jenkins 测试我们的 android 应用程序。我配置了所有内容,但收到此错误消息:

[android] 模拟器似乎没有启动;放弃

我从这里找到了解决这个问题的方法

这可能有几个原因。其中之一在下面的错误中列出。我自己没有遇到过这个问题,但我在寻找解决我的具体问题的方法时阅读了 stackoverflow。好像和android sdk工具的改版有关。在 Windows 上,有一个像这张票中所述的修复:https ://issues.jenkins-ci.org/browse/JENKINS-10815 但是在 linux 上似乎有一个类似的问题尚未修复(至少票仍然开放):https ://issues.jenkins-ci.org/browse/JENKINS-14901

解决方案:该票证中建议的解决方案是创建一个名为 emulator (back original) 的链接,指向相应的 emulator-X bin。

我尝试了它并解决了我们的问题,但只有一些构建,之后我再次收到此消息。这就是为什么我删除了android插件并删除了sdk文件夹,所以我重新安装了所有东西。之后有4个成功的构建。(有趣的是,我没有像以前那样创建模拟器链接)但就是这样,问题得到了支持。我玩了配置并为模拟器启动设置了 30 秒延迟,并检查了“构建后删除模拟器”选项。我以为问题解决了,因为我有 14 个!!!成功构建但问题再次出现:(现在也有一个新的错误消息:

NAND:无法写入文件 /tmp/android-jenkins/emulator-CaWkYU,文件存在 [android] 模拟器似乎没有启动;放弃

你在想什么,有什么问题?使用相同的设置有时会成功,有时不会。为什么?

4

3 回答 3

3

最后我在源代码中发现了问题: AndroidEmulator.java

adb 连接超时为 1 分钟,已修复:

 private static final int ADB_CONNECT_TIMEOUT_MS = 60 * 1000;

所以我将它增加到 5 分钟,构建一个新插件并安装它,它解决了我的问题(~100 构建没有这个问题)

于 2013-11-21T13:38:12.227 回答
2

你有多少个构建执行器(默认是 2 个)?我打赌你一次只能在你的 Jenkins 服务器上运行一个模拟器,当两个作业试图执行时,一个作业会被破坏。如果是这种情况,您可能需要考虑使用Heavy Build 插件来在 Android 作业经过时锁定所有执行程序。或者使用奴隶。

于 2013-10-13T22:12:21.373 回答
0

您可以检查已修复此问题的拉取请求。在将 PR 合并到主 repo 并获取新的插件版本之前,只需从作者的分叉 repo 下载项目并运行命令:

mvn install

从项目根目录。之后获取位于的“android-emulator.hpi”文件

"<project root>/target"

来自 Jenkins Web UI 的目录和更新/安装插件

Manage Jenkins -> Manage Plugins -> Advanced

然后重新启动 Jenkins CI。在项目配置中使用选项

"Build Environment" -> "Common Emulator Options" -> "Advanced" -> "Adb timeout"

例如,将其设置为 300 秒。

于 2017-08-15T12:55:59.463 回答