美文网首页
Mac: Python 执行 adb 命令

Mac: Python 执行 adb 命令

作者: SuperTang | 来源:发表于2019-04-18 16:05 被阅读0次

    作者个人网站:http://www.harddone.com

    说明

    本文以具体的python脚本为例进行说明,两个脚本都是根据开发过程中的业务需求而开发,并不具备通用性。但是其核心代码都是通过python的api执行adb命令:

    //example
    cmd = 'adb shell' 
    os.system(cmd)
    

    uninstall_clean_app.py

    #!/usr/bin/python
    import subprocess
    import os, sys
    import getopt
    
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    
    
    if __name__ == '__main__':
    
        """ change commands and add shell"""
    
        tag = ''
    
        try:
            opt, args = getopt.getopt(sys.argv[1:], "ht:", ['pkg', 'help'])
            for op, value in opt:
                if op in ("-t", "--pkg"):
                    tag = value
                if op in ("-h", "--help"):
                    print "Usage: main_app_clean.py -t APP_PKG_NAME"
                    print "Options:"
                    print "  -t  APP_PKG_NAME should be a bundle id !"
                    print ""
                    print "Sample : ./main_app_clean.py -t <bundle id>"
                    print ""
                    sys.exit()
        except getopt.GetoptError:  
                print "Error: Could not find the args."
                print "Usage: main_app_clean.py -t APP_PKG_NAME"
                print "Options:"
                print "  -t  APP_PKG_NAME should be a bundle id !"
                print ""
                print "Sample : ./main_app_clean.py -t <bundle id>"
                print ""
                sys.exit()
    
        
        if tag == '':
            print "you should input a bundle id  !"
            exit()
        pkg = tag
    
        print ''
        print '1) uninstalling ' + pkg +' ...'
        unInstallCmd = 'adb uninstall  ' + pkg 
        os.system(unInstallCmd)
    
        print ''
        print '2) cleaning the cached file...'
        cleanCmd1 = 'adb shell rm -fR /sdcard/.DataBackupTest'
        os.system(cleanCmd1)
        cleanCmd2 = 'adb shell rm -fR /sdcard/.DataBackup'
        os.system(cleanCmd2)
        print ''
        print ' All done !^_^!'
        print ''
    
        exit()
    
    

    根据app bundle id 卸载应用,并且删除该应用在sdcard目录下生成的文件夹等。当前脚本中所删除的目录是写死的,可以根据需要自己修改。

    • 使用方法

      • 下载脚本到指定目录
      • 打开terminal,执行cd命令到脚本所在目录
      • 执行python命令 python ./uninstall_clean_app.py -t com.xxx.app
      01.png

    obb_push.py

    #!/usr/bin/python
    import subprocess
    import os, sys
    import getopt
    
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    
    
    if __name__ == '__main__':
    
        """ change commands and add shell"""
    
        tag = ''
    
        try:
            opt, args = getopt.getopt(sys.argv[1:], "ht:", ['tag', 'help'])
            for op, value in opt:
                if op in ("-t", "--tag"):
                    tag = value
                if op in ("-h", "--help"):
                    print "Usage: obb_push.py -t TAG_NAME"
                    print "Options:"
                    print "  -t  TAG_NAME.Choose what you want to use tag, should be a obb file path !"
                    print ""
                    print "Sample : ./obb_push.py -t <obb file path>"
                    print ""
                    sys.exit()
        except getopt.GetoptError:  
                print "Error: Could not find the args."
                print "Usage: obb_push.py -t TAG_NAME"
                print "Options:"
                print "  -t  TAG_NAME.Choose what you want to use tag, should be a obb file path !"
                print ""
                print "Sample : ./obb_push.py -t <obb file path>"
                print ""
                sys.exit()
    
        
        if tag == '':
            print "you should input a obb file\'s path !"
            exit()
    
        print '======to get package name=======>'
        obbFilePath = tag
        if obbFilePath == '':
            print 'you should input a obb file\'s path !'
            exit()
        obbSubDirs = obbFilePath.split('/')
        # index  = len(obbSubDirs) - 1
        obbFileName = obbSubDirs[-1]
        print '>>>obbFileName = ' + obbFileName
        if obbFileName == '' or obbFileName.find('.obb') == -1:
            print 'can not find a obb file in the path !'
            exit()
        
        tmpPackageName = obbFileName.split('.')
        print  tmpPackageName
        packageName = ''
        # for com in tmpPackageName[2:-2]:
        #   print com
        #   if com == tmpPackageName[-2]:
        #       packageName += com
        #   else:
        #       packageName += com + "." 
        packageName = '.'.join(tmpPackageName[2:-1])
        print '>>>package name = ' + packageName
    
    
        print '=======adb shell mkdir ========>'
        obbDestPath = 'sdcard/Android/obb/' + packageName
        subDir = ''
        subDirs = obbDestPath.split('/')
        for dir in subDirs:
            subDir += '/' + dir
            # print subDir 
            os.system('adb shell mkdir ' + subDir)
    
        print '=======adb push obb file to device ========>'
        pushCmd = 'adb push ' + obbFilePath.replace(' ','\\ ')+ ' /' + obbDestPath + '/' 
        # print pushCmd
        os.system(pushCmd)
    
        exit()
    

    该脚本作用是根据传入的obb文件完整路径,解析出app bundle id,然后将obb文件push到android设备上,减少出错机会和烦人的拷贝工作,执行该脚本可有快速完成。

    • 使用方法同上,最后执行命令 python ./obb_push.py -t <obb file path>
    02.png

    相关文章

      网友评论

          本文标题:Mac: Python 执行 adb 命令

          本文链接:https://www.haomeiwen.com/subject/zqstgqtx.html