0

我有一个连接到 Android 设备并在其上部署 APK 的 monkeyrunner 脚本。

serial = '12345JKL'
device = MonkeyRunner.waitForConnection(deviceId=serial)
device.installPackage(path_to_apk)

当我使用 Windows 命令 shell 执行脚本时,这可以完美地工作。

"C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter

问题是我想让 my_script.py 由同一台 PC 上的 TeamCity(Enterprise 6.0.3)构建配置执行:这失败了。请在此处找到堆栈跟踪:http: //pastebin.com/CjWy95c3

首先,我认为 TC 弄乱了脚本的参数。但是来自 TC 构建日志的命令

[00:55:12]: Starting: "C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter
in directory: C:\some_dir

与命令外壳中的相同,因此当我将命令复制到命令外壳时,脚本可以连接到设备并且工作正常,而C:\some_dir我的当前目录是。

我无法在 TC 之外重现此错误。

我想强调这一切都发生在同一台 PC(Win 7 x64)上。该脚本在从命令 shell 执行时有效,但在由 TC 构建配置触发时失败(总是在尝试连接到设备时)。

我想不出发生这种情况的原因,如果有人能指出我正确的方向,我会非常高兴。

提前谢谢了

编辑:事实证明,问题不仅限于MonkeyRunner.waitForConnection()调用MonkeyRunner.sleep(5). 堆栈跟踪

莫非 MonkeyRunner 和 TeamCity 相处得不好?

4

2 回答 2

0

这可能是由您的导入问题引起的。您的导入问题可能是因为 TeamCity 调用 MonkeyRunner 的方式。我猜它与当前目录被搞砸有关。尝试使用

import os
os.chdir("path")

更改 .py 脚本顶部的当前目录。(在您导入 monkeyrunner 之前)我会尝试将其更改为使用 MonkeyRunner 的目录。

于 2011-09-13T18:22:22.790 回答
0

我和一位同事调查了三天后,我们找不到这个问题的根源。但是当我们使用另一台机器作为构建代理时,问题就消失了。我们仍然不知道是什么导致了这个 NullPointerException。

于 2011-09-14T12:30:09.720 回答