我想创建一个可用于执行 Android adb 命令的 python 脚本。我查看了https://github.com/rbrady/python-adb但似乎无法使其完美运行。有什么建议么?
问问题
20860 次
3 回答
2
这个工具应该可以完成工作。 https://pypi.python.org/pypi/pyadb/0.1.1
我不得不修改一些函数以使其在 Python 2.7 上运行并改用 subprocess。这是我版本中修改后的代码:
def __build_command__(self,cmd):
if self.__devices is not None and len(self.__devices) > 1 and self.__target is None:
self.__error = "Must set target device first"
return None
if type(cmd) is tuple:
a = list(cmd)
elif type(cmd) is list:
a = cmd
else:
a = [cmd]
a.insert(0, self.__adb_path)
if self.__target is not None:
a.insert(1, ['-s', self.__target])
return a
def run_cmd(self, cmd):
"""
Run a command against adb tool ($ adb <cmd>)
"""
self.__clean__()
if self.__adb_path is None:
self.__error = "ADB path not set"
return
try:
args = self.__build_command__(cmd)
if args is None:
return
# print 'args>', args
cmdp = subprocess.Popen(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
self.__output, self.__error = cmdp.communicate()
retcode = cmdp.wait()
# print 'stdout>', self.__output
# print 'stderr>', self.__error
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
else:
return
except OSError, e:
self.__error = str(e)
return
于 2013-03-23T19:32:40.250 回答
1
为此使用monkeyrunner
工具。从它的文档:
除了使用 monkeyrunner API 本身,您还可以使用标准的 Python 操作系统和子进程模块来调用 Android 工具,例如 Android Debug Bridge。
于 2012-05-27T15:21:55.390 回答
-1
python-adb项目实现了 USB 通信层及更高版本,甚至提供了一个类似于 Android adb 的 API 以便于转换。
于 2016-05-02T01:32:05.087 回答