python 自动批量安装apk并抓取日志

install_auto.py

#coding=utf-8
#adb install Babe.apk
#aapt dump badging Babe.apk  | findstr "package"
import os
import time
def getCmdEexcuteResult(cmd):
    tmp = os.popen(cmd).readlines()
    return tmp

def getPackageName(installName):
    cmd='aapt dump badging "%s"  | findstr "package"'%installName

    print cmd
    str= getCmdEexcuteResult(cmd)[0].split(" ")[1]
    return str[6:-1]

def getPackageNameInfo(packageName):
    cmd='adb shell dumpsys package %s'%packageName
    print cmd
    exeResutl= getCmdEexcuteResult(cmd)[3]
    return exeResutl

def getPackageNameInfo(packageName):
    cmd='adb shell dumpsys package %s'%packageName
    print cmd
    exeResut= getCmdEexcuteResult(cmd)
    #print exeResut
    for index,val  in enumerate(exeResut):
        #print index ,val
        if val.strip("\r\n").strip()=='Action: "android.intent.action.MAIN"':
            return exeResut[index-1].strip().split(" ")[1]

def startApk(packageName):
    try:
        packagename_mainActivity = getPackageNameInfo(packageName)
    except:
        print "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        packagename_mainActivity = packageName + "/"

    print packagename_mainActivity
    cmd = "adb shell am start %s"%packagename_mainActivity
    print getCmdEexcuteResult(cmd)

def installApk(name):
    cmd='adb  install -r "%s"'%name
    os.system(cmd)

def uninstallApk(packageName):
    cmd="adb uninstall %s"%packageName
    print getCmdEexcuteResult(cmd)

def writeFile(fileName,data):
    f=open(fileName,'a+')
    f.write(data+"\r\n")
    f.close

def outputLog(cmd,fileName,index):

        writeFile(fileName,"#########%d bigin#########\r\n"%index)
        exeResult=getCmdEexcuteResult(cmd)
        writeFile(fileName,"\r\n".join(exeResult))
        writeFile(fileName,"#########%d end#########\r\n"%index)


def meminfoLog(fileName,index):
    cmd='adb shell dumpsys meminfo'
    outputLog(cmd,fileName,index)

def cpuinfoLog(fileName,index):
    cmd='adb shell dumpsys cpuinfo'
    outputLog(cmd,"fileName",index)

def rank(apkNameList,index):
    packageNameList=[]
    print "the %dth"%index
    #安装10apk
    for apkName in apkNameList:
        print "%s installing"%apkName
        print "%s install  " % apkName ,
        installApk(apkName)
        writeFile("apkInstalled.log",apkName)
    writeFile("apkInstalled.log", "************************")

    # 获取包名和主界面名
    for apkName in apkNameList:
        packageName = getPackageName(apkName)
        print packageName
        writeFile("apkInstalledPackageName.log",packageName)
        packageNameList.append(packageName)
        packageNameListALL.append(packageName)
    writeFile("apkInstalledPackageName.log", "************************")

    print "loging..."
    i = 1
    while i <= 5:
        meminfoLog("noStartApkMeminfo_%d.txt"%index, i)
        cpuinfoLog("noStartApkCPUinfo_%d.txt" % index, i)
        if i == 5:
            break
        time.sleep(60)  # 休眠60秒
        i += 1
    print "log all done"
    print "start Apk"
    # 启动应用
    for packageName in packageNameList:
        startApk(packageName)
    print "loging..."
    i = 1
    while i <= 5:
        meminfoLog("startApkMeminfo_%d.txt"%index, i)
        cpuinfoLog("startApkCPUinfo_%d.txt" % index, i)
        if i == 5:
            break
        time.sleep(60)  # 休眠60秒
        i += 1
    print "log all done"
    print "all done"

def doWork():
    apkNameList=[]
    apkNameList10N=[]


    s = os.sep
    root = os.getcwd()
    count = 0
    for i in os.listdir(root):
        if os.path.isfile(os.path.join(root, i)):
            if i[-4:] == '.apk':
                count+=1
                apkName = i
                apkNameList10N.append(apkName)
                if count==10:
                    apkNameList.append(apkNameList10N)
                    apkNameList10N=[]
                    count=0

    index=1
    for apkNameList10N in apkNameList:

        rank(apkNameList10N,index)
        index += 1




if __name__=="__main__":
    packageNameListALL = []
    doWork()
    console=raw_input("delete all apk,enter y")
    if console=='y':
        for packageName in packageNameListALL:
            uninstallApk(packageName)




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值