5

I want to create a python script which could be used to execute Android adb commands. I had a look at https://github.com/rbrady/python-adb but can't seem to make it work perfectly. Any suggestions?

0

3 Answers 3

2

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

I had to modify a few functions to have it operate on Python 2.7 and use subprocess instead. Here 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
Sign up to request clarification or add additional context in comments.

Comments

1

Use a monkeyrunner tool for that. From it's documentation:

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

Comments

-1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.