How can I use Python to execute adb commands?

I want to create a python script that can be used to execute Android adb commands. I looked at https://github.com/rbrady/python-adb but it can't seem to work fine. Any suggestions?

+4
source share
3 answers

This tool should do the job. https://pypi.python.org/pypi/pyadb/0.1.1

I had to change a few functions to make it work on Python 2.7 and use a subprocess instead. Here's the modified code in my version:

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 
+2
source

Use the monkeyrunner tool for this. From it the documentation :

Besides using the monkeyrunner API itself, you can use the standard Python modules and subprocesses to invoke Android tools such as Android Debug Bridge.

+1
source

The python-adb project implements the USB communication layer and even providing an Android-like API for easy conversion.

-1
source

Source: https://habr.com/ru/post/1414606/


All Articles