一键分析Android的BugReport

在Android系统测试中,经常要抓取log,而内置的BugReport功能无异是最方便全面的。那么问题来了,BugReport包含的信息虽多,但分析起来就成了麻烦,当然觉得麻烦的不只我一个,还有space2。这位前辈为此写了一个名为chkbugreport的开源工具,可以直接把对BugReport进行分析,好吧,我的麻烦被别人解决了。同时受同事启发,把chkbugreport工具做了个强化,实现一键分析BugReport ^_^,非常简单,就是把获取BugReport和分析BugReport一起实现,全当拿Python练练手。

前提:

  1. 已配置java环境
  2. 下载chkbugreport.jar(下载后请名字改成chkbugreport.jar)

方法:

  1. 将下面的代码保存到chkbugreport相同目录
  2. 运行
  3. # -*- coding: utf-8 -*
    import os
    from subprocess import Popen, PIPE




    def devices():
        '''
        获取设备信息,根据不同状态给出返回值
        1. 未连接设备时,返回值为 0
        2. 已连接仅一台设备时,返回值为 1
        3. 已连接多台设备时,返回值为 2
        '''
        resp = Popen(
            'adb devices', shell=True, stdout=PIPE, stderr=PIPE).stdout.readlines()
        cmd = []
        for i in resp:
            cmd.append(i.strip('\r\n'))


        if cmd[-2] == cmd[0]:
            print ('...... Devices not fond ......')
            return 0
        elif len(cmd) > 3:
            print ('...... Fond %s devices ......' %
                   (len(cmd) - 2))
            return 2
        else:
            print ('...... Device is fond ......')
            return 1




    def analysis_bugreport():
        '''
        获取Bugreport,并进行分析
        '''
        print 'getting bugreport......'
        os.system('adb shell bugreport > %s\\bugreport.log' % os.getcwd())
        print 'Got it.'
        # Bugreport
        os.system('java -jar chkbugreport.jar bugreport.log')
        print 'Analysis complete.'


    if __name__ == '__main__':
        if devices() == 1:
            analysis_bugreport()
        # raw_input('Press Enter key to continue......')

  1. 国际惯例,感谢space2,还有我的同事郑 虹向我推荐chkbugreport。

其实原博主写了这么多,提取出来就两点东西:

1、adb shell bugreport > bugreport.log 获取系统的bugreport报告

2、将上面生成的报告和下载的chkbugreport.jar放在同一目录,并运行java -jar chkbugreport.jar bugreport.log

将会自动生成相应的html文件


阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页