-- 作者 謝恩銘 轉載請注明出處
內容簡介
- 前言
- 難讀的 BugReport
- ChkBugReport來拯救你
- 寫一個 Shell 快捷方式
- 總結
1. 前言
從事 Android(嵌入式)開發,也許常要和 BugReport 打交道。
BugReport 是由 Bug 和 Report 這兩個英語單詞組成。bug 是英語「瑕疵,錯誤」的意思,在計算機領域專指程序中的問題。report 是英語「報告」的意思。
顧名思義,BugReport 就是「錯誤報告」的意思。不過,真實的 BugReport 不僅僅記錄錯誤,不同級別的日志也會記錄下來,方便我們 debug。
一般來說 Android 的 BugReport 是 .txt 結尾的文本文件,比如我們公司的 Android app 里的 BugReport 就是命名為 bugreport.txt。當然了,命名沒有限定。
Google 的 Android 主頁上有專頁論述如何閱讀 BugReport :https://source.android.com/source/read-bug-reports
上面的頁面推薦好好閱讀下,對你排查 Android 的問題很有幫助。
2. 難讀的 BugReport
Android 的 BugReport 里面包含了 dumpsys,dumpstate,logcat 命令輸出的結果。內容一般來說會很多。
要生成一個 BugReport,我們可以運行以下命令:
adb bugreport > bugreport.txt
一般的 BugReport 是這樣的:
這樣的:
是不是覺得很難閱讀呢?有點望而卻步的感覺。
3. ChkBugReport來拯救你
幸好,我們有一個免費開源的小軟件來拯救你。
這個軟件是索尼(Sony)公司開發的,開源在 Github 上:https://github.com/sonyxperiadev/ChkBugReport
這個軟件名叫 ChkBugReport。Chk 是 check 的縮寫,表示「檢查」。
ChkBugReport 并沒有什么安裝程序或腳本,只有一個 JAR 包供下載。
軟件下載鏈接:https://github.com/sonyxperiadev/ChkBugReport/downloads
我們下載最新版,下載下來是這樣一個文件:
要用它來解析 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 :
4. 寫一個 Shell 快捷方式
難道每次我們啟動 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
來生成錯誤報告的網頁版了。
5. 總結
Android 因其開源特性,相比 iOS 可以應用在更多領域,比如 嵌入式。
網上有不少 Android 開發有用的開源工具,Github 上更是一搜一大堆。善于使用工具,必將事半功倍。
ChkBugReport 可以基于 Android 的 BugReport 為我們輸出易讀的網頁版錯誤報告,是 HTML 格式的,可以用瀏覽器打開。
我是謝恩銘,在巴黎奮斗的軟件工程師。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標桿直跑」
本文已在版權印備案,如需轉載請訪問版權印28280318