import os, sys, subprocess, tempfile import time ANDROID_TMPDIR = '/data/local/tmp/Output' ADB = os.environ.get('ADB', 'adb') verbose = False if os.environ.get('ANDROID_RUN_VERBOSE') == '1': verbose = True def host_to_device_path(path): rel = os.path.relpath(path, "/") dev = os.path.join(ANDROID_TMPDIR, rel) return dev def adb(args, attempts = 1): if verbose: print args tmpname = tempfile.mktemp() out = open(tmpname, 'w') ret = 255 while attempts > 0 and ret != 0: attempts -= 1 ret = subprocess.call([ADB] + args, stdout=out, stderr=subprocess.STDOUT) if attempts != 0: ret = 5 if ret != 0: print "adb command failed", args print tmpname out.close() out = open(tmpname, 'r') print out.read() out.close() os.unlink(tmpname) return ret def pull_from_device(path): tmp = tempfile.mktemp() adb(['pull', path, tmp], 5) text = open(tmp, 'r').read() os.unlink(tmp) return text def push_to_device(path): dst_path = host_to_device_path(path) adb(['push', path, dst_path], 5)