-- 做者 謝恩銘 轉載請註明出處javascript
從事 Android(嵌入式)開發,也許常要和 BugReport 打交道。html
BugReport 是由 Bug 和 Report 這兩個英語單詞組成。bug 是英語「瑕疵,錯誤」的意思,在計算機領域專指程序中的問題。report 是英語「報告」的意思。java
顧名思義,BugReport 就是「錯誤報告」的意思。不過,真實的 BugReport 不單單記錄錯誤,不一樣級別的日誌也會記錄下來,方便咱們 debug。android
通常來講 Android 的 BugReport 是 .txt 結尾的文本文件,好比咱們公司的 Android app 裏的 BugReport 就是命名爲 bugreport.txt。固然了,命名沒有限定。git
Google 的 Android 主頁上有專頁論述如何閱讀 BugReport :source.android.com/source/read…程序員
上面的頁面推薦好好閱讀下,對你排查 Android 的問題頗有幫助。github
Android 的 BugReport 裏面包含了 dumpsys,dumpstate,logcat 命令輸出的結果。內容通常來講會不少。shell
要生成一個 BugReport,咱們能夠運行如下命令:vim
adb bugreport > bugreport.txt複製代碼
通常的 BugReport 是這樣的:瀏覽器
這樣的:
是否是以爲很難閱讀呢?有點望而卻步的感受。
幸虧,咱們有一個免費開源的小軟件來拯救你。
這個軟件是索尼(Sony)公司開發的,開源在 Github 上:github.com/sonyxperiad…
這個軟件名叫 ChkBugReport。Chk 是 check 的縮寫,表示「檢查」。
ChkBugReport 並無什麼安裝程序或腳本,只有一個 JAR 包供下載。
軟件下載連接:github.com/sonyxperiad…
咱們下載最新版,下載下來是這樣一個文件:
要用它來解析 BugReport 文件並生成網頁版報告,須要用 java 命令(請先安裝和配置 Java 開發環境,網上有不少圖文教程,就不贅述了):
java -jar $HOME/chkbugreport.jar $HOME/bugreport.txt複製代碼
$HOME 是一個環境變量,指示了你的家目錄的路徑。
ChkBugReport 會爲你生成一個文件夾,叫作 bugreport_out,文件夾裏有個 index.html 文件,這就是咱們的錯誤報告的網頁了,是一個 HTML 文件。
你能夠雙擊啓動它 (若是你設置了 .html 文件用瀏覽器程序啓動的話), 或者用命令行,好比我用 firefox 瀏覽器來啓動這個 HTML 文件:
firefox bugreport_out/index.html複製代碼
打開後的網頁以下所示,有不少欄目:
能夠查看每個欄目,好比查看 System log 中的 log :
難道每次咱們啓動 ChkBugReport 都要附上那個 JAR 包的路徑嗎?豈不是太麻煩。
不要緊,咱們能夠寫一個 Shell 腳原本做爲快捷啓動方式。
首先咱們把 chkbugreport-0.4-185.jar 更名爲 chkbugreport.jar,並把它放到 $HOME/bin 目錄中:
mv $HOME/chkbugreport-0.4-185.jar $HOME/bin/chkbugreport.jar複製代碼
而後建立一個 Shell 腳本,起名叫 chkbugreport 好了,也放在 $HOME/bin 目錄中 :
vim $HOME/bin/chkbugreport複製代碼
在腳本中加入如下代碼:
#!/bin/sh
DIR=$HOME/bin
JAR=$DIR/chkbugreport.jar
CP=$JAR
if [ ! -f $JAR]; then
echo "爲了這個腳本可以運行,請把下載的 ChkBugReport 的 JAR 包拷貝到 $JAR 中"
exit 1
fi
java -jar $CP "$@"複製代碼
爲腳本添加可執行權限:
chmod +x $HOME/bin/chkbugreport複製代碼
確保 $HOME/bin 這個目錄在 Path 環境變量中,請參看 Linux探索之旅 | 第五部分第二課:一入Shell深似海,酷炫外殼惹人愛 。
以後,你就能夠在隨便哪一個目錄中運行
chkbugreport bugreport.txt複製代碼
來生成錯誤報告的網頁版了。
Android 因其開源特性,相比 iOS 能夠應用在更多領域,好比 嵌入式。
網上有很多 Android 開發有用的開源工具,Github 上更是一搜一大堆。善於使用工具,必將事半功倍。
ChkBugReport 能夠基於 Android 的 BugReport 爲咱們輸出易讀的網頁版錯誤報告,是 HTML 格式的,能夠用瀏覽器打開。
微信公衆號「程序員聯盟」ProgrammerLeague
我是謝恩銘,在巴黎奮鬥的軟件工程師。
個人簡介
個人經歷熱愛生活,喜歡游泳,略懂烹飪。人生格言:「向着標杆直跑」