コード例 #1
0
def memoryAnalysis(env):
    from androidanalysis.utils.osUtils import listdir
    for process in getObservedLists():
        DalvikHeapSizeList = []
        DalvikHeapAllocList = []
        DalvikHeapPssList = []
        DalvikHeapXList = []
        startMark = False
        firstTime = 0
        dir = os.path.join(env['memmoredata_core'], get_process(process))
        for filename in listdir(dir):
            if filename is None or filename == '':
                continue
            with open(os.path.join(dir, filename)) as memData:
                for line in memData:
                    if line.find('Dalvik Heap') >= 0:
                        firstTime, startMark = DalvikHeapX(
                            startMark, filename, firstTime, DalvikHeapXList)
                        DalvikHeapList = line.split()
                        DalvikHeapPssList.append(int(DalvikHeapList[PssIndex]))
                        DalvikHeapAllocList.append(
                            int(DalvikHeapList[HeapAlloc]))
                        # print DalvikHeapList[HeapFree]
                        DalvikHeapSizeList.append(int(
                            DalvikHeapList[HeapSize]))
        memoryAnalysisDraw(env, process, dir, DalvikHeapSizeList,
                           DalvikHeapAllocList, DalvikHeapPssList,
                           DalvikHeapXList)
コード例 #2
0
def doMemAnalysis(env):
    # 根据 进程名称进入 相应的进程目录下面
    from androidanalysis.utils.osUtils import listdir
    from androidanalysis.utils.SplitUtils import split
    for process in getObservedLists():
        dir = os.path.join(env['memmoredata_core'], get_process(process))
        for filename in listdir(dir):
            if filename is None or filename == '':
                continue
            with open(os.path.join(dir, filename)) as memData:
                for line in memData:
                    # 如果包含  "TOTAL" 则 提取出后面的关键字
                    # 如果 total 后面的 内容 可以 被 int 来转换 则认为是全部
                    if "total" in line.lower():
                        values = split(line, " ", "\t")
                        i = 0
                        for value in values:
                            i += 1
                            if i == 2:
                                if value.isdigit():
                                    excuteMemData(process, filename, value)
                                # print ",value:" + value
                        pass
                    pass
        pass
    pass
コード例 #3
0
def exc_memdata(env):
    global startMark
    global startTime
    startMark = False
    startTime = 0
    adress = env['memlogpath']
    from androidanalysis.utils.osUtils import listdir
    from androidanalysis.constant.Constant import VERIFY_MEM_FILE_SIZE
    if adress:
        success_get_all_mem = True
        for file in listdir(adress):
            myfile = os.path.join(adress, file)
            if os.path.getsize(myfile) < VERIFY_MEM_FILE_SIZE:
                # 表明没有获取到数据,要么能获取到,要么获取不到
                # 如果 小于 4k 表明获取不到,采用单独进程 adb shell dumpsys meminfo processName的方式进行
                success_get_all_mem = False
                writeLog(
                    env,
                    "file {0} 's size less than 1k, something error".format(
                        myfile))
                break
            excuteMemdata(myfile)
        if not success_get_all_mem:
            # 从各自的进程里面取获取内存数据
            doMemAnalysis(env)
            pass

        memDraw(env, adress)
    else:
        writeLog(env, "路径为空,请检查!")
コード例 #4
0
def flowCounter(env, userid, hour):
    if userid < 0:
        return False
    result = []
    from androidanalysis.utils.osUtils import listdir
    filelist = listdir(env['flow'])
    if len(filelist) > 1:
        for filename in filelist:
            with open(os.path.join(env['flow'], filename)) as mData:
                mDownloadFlow = 0
                mUploadFlow = 0
                for linedata in mData:
                    if linedata.find('lo') >= 0:
                        continue
                    if linedata.find(userid) >= 0:
                        linelist = linedata.split()
                        mDownloadFlow += int(linelist[downloadFlow])
                        mUploadFlow += int(linelist[uploadFlow])
                result.append(mDownloadFlow + mUploadFlow)
                writeLog(
                    env,
                    '{0}  下载流量:{1},上传流量:{2}'.format(filename, mDownloadFlow,
                                                    mUploadFlow))
        B = float(result[1] - result[0])
        M = B / 1024 / 1024
        writeLog(
            env,
            '总共使用{0:.2f}字节,即{1:.2f}兆,平均每小时使用{2:.2f}兆'.format(B, M, M / hour))
コード例 #5
0
def amalgamateFile(env, dir):
    filename = os.path.join(env['result'], 'amalgamatefile.txt')
    result = open(filename, 'w')
    from androidanalysis.utils.osUtils import listdir
    for file in listdir(dir):
        with open(os.path.join(dir, file)) as datas:
            result.writelines(datas)
        datas.close()
    result.close()
    return filename
コード例 #6
0
ファイル: adbUtils.py プロジェクト: telenewbie/test4script
def pushfiletoandroid(env, orgpath, targpaht, suffix='.pcm'):
    from androidanalysis.utils.osUtils import listdir
    for mfile in listdir(orgpath):
        if mfile.endswith(suffix) >= 0:
            runAdbCommand(env, ['push', os.path.join(orgpath, mfile),
                                os.path.join(targpaht, mfile.decode('gbk').encode('utf-8'))])