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

本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM