前情提要(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)
盡管我試圖在本文中盡量完整的進行描述,但受限於篇幅和我的個人水平,本文難免有所遺漏,歡迎在評論中指出。
如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!
關於作者(About Me)
addict
原文鏈接:http://www.cnblogs.com/DebugLife/p/4343570.html
本文謝絕轉載,如需轉載需征得作者本人同意,謝謝。