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

1.6 運行和測試應(yīng)用程序

如今,大量的設(shè)備使用Android系統(tǒng),它們的形狀和尺寸各異。作為開發(fā)者,我們希望能夠用最少的代碼,讓應(yīng)用程序適配盡可能多的設(shè)備和形狀因子。幸運的是,Android平臺非常適合這一挑戰(zhàn)。我們能夠輕松地調(diào)整布局,并且可以構(gòu)建模擬器,適配一切我們能想到的形狀因子。

Google提供了一個非常方便的基于云的應(yīng)用程序測試工具——Firebase測試實驗室。

顯然,在任何測試環(huán)境中,模擬器都是重要的組成部分。但這并不意味著連接測試機測試應(yīng)用程序不方便。使用自己的測試機,不僅比任何模擬器都快,而且正如我們接下來將要看到的,真機連接的配置非常簡單。

1.6.1 連接到真機

真機除了比模擬器快,還能讓我們在現(xiàn)實環(huán)境中測試應(yīng)用程序。

將真機連接到我們的開發(fā)環(huán)境需要兩個步驟。

(1)在手機上啟用開發(fā)者選項。在某些型號的手機上,需要進入Settings|About phone(設(shè)置|關(guān)于手機),點擊7次Build number(版本號),之后Developer options(開發(fā)者選項)會出現(xiàn)在設(shè)置中。使用此選項,可以啟用USB debugging(USB調(diào)試)以及Allow mock locations(允許模擬位置)。

(2)現(xiàn)在,你應(yīng)該可以通過USB或者Wi-Fi插件線將設(shè)備連接到工作站了。此時打開Android Studio,已經(jīng)可以顯示設(shè)備。如果沒有顯示設(shè)備,可能需要打開SDK Manager,通過Tools(工具)選項卡安裝Google USB driver(Google USB驅(qū)動程序)。極少數(shù)情況下,需要從設(shè)備制造商網(wǎng)站下載USB驅(qū)動程序。

真機對于快速測試應(yīng)用程序的功能變化是非常有用的,但是為了在開發(fā)過程中可以直觀看到應(yīng)用程序在不同形狀、尺寸的屏幕上的顯示效果,需要創(chuàng)建一些模擬器。

1.6.2 連接到模擬器

利用Android虛擬設(shè)備(AVD),開發(fā)者可以隨意試驗各種模擬的硬件設(shè)置,但眾所周知,它們速度很慢,會耗盡許多計算機系統(tǒng)資源,而且缺乏真機中的許多特性。雖然模擬器有這些缺點,但它仍是Android開發(fā)者工具箱中的重要部分。通過考慮以下內(nèi)容,可以減少許多阻礙。

? 拆解模擬器,使其只包含應(yīng)用程序設(shè)計所需的特性。例如,如果應(yīng)用程序中沒有拍照功能,可以從模擬器中刪除相機功能,以后隨時可以添加回來。

? 盡量降低AVD的內(nèi)存和存儲需求。當(dāng)應(yīng)用程序有需要時,創(chuàng)建另一個設(shè)備非常容易。

? 只有需要測試特定的新特性時,才使用最新的API級別創(chuàng)建AVD。

? 先在具有低分辨率和低密度屏幕的模擬器上進行測試,這將使運行速度更快,并且仍能測試不同的屏幕尺寸和長寬比。

? 嘗試拆分耗費資源的功能,并單獨測試它們。例如,如果應(yīng)用程序中使用了大量的高清圖像集合,可以通過單獨測試此功能來節(jié)省時間。

構(gòu)建適合特定用途的模擬器通常比構(gòu)建用于測試所有功能的通用模擬器要快,而且現(xiàn)在有越來越多的第三方Android模擬器可用,例如Android-x86和Genymotion,它們通常更快,并且具有更多的開發(fā)特性。

值得注意的是,當(dāng)只測試布局時,Android Studio提供了一些強大的預(yù)覽選項,可以讓我們預(yù)覽許多形狀因子、SDK級別以及主題上的潛在UI效果,如圖1-6所示。

圖1-6

現(xiàn)在,創(chuàng)建一個基本的AVD來運行和測試當(dāng)前項目。目前沒有什么真正需要測試的東西,但是通過此操作,我們將看到如何在運行時監(jiān)控應(yīng)用程序的行為,以及如何在不使用設(shè)備屏幕的情況下使用調(diào)試監(jiān)控器服務(wù)來測試輸出(對于調(diào)試項目來說,這種方式不太吸引人)。

1.6.3 監(jiān)控設(shè)備

下面的演示對模擬器和真機都有效,因此可以任選最適合你的設(shè)備。如果要創(chuàng)建AVD,無須大尺寸、高密度的屏幕以及大內(nèi)存。

(1)打開我們剛做的項目。

(2)從Tools|Android(工具|Android)菜單中,選擇Enable ADB Integration(啟用ADB集成),如圖1-7所示。

圖1-7

(3)在同一個菜單中,選擇Android Device MonitorAndroid Device Monitor已在Android Studio 3.1中棄用,并已從Android Studio 3.2中移除。——譯者注,盡管它可能已經(jīng)在運行了。

(4)現(xiàn)在,使用Android Device Monitor在連接的設(shè)備上運行應(yīng)用程序。

Android Device Monitor在以下幾個方面很有用。

? 可以在運行時使用Monitors(監(jiān)視器)選項卡查看實時系統(tǒng)信息,例如應(yīng)用程序占用的內(nèi)存或CPU時間。當(dāng)我們想要查看應(yīng)用程序未在前臺運行時所使用的資源,監(jiān)視器尤其有用。

? 可以設(shè)置監(jiān)視器來收集各種數(shù)據(jù),例如方法跟蹤和資源使用,這些數(shù)據(jù)會被存儲為文件,可以在Captures(捕獲)面板(通常可以在左側(cè)邊欄打開)中查看。

? 在Captures面板中,對應(yīng)用程序進行截屏和錄屏非常簡單。

? LogCat是一個特別有用的工具,因為它不僅可以實時報告應(yīng)用程序的行為,而且正如我們接下來將要看到的,它還可以生成用戶定義的輸出。

目前,使用文本視圖(TextView)來測試工廠模式是一種便捷但笨拙的代碼測試方法。一旦我們開始開發(fā)復(fù)雜的布局,這種方式就會變得非常不便。一個更優(yōu)雅的解決方案是使用調(diào)試工具,這些工具可以在不影響UI的情況下進行查看。本練習(xí)剩余的部分將演示該如何做。

(1)打開MainActivity.java文件。

(2)聲明如下常量。

    private static final String DEBUG_TAG = "tag";

(3)同樣,需要確認(rèn)android.util.Log;的導(dǎo)入。

(4)用如下所示代碼,替換onCreate()方法中用來設(shè)置文本視圖文本的代碼。

    Log.d(DEBUG_TAG, bread);

(5)再次打開設(shè)備監(jiān)視器,這可以用快捷鍵Alt+6操作。

(6)從監(jiān)視器右上角的下拉列表中,選擇Edit Filter Configuration(編輯過濾器配置)。

(7)填寫觸發(fā)的對話框,如圖1-8所示。

圖1-8

運行應(yīng)用程序,測試工廠示例。在logcat監(jiān)視器中應(yīng)該會產(chǎn)生如下輸出。

    05-24 13:25:52.48417896-17896/? D/tag: Brioche
    05-24 13:36:31.21417896-17896/? D/tag: Baguette
    05-24 13:42:45.18017896-17896/? D/tag: Roll

當(dāng)然,如果你愿意,依然可以使用System.out.println()方法將信息在ADB監(jiān)視器中打印出來,但需要在所有輸出中搜索它。

我們已經(jīng)了解了如何在真機和模擬器上測試應(yīng)用程序,以及如何在運行時使用調(diào)試和監(jiān)視工具查詢應(yīng)用程序。下面可以切換到更貼近現(xiàn)實的情況——涉及多個工廠以及比雙字字符串更復(fù)雜的輸出。

主站蜘蛛池模板: 图片| 蓬溪县| 轮台县| 察隅县| 克山县| 天全县| 文水县| 万安县| 武城县| 喀喇| 淮安市| 泊头市| 阿尔山市| 福州市| 巴彦县| 松阳县| 闽侯县| 资溪县| 七台河市| 磐石市| 德清县| 来凤县| 繁昌县| 攀枝花市| 平塘县| 横峰县| 鄯善县| 剑阁县| 蛟河市| 平定县| 连南| 精河县| 迁安市| 霍城县| 上犹县| 运城市| 奈曼旗| 乐山市| 云林县| 什邡市| 静乐县|