官术网_书友最值得收藏!

4.1 使用DDMS幫助調試程序

DDMS(Dalvik Debug Monitor Service)是Android SDK提供的工具,啟動DDMS可以通過Android SDK安裝目錄 \tools\ddms.bat文件(macOS和Linux為ddms指令)實現;或通過Android Studio菜單選擇Tools→Android→Android Device Monitor來實現。

啟動后的DDMS如圖4-1所示,DDMS提供很多功能,其中最常用的功能是Device(設備列表)、File Explorer(文件瀏覽器)和LogCat(日志)。

圖4-1 DDMS界面

4.1.1 設備列表

Devices是設備列表窗口,這里可以查看所有模擬器或者運行的進程。在圖4-2中,有兩個模擬器運行,最左邊一列是Android進程名,它是按照應用程序的包命名的;中間一列Online是應用程序的進程號(PID);最右邊一列是應用程序端口號。

圖4-2 設備列表窗口

4.1.2 文件瀏覽器

File Explorer是文件瀏覽器,如圖4-3所示。Android是基于Linux操作系統的移動設備操作系統,因此它會有文件系統,Android的文件系統是在開發階段需要訪問的。通過File Explorer,可以查看Android模擬器(或設備)中的文件,并可以很方便地在Android模擬器(或設備)與計算機之間導入和導出文件。如果在初始DDMS界面(圖4-1所示)中沒有File Explorer,可以通過菜單peuice→File Explorer打開。

圖4-3 文件瀏覽器

4.1.3 LogCat

在軟件開發中,日志輸出是非常重要的調試手段。Android SDK平臺提供了一個LogCat顯示輸出的日志信息,圖4-4是DDMS中的LogCat。另外,Android Studio也提供了LogCat工具,在Android Studio中啟動工程后,可以看到如圖4-5所示的界面。

圖4-4 DDMS中LogCat

圖4-5 Android Studio中LogCat

作為優秀的日志管理工具,LogCat能夠分級輸出調試信息。根據輸出信息的“輕重緩急”和“嚴重程度”, LogCat提供了6個級別的日志輸出信息:

? Verbose。啰唆模式,最低級別的信息,不加過濾地輸出所有調試信息,包括VERBOSE、DEBUG、INFO、WARN、ERROR和ASSERT。程序中使用Log.v()輸出。

? Debug。調試模式,一些調試信息通過該模式輸出,輸出信息包括DEBUG、INFO、WARN、ERROR級別。程序中使用Log.d()輸出。

? Info。信息模式,輸出信息包括INFO、WARN、ERROR級別。程序中使用Log.i()輸出。

? Warn。警告模式,輸出信息包括WARN、ERROR級別。程序中使用Log.w()輸出。

? Error。錯誤模式,輸出信息包括ERROR級別。程序中使用Log.e()輸出。

? Assert。斷言模式,當程序中斷言失敗拋出異常,輸出日志信息。

由于LogCat窗口輸出的日志信息很多,還可以選擇日志級別過濾顯示日志信息,圖4-6是通過DDMS啟動的LogCat輸出的Info信息。

圖4-6 輸出Info信息

此外,還可以自定義標簽輸出。在Hello Android中添加日志輸出的代碼如下:

        public class MainActivity extends AppCompatActivity{

            private static String TAG ="HelloAndroid";                                  ①

            @Override
            protected void onCreate(Bundle savedInstanceState){
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                int sum = 0;
                for(int i = 0; i  10; i++){
                    sum += i * i;
                    System.out.println("sum :"+ sum);                                   ②
                    Log.i(TAG, "sum ="+ sum);                                           ③
                }

            }
        }

代碼第①行自定義LogCat標簽,通過標簽可以過濾日志信息,代碼第③行指定標簽輸出Info基本日志信息,Log.i()方法的第一個參數是標簽,第二個參數是日志內容。

提示 在Java中,通常用System.out.println()方法輸出日志信息,System.out是一個Java輸出流類,它可以輸出到標準輸出設備上。LogCat也兼容了System.out輸出,它輸出重定向到LogCat輸出窗口了。代碼第②行是在程序中使用System.out. println()方法輸出日志信息,然后建立一個System.out標簽,System.out輸出級別是Info。

在日志窗口單擊按鈕彈出日志過濾對話框,如圖4-7所示,在Filter Name中輸入Hello Android Filter,在by Log Tag中輸入HelloAndroid,單擊OK按鈕,在LogCat輸出窗口增加了HelloAndroid標簽,如圖4-8所示。

圖4-7 日志過濾

圖4-8 HelloAndroid標簽日志輸出

如果不需要日志過濾,可以單擊按鈕刪除,也可以單擊修改日志過濾。

主站蜘蛛池模板: 定边县| 太白县| 遵义市| 彭水| 墨脱县| 新巴尔虎右旗| 锦州市| 郧西县| 兴义市| 泽库县| 大埔区| 通化县| 阿图什市| 伊春市| 肇州县| 包头市| 肥西县| 德惠市| 临沭县| 枣庄市| 醴陵市| 德州市| 临漳县| 营口市| 甘洛县| 吉安市| 承德市| 鹤庆县| 潍坊市| 五华县| 宣武区| 施秉县| 济宁市| 石林| 华蓥市| 呼和浩特市| 岢岚县| 永顺县| 谷城县| 静宁县| 邹平县|