批量安装当前目录下的apk文件

来源:互联网 发布:怎样手机网络理财投资 编辑:程序博客网 时间:2024/06/11 03:59
#!/usr/bin/env python# -*- coding:utf-8 -*-import osimport sys# 脚本用来进行adb 批量push文件,并预置So库,逻辑为按照push脚本所在目录中list文件进行相应的apk下载。脚本所在目录应包含list(各个包)和so库文件夹# reload(sys)# sys.setdefaultencoding('utf8')# adb连接指令print u"等待设备连接"popen = os.popen("adb wait-for-device")print popen.read()print u"设备已连接"os.popen("adb root")os.popen("adb wait-for-device")os.popen("adb remount")os.popen("adb wait-for-device")# 获得当前目录文件及文件夹cwdpath = os.listdir(os.getcwd())# print "flag:%s"%cwdpath#获得.py文件所在目录路径pypath = os.path.split(os.path.realpath(__file__))[0]# 安装单个apkoneapk = raw_input(unicode("输入123456进行默认操作!安装单个apk文件,请直接输入包含'.apk'的文件名并回车:", "utf-8").encode('gbk'))# 进行包含".apk"文件名的单个apk安装,并预置so库if ".apk" in oneapk:    print oneapk    print "removing %s" % oneapk    try:        rmoneapk = os.popen("adb shell rm /system/priv-app/%s" % oneapk)        # print rmoneapk.read()    except:        print u"此apk不存在"    finally:        instapk = os.popen("adb push %s /system/priv-app" % oneapk)        print u"%s push 完毕" % oneapk        # 获得当前目录的绝对路径        #filepath = os.path.abspath(os.getcwd())        # 打开路径下的so文件夹,预置so库        so_path = pypath + '\so'        # 列出so文件夹下文件        lis_so = os.listdir(so_path)        # print lis_so        # 获得so文件夹的绝对路径        so_abspath = os.path.abspath(so_path)        # 打开so文件夹        os.chdir(so_abspath)        # 输出so文件夹绝对路径        print so_abspath        print u"预置so库"        for c in lis_so:            print c            print "pushing so/%s to /system/lib/" % c            with open(c, 'r') as e:                pushso = os.popen("adb push %s /system/lib/%s" % (c, c))                print pushso.read()                os.popen("adb shell chmod 644 /system/lib/%s" % c)        print u"预置so库完毕"# 默认操作else:    # 获得当前目录的绝对路径    filepath = os.path.abspath(os.getcwd())    pypath = os.path.split(os.path.realpath(__file__))[0]    # 打开路径下的so文件夹,预置so库    so_path = pypath + '\so'    # 列出so文件夹下文件    lis_so = os.listdir(so_path)    # print lis_so    # 获得so文件夹的绝对路径    so_abspath = os.path.abspath(so_path)    # 打开so文件夹    os.chdir(so_abspath)    # 输出so文件夹绝对路径    print so_abspath    print u"预置so库"    for c in lis_so:        print c        print "pushing so/%s to /system/lib/" % c        with open(c, 'r') as e:            pushso = os.popen("adb push %s /system/lib/%s" % (c, c))            print pushso.read()            os.popen("adb shell chmod 644 /system/lib/%s" % c)    print u"预置so库完毕"    # 删除旧的apk    # 回到apk所在目录    os.chdir(pypath)    # print 'tag:%s' %filepath    with open(pypath + '\list.txt', 'r') as f:        for l in f.readlines():            print "uninstalling %s" % l            uninst = os.popen("adb shell pm uninstall %s" % l)            print uninst.read()    # 遍历list,按list中包名记性删除apk    with open(pypath + '\list.txt', 'r') as f:        print u"check并删除旧的APK"        for l2 in f.readlines():            print "checking %s" % l2            try:                package = os.popen("adb shell pm path %s" % l2).read().encode().replace("\r\n", "")                packagestr = package.split(":")[1]                print packagestr                print "removing %s" % packagestr                rmapk = os.popen("adb shell rm %s" % packagestr)                print rmapk.read()            except:                print "Failure"    # 安装APK    cwdpath1 = os.listdir(os.getcwd())    for apk in cwdpath1:        if os.path.isfile(apk) and os.path.splitext(apk)[1] == '.apk':            instapk = os.popen("adb push %s /system/priv-app" % apk)            print instapk.read()            print u"%s push 完毕" % apkos.popen("adb reboot")print u"预置应用完毕,等待重启"os.popen("adb wait-for-device")print u"重启完毕,好运"os.system("pause")
1 0
原创粉丝点击