一鍵分析Android的BugReport
阿新 • • 發佈:2018-12-13
在Android系統測試中,經常要抓取log,而內建的BugReport功能無異是最方便全面的。那麼問題來了,BugReport包含的資訊雖多,但分析起來就成了麻煩,當然覺得麻煩的不只我一個,還有space2。這位前輩為此寫了一個名為chkbugreport的開源工具,可以直接把對BugReport進行分析,好吧,我的麻煩被別人解決了。同時受同事啟發,把chkbugreport工具做了個強化,實現一鍵分析BugReport ^_^,非常簡單,就是把獲取BugReport和分析BugReport一起實現,全當拿Python練練手。
前提:
- 已配置java環境
- 下載chkbugreport.jar
方法:
- 將下面的程式碼儲存到chkbugreport相同目錄
- 執行
- # -*- 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......')
- 國際慣例,感謝space2,還有我的同事鄭 虹向我推薦chkbugreport。
其實原博主寫了這麼多,提取出來就兩點東西:
1、adb shell bugreport > bugreport.log 獲取系統的bugreport報告
2、將上面生成的報告和下載的chkbugreport.jar放在同一目錄,並執行java -jar chkbugreport.jar bugreport.log
將會自動生成相應的html檔案