1. 程式人生 > >一鍵分析Android的BugReport

一鍵分析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檔案