Android Studio 單刷《第一行程式碼》系列 02 —— 日誌工具 LogCat
前情提要(Previously)
本系列將使用 Android Studio 將《第一行程式碼》(書中講解案例使用Eclipse)刷一遍,旨在為想入坑 Android 開發,並選擇 Android Studio 作為開發 IDE 的同學開路。
PS:其實我就是現學現賣,希望我能堅持刷完。
在第一戰中,我們建立了第一個App project, Hello World,並分析了專案結構,及執行原理。
連結在此:Android Studio 單刷《第一行程式碼》系列 01 —— 第一戰 HelloWorld
摘要(Abstract)
必備技能,使用日誌工具 LogCat,並嘗試解決真機除錯沒有日誌的問題。
日誌工具(LogCat)
日誌在任何專案的開發過程中都會起到非常重要的作用,在 Android 專案中如果你想要檢視日誌則必須要使用 LogCat 工具。
在 Android Studio 最下方的 Status Bar 中找到 6:Android,點選她。如下圖
LogCat 出現了,如下圖
- 這裡選擇 Devices,當然一般來說不需要選擇,如果只連線了一個裝置的話。
- 這裡選擇 Log level,日誌級別。包括:Verbose、Debug、Info、Warn、Error、Assert。以上級別依次升高。
- 這裡選擇過濾器,預設會自動生成一個過濾條件是 Package name 是專案包名的過濾器。
使用 LogCat
Android 中的日誌工具類是 Log(android.util.Log),提供瞭如下的幾個方法供我們列印日誌。
- Log.v() 對應 Verbose
- Log.d() 對應 Debug
- Log.i() 對應 Info
- Log.w() 對應 Warn
- Log.e() 對應 Error
- Log.wtf() 在輸出日誌的同時,會把此處程式碼此時的執行路徑(呼叫棧)打印出來。
介紹完畢,我們來演戲一下吧。開啟 HelloWorldActivity,在 onCreat()方法中新增一行列印日誌的語句,為了讓日誌明顯一點我加了一些下劃線,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_world);
Log.d("HelloWorldActivity","______________onCreate execute______________");
}
Log.d() 方法中傳入了兩個引數,第一個引數是 tag,一般傳入當前的類名就好,主要用於對列印資訊進行過濾。第二個引數是 msg,即想要列印的具體內容。
現在重新執行一下專案,點選工具欄中的綠色小箭頭,或者按 Shift+F10。等程式執行完畢,使用模擬器的戰友可能已經能看到日誌了,如下圖
使用真機的戰友,可能看到的還是空蕩蕩的LogCat。需要做這麼一件事,選單欄 Tools → Android → Enable ADB Integration 把這個勾上,然後再次執行。
這次應該能看到日誌了吧?看看能不能找到我們想要打印出來日誌資訊。過濾器中一定要選中 app:com.xxxx.helloworld 哦。如果有日誌,但是找不到我們想要列印的日誌 HelloWorldActivity: ______________onCreate execute______________
,那麼恭喜你,你用的真機貌似跟我的一樣比較高階,是不是有什麼黑科技。
我們來嘗試解決這個問題。
- 手機的開發人員選項打開了麼,其中的 USB 除錯打開了麼?搞定他們並重新執行,是否能找到我們的日誌?否,轉到 2。
- 日誌中是否有這樣
could not disable core file generation for pid 3963: Operation not permitted
的資訊麼? 是,轉到 3;否,那我也不知道怎麼搞,或者你可以把日誌貼到評論中我看看。 - 是華為手機麼?是,轉到 4;否,你可以參考 4 自己 Google Baidu 一下。
- 在撥號介面輸入:
*#*#2846579#*#*
進入測試選單介面,然後
Project Menu → 後臺設定 → LOG設定
LOG 開關 → LOG 開啟 LOG 級別設定 → VERBOSE
Dump&Log → 全部選中
重啟手機,重啟 Android Studio。
PS:根據系統版本的不同,可能會有些許差異。
重啟完畢,開啟 Android Studio,執行專案,這下應該能找到我們的日誌了。如果還沒找到,對不起洗洗睡吧,我只能幫到這兒了。(或者你可以換個手機)
定製過濾器(Filter)
點選過濾器那個下拉框,選擇 Edit Filter Configuration,在彈出的對話方塊中點選左上角的加號新建立一個 Filter。如下圖
含義如下:
- Name:Filter 名稱
- by Log Tag: 通過日誌的 tag 過濾
- by Log Message:通過日誌的 msg 內容過濾
- by Package Name:通過包名過濾
- by PID:通過PID過濾
- by Log Level:通過日誌等級過濾
- regex:表示可以使用正則表示式進行匹配
以上過濾條件可以組合。
我建了一個data的過濾器,過濾條件是 tag 等於 data。將 Filter 選擇為 data,我們的日誌不見了,因為匹配不到 tag 等於 data 的日誌。
現在去把我們在 onCreate() 方法中的日誌的 tag 改為 data。如下所示:
Log.d("data","______________onCreate execute______________");
然後重新執行,將 Filter 選擇為 data,我們的日誌出現了。當然還可能會有一些奇奇怪怪的日誌也出現了,仔細看看 tag 中都包含有 data。
抑制不住的好奇心
看看這個 Android Studio 最下方的 Status Bar,我們找到 LogCat 的地方,如下圖
難道你們不好奇為什麼 Android 前面有個 6 麼?難道是因為用了 LogCat 你的 Android 開發水平就會 666666666?
不管發生什麼事件,我相信真相只有一個,如下圖:
OK,收工了。
其它(Miscellaneous)
儘管我試圖在本文中儘量完整的進行描述,但受限於篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!