无法从Jenkins连接到Android设备

时间:2014-02-05 16:47:01

标签: android python jenkins androidviewclient

所以我曾经从Jenkins内部调用一个MonkeyRunner脚本连接到一个USB Android设备并运行一些自动化测试,但是MonkeyRunner本身相当不稳定所以我切换到了很棒的AndroidViewClient并移植了我的测试脚本来使用这个纯粹的Python API。

新的Python脚本在独立于shell调用时工作正常,但目标是从Jenkins调用此脚本作为构建后步骤。

我遇到的问题是USB Android设备的初始连接。下面的脚本是来自实际测试脚本的片段 - 这是测试USB设备是否存在并在连接到Android设备之前获取其序列号的部分。这可以从ubuntu shell中正常工作,但是当从Jenkins的“执行Shell”调用时无法连接。

#! /usr/bin/env python

# Import Class Files

import re
import sys
import os
import time
import commands
import signal
import subprocess
import codecs

ubuntuHome = os.getenv('HOME')
sdkRootDefault = ubuntuHome + '/dev_env/ADT/sdk'
sdkRoot = os.getenv('ANDROID_SDK_ROOT',sdkRootDefault)
platformTools = sdkRoot + '/platform-tools'

# Find the attached devices
adbcmd = platformTools + "/./adb devices |grep -v attached |grep device |head -n 1 | cut  -f1"
p = subprocess.Popen(adbcmd, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
serialnoIn = (p.stdout.readline()).strip()

# No devices found then exit
if len(serialnoIn) == 0 or serialnoIn is None:
    print ("ERROR: No devices found")
    sys.exit(1)

print "INFO: Trying Connection to " + serialnoIn + "..." 

从Ubuntu Shell输出:

  

信息:尝试连接3a005473 ...

来自Jenkins的“执行Shell”构建步骤

  

错误:找不到设备

有趣的是,当从原始的MonkeyRunner脚本中调用这个相同的片段时,它工作正常。所以我在想MonkeyRunner做一些我的Python脚本没做的初始设置?我不熟悉Python专家知道如何配置USB设备。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

好的答案很简单 - 如果jenkins可以使用sdk工具和AndroidViewClient路径,这会有所帮助!

  

sudo -Rm u:jenkins:rwx

......修好了