1. 程式人生 > >Android Studio 單刷《第一行程式碼》系列 02 —— 日誌工具 LogCat

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,點選她。如下圖

6:Android

LogCat 出現了,如下圖

LogCat

  1. 這裡選擇 Devices,當然一般來說不需要選擇,如果只連線了一個裝置的話。
  2. 這裡選擇 Log level,日誌級別。包括:Verbose、Debug、Info、Warn、Error、Assert。以上級別依次升高。
  3. 這裡選擇過濾器,預設會自動生成一個過濾條件是 Package name 是專案包名的過濾器。

使用 LogCat

Android 中的日誌工具類是 Log(android.util.Log),提供瞭如下的幾個方法供我們列印日誌。

  1. Log.v() 對應 Verbose
  2. Log.d() 對應 Debug
  3. Log.i() 對應 Info
  4. Log.w() 對應 Warn
  5. Log.e() 對應 Error
  6. 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。等程式執行完畢,使用模擬器的戰友可能已經能看到日誌了,如下圖

log

使用真機的戰友,可能看到的還是空蕩蕩的LogCat。需要做這麼一件事,選單欄 Tools → Android → Enable ADB Integration 把這個勾上,然後再次執行。

這次應該能看到日誌了吧?看看能不能找到我們想要打印出來日誌資訊。過濾器中一定要選中 app:com.xxxx.helloworld 哦。如果有日誌,但是找不到我們想要列印的日誌 HelloWorldActivity: ______________onCreate execute______________,那麼恭喜你,你用的真機貌似跟我的一樣比較高階,是不是有什麼黑科技。

我們來嘗試解決這個問題。

  1. 手機的開發人員選項打開了麼,其中的 USB 除錯打開了麼?搞定他們並重新執行,是否能找到我們的日誌?否,轉到 2。
  2. 日誌中是否有這樣 could not disable core file generation for pid 3963: Operation not permitted 的資訊麼? 是,轉到 3;否,那我也不知道怎麼搞,或者你可以把日誌貼到評論中我看看。
  3. 是華為手機麼?是,轉到 4;否,你可以參考 4 自己 Google Baidu 一下。
  4. 在撥號介面輸入:*#*#2846579#*#* 進入測試選單介面,然後
    Project Menu → 後臺設定 → LOG設定
    LOG 開關 → LOG 開啟        LOG 級別設定 → VERBOSE
    Dump&Log → 全部選中
    重啟手機,重啟 Android Studio。
    PS:根據系統版本的不同,可能會有些許差異。

重啟完畢,開啟 Android Studio,執行專案,這下應該能找到我們的日誌了。如果還沒找到,對不起洗洗睡吧,我只能幫到這兒了。(或者你可以換個手機)

定製過濾器(Filter)

點選過濾器那個下拉框,選擇 Edit Filter Configuration,在彈出的對話方塊中點選左上角的加號新建立一個 Filter。如下圖

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 的地方,如下圖

6:Android

難道你們不好奇為什麼 Android 前面有個 6 麼?難道是因為用了 LogCat 你的 Android 開發水平就會 666666666?

不管發生什麼事件,我相信真相只有一個,如下圖:

6:Android

OK,收工了。

其它(Miscellaneous)

儘管我試圖在本文中儘量完整的進行描述,但受限於篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!

關於作者(About Me)

addict
原文連結:http://www.cnblogs.com/DebugLife/p/4343570.html