標籤:
第2節 Android Device Monitor
Android Studio的Android Device Monitor(簡稱ADM)是我們動態調試安卓程式時重要的幫手。它提供了很多動態調試的工具和調試方法。上一章介紹的log調試,就需要通過ADM的logcat顯示調試內容;它還可以查看系統記憶體的佔用情況,可以看到系統CPU的運行情況。
ADM可以在兩個地方工作:
在Android Studio整合視窗:在Android Studio下方的視窗中,點擊Android Monitor,就能在Android Studio中顯示;
在第一個框中,選中我們要調試的裝置,第二個框中選中我們要調試的應用,
ADM單獨運行:通過Android Studio的功能表列啟動;
獨立運行後,就像這樣,
2.1 Logcat功能
Logcat用來查看程式輸出的log。我們可以選擇log的類型(verbose debug info warning error)來過濾log。
當選擇verbose時,logcat會輸出所有類型的log;
當選擇debug時,logcat會輸出debug info warning error等類型的log;
當選擇info時,logcat會輸出info warning error等類型的log;
當選擇warning時,logcat會輸出warning error等類型的log;
當選擇error時,logcat會輸出error等類型的log;
有時候log太多,會影響我們的判斷,可以自訂過濾器。
選擇編輯過濾器,
指定過濾器的名字,輸入log中包含關鍵字的內容,
以後logcat擷取的log,就只有匹配過濾器中關鍵字的log了。
還有一個非常有用的功能是重啟ADB。ADB有時候會因為種種原因而無法與裝置相連,這時候通過的按鈕重啟ADB就能解決問題。
2.2 Android Studio中的ADM
在Android Studio整合介面,ADM還提供了方便的裝置截屏、裝置錄影帶功能。
裝置截屏能將裝置上正在顯示的內容以截取圖片或視頻的形式儲存到電腦上。
memory能夠即時監測當前被調試的應用記憶體使用量大小,
- `CPU`能夠即時監測當前被調試的應用CPU佔用大小,
- `Network`能夠即時監測當前被調試的應用網路使用方式,
## 2.3 獨立啟動並執行ADM除了logcat,獨立啟動並執行ADM提供了更多的調試工具。點擊功能表列的`添加視圖`表徵圖,可以為ADM添加上`DDMS`、`Hierarchy View`、`Debug`、`Pixel Perfect`等進階的調試視窗。`DDMS`是Google提供的一個非常全面的調試工具,它能和安卓虛擬機器通訊,擷取最原始的調試資料。1. 選擇要調試的裝置和應用;2. 點擊`DDMS`的功能表列,啟動不同的進階調試功能; `DDMS`有很多進階的調試功能:* `Debug`功能:串連到`debug`版本的應用,可以使用打斷點、逐步跟蹤的靜態調試方式;* `heap`功能:監測當前記憶體的使用,手動發起記憶體回收,儲存記憶體配置的所有狀態到電腦上,用其他進階工具做進一步分析,尋找記憶體流失;
* `thread`功能:查看應用所有的線程,擷取線程當前的運行資訊;
* `UI元素分析`功能:分析顯示介面指定視窗的UI元素布局資訊,協助開發人員進行介面布局的調試; * `OpenGL trace`功能:記錄應用中OpenGL調用的資訊; 以上這些功能都是進階的調試功能,每一個都可以開設單獨的專題進行深入的講解。因為本文針對的同學是剛開始接觸調試的新手,所以這裡就不詳細的介紹用法了。我們將在調試的進階篇章中逐個詳細介紹。# 第3節 ADB工具ADB-Android Debug Bridge,是安卓系統調試的核心。它將裝置與調試用的電腦在軟體層次上串連在了一起。第二章介紹的ADM中很多擷取裝置上資訊的功能,其實就是通過ADB得到的。ADB工具位於`SDK目錄\platform-tools\adb`。如果在安裝的時候你採用預設目錄安裝,那麼它應該是`c:\Users\使用者名稱\AppData\Local\Android\sdk\platform-tools\adb`## 3.1 為ADB添加環境變數為了方便的使用ADB工具,我們最好為它添加一個`環境變數`。這樣,我們只要開啟`cmd命令列終端`,就能馬上使用它了。1. `我的電腦`點擊右鍵->`屬性`->`進階系統設定`->`環境變數`,選中`Path`這一項,進行編輯; 2. 在編輯欄最後輸入ADB所在的路徑`c:\Users\使用者名稱\AppData\Local\Android\sdk\platform-tools\`;如果該項之前還有別的路徑,請用`;`分隔開; 3. 重啟電腦->串連上手機->啟動`cmd命令列終端`,輸入`adb version`,如果得到類似下面的結果,說明ADB已經設定好了;
$adb versionAndroid Debug Bridge version 1.0.32Revision eac51f2bb6a8-android
cmd命令列終端的啟動方法:
- 通過
Win+R啟動Windows作業系統的運行面板;
- 在面板中輸入
cmd,啟動命令列視窗;
3.2 ADB常用命令
ADB提供了很多使用的命令,這裡列出最為常用的幾個命令的用法。
3.2.1 adb devices
列出當前串連到電腦上的所有安卓裝置
$ adb devicesList of devices attached192.168.56.101:5555 device356BCJMDUV48 device
3.2.2 adb logcat
輸出安卓裝置上的log資訊。功能和Android Device Manager中的logcat完全一樣。後者實際上就是利用了ADB工具。
清除裝置上已有的log,
$ adb logcat -c
開始輸出log,
$ adb logcat -v time
logcat的-v的輸出選項,可以控制輸出資料的顯示格式。它提供brief process tag raw time threadtime long等參數。大多數情況下,我們使用-v time這個參數項就好了。
擷取協助,
$ adb logcat -h
其實adb logcat並沒有h命令選項,不過當logcat沒有找到正確的命令時,就會輸出logcat的協助資訊,供使用者參考。
3.2.3 adb start-server
啟動ADB工具,
$ adb start-server
3.2.4 adb kill-server
停止ADB工具,
$ adb start-server
3.2.5 adb shell
從電腦登入到安卓裝置上,
$ adb shellroot@vbox86p:/ #
登入到裝置上後,就可以直接操作裝置了。
3.2.6 adb shell dumpsys
輸出裝置上所有系統模組的狀態資訊,這個輸出會非常的長,
$ adb shell dumpsys
為了讓我們關注我們需要的模組,可以進一步設定要dump的模組名稱,例如:
$ ./adb shell dumpsys window
甚至更進一步:
$ ./adb shell dumpsys window windows
這些模組的名稱和更進一步的關鍵字(window windows等等),可以從adb shell dumpsys返回的結果中找到,它們的表現形式大概如下:
......WINDOW MANAGER LAST ANR (dumpsys window lastanr)......WINDOW MANAGER POLICY STATE (dumpsys window policy)......
括弧中的就是可以使用的dump形式。
3.2.7 adb install
安裝應用,
$ adb install -r /Users/User/Desktop/app.apk 5474 KB/s (1182939 bytes in 0.211s) pkg: /data/local/tmp/app.apkSuccess
-r選項表示強制安裝-如果這個應用以前安裝過,就把它卸載了重新安裝,可以不使用;後面跟的是安裝檔案在電腦上的位置。
3.2.8 adb uninstall
卸載應用,
$ adb uninstall com.anddle.calculatorSuccess
uninstall後面跟的是要卸載的程式的包名字。
3.2.9 adb help
ADB工具還有很多別的功能,可以通過這個命令查詢它們的深入的詳細的用法。
$ adb help
第4節 Wifi代替資料線調試
我們通常都是使用USB線串連裝置和電腦進行的程式調試。
有的程式本身就要使用USB口,例如一個檔案瀏覽器,它可以列出通過USB介面接入的隨身碟。
在調試這樣的應用的時候,USB介面被佔用了,但裝置也只有一個USB介面,就可以考慮使用WiFi來進行ADB調試了。
通過WiFi代替資料線進行程式調試,利用了ADB工具的adb tcpip和adb connect命令。
使用USB資料線串連裝置和電腦,輸入如下命令
adb tcpip 5555 //5555表示指定的連接埠號碼碼,可以修改成別的不知名連接埠
斷開USB線,將電腦的ADB通過IP地址串連到裝置上
adb connect 192.168.1.101 //192.168.1.101為android裝置在Wifi網路上的IP地址
這樣通過命令列就完成了Wifi調試的設定。
不過這裡還有一個更簡單的方案,使用Android Studio的第三方外掛程式ADB WIFI,
Preferences->Plugins->Browse repositories...;
- 在搜尋欄中輸入
ADB WIFI;
- 選擇安裝
plugin;
- 重啟Android Studio就可以了;
以後在要使用Wifi調試的時候,
- 使用USB資料線串連裝置和電腦;
Tools->Android->ADB WIFI->ADB USB to WIFI;
- 拔出USB連接線;
此時,就可以像之前使用USB資料線調試那樣,通過Wifi對程式進行調試了。
結束
現在,大家對安卓應用調試需要使用的技術有了一個整體的認識,目前這些知識已經能夠解決大部分應用需要的調試問題了。
在後面,我們會對調試的進階用法做詳細的講述,例如DDMS各種功能的詳細用法。
AndroidStudio應用調試技巧(下)