第十二章 運行與調(diào)試

2021-10-21 13:51 更新

第十二章 運行與調(diào)試

在上一篇文章中,我們了解了如何將硬件與虛擬設備同Eclipse進行對接。而在今天的指南里,我們將探索如何通過Eclipse在物理設備及Android虛擬設備(簡稱AVD)上進行應用程序運行與調(diào)試。

首先需要強調(diào)一點:我們在之前文章中創(chuàng)建出的應用程序暫時還沒什么實際用處,但我們可以通過它來體驗應用的運行流程,并以此為基礎介紹一些非常重要的Eclipse ADT實用程序。隨著大家開發(fā)水平的提高,未來的新應用必然會變得更先進也更復雜,到那時我們現(xiàn)在所介紹的調(diào)試工作將扮演極為重要的角色。在完成了今天的指南后,大家可能希望花點時間對自己創(chuàng)建的應用作出調(diào)整,而后嘗試將其運行在物理或者虛擬設備上。掌握了這種方法,大家就可以在開發(fā)過程中定期將應用程序半成品運行在設備之上,從而實現(xiàn)邊開發(fā)邊調(diào)試的理想效果。

1. 運行

第一步

當我們在虛擬或者物理設備上編譯并運行自己的Android應用時,Eclipse會處理大部分必要的細節(jié)工作。Eclipse以及ADT會為我們的應用創(chuàng)建一個APK文件,同時將其安裝在我們所使用的設備上。APK文件也就是用戶們從Google Play商店中所下載的應用文件格式。不過大家還需要進行額外一些步驟來進行應用程序的發(fā)布,這些內(nèi)容我們將在之后的教程中一一說明??傊珽clipse會首先建立一個用于調(diào)試的APK文件,我們可以通過這套IDE將其直接運行在設備上。

相信大家已經(jīng)通過上一篇指南文章了解了如何利用相關技術(shù)啟動自己的AVD或者將硬件設備與計算機相連。我們將讓應用程序運行在接入的設備之上。無論是虛擬還是物理設備,都必須滿足我們在應用程序清單當中所指定的最低API級別,否則將無法正常運行應用對象。

第二步

現(xiàn)在我們可以首先為自己的應用程序創(chuàng)建一套運行配置方案。在Eclipse當中,選擇“運行”而后選擇“運行配置”。在運行配置窗口左側(cè),大家將看到可以運行的應用程序類型清單。在其中選擇“Android應用程序”然后點擊上方的新建按鈕。

12.1android_app_run_config

在打開的新配置項目當中,在名稱欄內(nèi)輸入一個名稱以替代現(xiàn)有文本。請大家選擇一個清晰的名稱,讓自己能夠明確區(qū)分不同應用程序?,F(xiàn)在點擊“瀏覽”按鈕,在其中選擇自己的應用程序項目,而后點擊“OK”。

12.2select_app

點擊“目標”選項卡。大家可以讓Eclipse自動選擇要啟動應用程序的設備,也可以將其設置為每次運行應用程序時都提醒用戶手動選擇。這套選項只適用于同時有多種設備接入Eclipse的情況,例如一臺硬件設備與一套AVD。

12.3target_tab

請注意,我們的應用程序現(xiàn)在已經(jīng)被列舉在運行配置清單的Android應用程序當中。當一切準備就緒之后,大家可以從這里進行應用程序啟動——相信在未來的實際工作中,各位的工作區(qū)內(nèi)還將包含更多應用。

點擊“運行”。如果大家在配置中設定了每次運行前提示用戶選擇一種設備,那么Eclipse這時就將提供對應選項。選擇當前要使用的物理或者虛擬設備。如果我們沒有接入設備或者運行AVD,但又在設定中要求Eclipse自動選擇設備,則系統(tǒng)會啟動一套適用于當前情況的AVD。大家也可以通過Eclipse工具欄中的“運行”按鈕來啟動上一次應用程序所使用的運行環(huán)境,這就省去了每一次打開運行配置窗口的麻煩。

提示:在應用程序運行配置的“目標”選項卡中,如果大家向下滾動則會看到多種模擬器選項,其中還包含命令行區(qū)域。大家可以點擊此處查看使用AVD過程中可能需要的各種命令行參數(shù)。

第三步

當我們運行自己的應用程序時,Eclipse會將APK復制到目標設備當中、進行安裝并啟動主Activity。

12.4app_launched

大家應該還記得我們當初在按鈕上建立的這套基本用戶交互機制;點擊按鈕來改變顯示文本內(nèi)容(在AVD當中使用鼠標模擬點擊操作,在實機上則使用手指進行觸控)。

12.5avd_button_click

第四步

在大家開發(fā)自己的應用程序時,很可能需要重復將當前成果加以進行、編輯內(nèi)容然后再次運行。在這種情況下,Log將成為我們使用頻率最高的主要工具之一。在Java文件當中,我們可以編寫輸出至LogCat的相關信息來幫助自己更順暢地完成開發(fā)與調(diào)試工作。在我們的主Activity類中,將以下實例變量添加到原有類內(nèi)容之前:

private final String LOG_TAG = "MainActivity";

這是一條標記常量,我們通常利用它來編寫日志輸出信息;通過類名稱,我們可以更明確地看到當前日志信息來自哪個類。在onClick方法中,將以下代碼添加到按鈕文本設定部分之前:

Log.v(LOG_TAG, "button clicked");

大家需要將“android.util.Log”導入到自己的類當中。在向Log中寫入內(nèi)容時,我們可以從多種方法中作出選擇,從而表達與目的相符的對應信息。在上述代碼中,我們用v來指代詳細(verbose)。大家還可以用d來指代調(diào)試信息(debug message)、i指代信息(information)、w指代警告(warning)并用e指代錯誤(error)。

現(xiàn)在保存我們的文件并通過“運行”按鈕再次運行應用程序。請大家確保自己已經(jīng)在Eclipse當中打開了LogCat View。再次點擊設備或者AVD上的UI按鈕。現(xiàn)在向下滾動LogCat View直至我們找到對應的運行信息。

12.6messages_in_log

正如大家所見,以上彩色信息反映每種情況下Log方法的實際運行情況。我們可以通過在文本框中輸入內(nèi)容的形式搜索信息,這一點在顯示信息量較大的時候非常有用——例如使用硬件設備運行應用程序時。

12.7search_log

提示:如果大家發(fā)現(xiàn)自己在使用LogCat View時Eclipse停止響應或者崩潰,則需要在“窗口”——>“偏好設置”——>“Android”——>“LogCat”中設置LogCat信息的最大緩沖數(shù)量。如果這樣的調(diào)整仍然無法解決問題,請進一步降低緩沖數(shù)量并再試一次。

2. 測試

我們在今天的文章當中不會討論太多測試方面的細節(jié),因為這是一項非常重要也相當重復的工作、將成為大家未來Android學習過程當中的主要課題之一。在準備好進行測試之后,大家可以在Eclipse當中創(chuàng)建一個測試專用項目。Android開發(fā)者指南當中專門提供了“測試基本原理”與“Activity測試指南”兩個章節(jié),從深層次講解了Android平臺上的測試知識。測試工具全部以JUnit為基礎,作為匯聚專有Android測試資源并加以擴展的解決方案,JUnit專為Android開發(fā)工作而生。如果大家已經(jīng)熟悉了對Java代碼的測試工作,那么應該會更清楚自己需要在Android應用測試當中做些什么。

3. 調(diào)試

第一步

盡管大家并不需要馬上對應用程序進行調(diào)試,不過我還是要通過今天的文章為大家初步介紹DDMS(即Dalvik調(diào)試監(jiān)控服務器)以及這些工具能為開發(fā)流程帶來的實際價值。我們已經(jīng)了解了Eclipse當中的一種調(diào)試View,也就是LogCat;不過另外幾種同樣值得大家認真掌握。

在運行在或者連接著Eclipse的虛擬設備或者硬件設備上,我們可以通過選擇“窗口”、“打開視圖”、“DDMS”的方式開啟DDMS視圖。在這里,大家能夠利用Eclipse右上方的按鈕在DDMS視圖與Java視圖之間進行切換。

第二步

讓我們就DDMS視圖展開探討。上一次我們已經(jīng)了解過設備視圖(其中會顯示一份清單,羅列所有已經(jīng)連接的設備外加運行其中的進程鏈接)。選擇一項進程后即可訪問設備視圖中的各項功能。下面通過名稱從列表中找出我們自己的按鈕。

12.8devices_app_process

在選中對應進程之后,點擊設備視圖中的“Update Threads”按鈕以開啟Threads View。

12.9thread_updates

“Update Heap”按鈕對于Heap View也將起到同樣的作用。在未來的開發(fā)工作當中,大家還會根據(jù)需要了解其它視圖的作用,其中一些只與執(zhí)行特定任務類型的應用程序相關。不過現(xiàn)在我們不考慮太多,只把時間用在DDMS當中值得關注的內(nèi)容身上。

模擬器視圖提供針對任何運行中虛擬設備實例的控制選項,大家可以在設備列表中選擇一套AVD并打開其模擬器控制選項卡來查看相關內(nèi)容。另外,需要注意的是我們可以在設備視圖當中停止當前運行著的進程、調(diào)試運行中進程并強制執(zhí)行垃圾回收。在我們結(jié)束對DDMS的說明之前,應用程序一定正運行在硬件或者虛擬設備之上,請在設備視圖中選擇對應設備并點擊“截圖”按鈕。

12.10screen_capture_button

這時新窗口中將出現(xiàn)當前設備顯示內(nèi)容的截圖結(jié)果。在這里,大家可以保存或者復制該圖片,并將其用于應用程序商店中的宣傳資料當中。受篇幅所限,我們對調(diào)試工作的說明比較簡略,大家可以點擊此處查看Android開發(fā)者指南當中關于Android應用程序調(diào)試的內(nèi)容。

12.11screen_capture_window

總結(jié)

當我們開始著手創(chuàng)建Android應用程序時,需要關注的重點在于運行應用程序并將信息記錄到控制臺以監(jiān)控應用的運行活動。不過隨著項目復雜程度的提升,大家往往會在應用程序發(fā)布前的準備階段用到大量Eclipse當中不可或缺的Android調(diào)試與測試工具。在本系列教程的下一篇文章中,我們將介紹Android Activity生命周期,只有掌握了這方面知識、大家才能真正開始創(chuàng)建功能全面的應用程序。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號