天天看點

第四章 探索Android SDK

關鍵技能和概念

 l         使用Android SDK文檔

 l         使用Android SDK工具

 l         使用應用範例

 l         了解Android應用的生命周期

由于你已經搭建好了開發環境,你就可以探索Android SDK,它包含衆多檔案和特定的工具,可以幫助你設計和開發運作在Android平台上的應用。這些工具經過精心設計,能夠幫你生成一些難以置信的應用。在開始程式設計之前,你需要熟悉Android SDK和它的工具。

Android SDK也包含了能将你的應用與Android核心特性綁定的庫,例如綁定通話功能(接打電話),GPS功能,短信通知。這些庫組成了核心的SDK,他們将會是你最常用的功能,是以要花點時間去了解全部的核心庫。

本章涵蓋了Android SDK擁有的全部重要的項。在本章結尾,在你熟悉了Android SDK之後,你會很輕松地編寫應用。然而,正如所有問題一樣,要想深入到定律的應用,你必須熟悉它的内容和說明。

Android SDK是什麼?

Android SDK以zip壓縮包的格式下載下傳(如第三章描述的一樣)。Android SDK主要是大量的檔案,包含文檔、程式設計API、工具,其餘由示例組成。這一節提供了對Android SDK的近距離詳觀。

浏覽你解壓Android SDK的檔案夾,借此你可以研究内部的檔案夾結構。雖然根目錄下的檔案很少,如android.jar(編譯後的Java應用,它包含了核心的SDK庫和API)和一些釋出的注解,Android SDK的剩餘部分分成了三個主檔案夾:

 l         DOCS  包括全部附帶的Android文檔

 l         Samples 包括六個你可以通過Eclipse編譯和測試的示例應用

 l         Tools  包括全部開發、編譯和調試工具,在開發Android應用的整個過程中你都需要他們

下一節會更詳細一點地介紹每個SDK檔案夾中包含的内容。為了闡明Android的功能,每一個API demo都可以編譯和運作。以後的章節中許多工具都會為你講解和示範,讓你明白如何力圖用Microsoft Windows與Linux自帶的指令行選項建立和編譯應用。

Android 文檔

Android文檔在Android SDK的Docs檔案夾内,位置是../%sdk folder%/DOCS。文檔包括下載下傳和安裝SDK的步驟,應用開發“快速入門”,包定義。文檔是HTML格式的,在SDK的根目錄能通過documenation.html檔案通路。以下插圖描述了Android SDK文檔的首頁。

第四章 探索Android SDK

你可以通過documentition.html頁面上的連結通路Android SDK的所有文檔。

使用Android SDK的時候,我發現文檔的部分章節,我求助的機率要比其它多。對我來說Android SDK文檔最有價值的片段如下(如導覽列中所示):

  l         參考資訊

l       Class索引

l       權限清單

l       資源類型清單

  l         FAQ

l       疑難解答

文檔的疑難解答部分對你的起步特别有用。當你讀透了這本書開始開發你的Android應用時,你會發現文檔的參考資訊部分非常有用。例如,雖然目前它對你來說可能毫無用處,但當你讀完本書的建立複雜應用的部分,權限清單部分仍然對你非常有用。花點時間熟悉Android SDK文檔和提供的數不盡的檔案。

Android 示例

示例檔案夾位于../%sdk folder%/SAMPLES,它包含了六個示例應用,橫向展示了Android功能:

  l         API Demos

  l         Hello, Activity!

  l         Lunar Lander

  l         Chapter 4: Exploring the Android SDK 39

  l         Note Pad

  l         Skeleton App

  l         Snake

Google提供的這些示例應用能讓你快速了解如何開發Android應用程式。每個示例都展示了不同的Android功能部分。你通過Eclipse可以打開并運作這些應用,下面是對各部分的簡要描述。

API Demos

API Demos應用是在一個Activity中示範複雜的API功能的主應用程式。

API Demos應用,如下所示,包含了複雜的,小巧的,不同的Android功能示例:

第四章 探索Android SDK

API Demos中的一些應用包括3D圖形轉換,清單和進度對話框,以及觸摸示範。

運作API Demos的應用示例:

利用Eclipse,将API Demos應用裝載到一個新的Android項目。在Eclipse主菜中選擇File | New | Project;即可打開一個新Android項目向導。不要為向導中的選項發愁。僅僅選擇 Create Project From Existing Source,浏覽API示例應用檔案夾。當項目裝載後,選擇運作,看它如何在Android模拟器中運作。

浏覽40多種應用,使用每個功能以此熟悉每個API工具的術語和功能。

Hello, Activity!

Hello, Activity!應用,如下所示,是個簡單的Hello World!風格的應用。雖然設計簡單,Hello, Activity!卻很好地展示了平台的功能。下一章你就可以建立自己的Hello World!風格的應用。

第四章 探索Android SDK

Lunar Lander

Lunar Lander,如下,是在Android模拟器上玩的小遊戲。Lunar Lander展示了2D遊戲如何在Android上工作的。操作簡單,遊戲也不複雜。雖然有這些缺憾,但是它卻是一個很不錯的開發入門遊戲。

第四章 探索Android SDK

Lunar Lander現實了簡單的控制方案(上、下、左、右)。遊戲還顯示了相對流體的圖形設計,讓人們對平台充滿了期待。複雜的遊戲理念如碰撞檢測也簡單地實作了。雖然本書不包括Android平台的遊戲程式設計,但如果你對它感興趣,你也許會從Lunar Lander中受到啟發。

Note Pad

Note Pad,如下所示,允許你打開、建立、編輯小的記事本。Note Pad并不是一個全功能的文本編輯器,是以不要期望和Windows Mobile中的Word相似。然而它比較适合作為擁有少量代碼量的展示工具。

第四章 探索Android SDK

Skeleton App

Skeleton App,如下所示,是個應用架構。它不僅僅是一個基礎應用,還提供了一組不同的應用特性,如字型,按鈕,圖檔,表單。如果你将Skeleton App晾一邊,你可能獲益很少。借助Skeleton App資源你可以很輕松的實施具體的項目。

第四章 探索Android SDK

Snake

Android SDK中最一個demo是貪吃蛇。這是一個小巧的SNAFU式的遊戲,它比Lunar Lander還要簡單。下面的截圖展示了Snake運作時的外觀。

第四章 探索Android SDK

Android工具

Android SDK為開發者提供了大量強大而且有用的工具。但縱貫全書,你也僅會接觸到一小撮而已。本章節會帶你浏覽其中的一小部分,如果你到了指令行程式設計的程度,以後的章節中還會為你深入講解。

emulater.exe

可以說,Android SDK中最重要的工具莫過于emulator.exe。emulator.exe能啟動Android模拟器。Android模拟器用來在虛拟的Android環境下,運作你的應用程式。鑒于在寫本書時還沒有釋出基于Android平台的硬體裝置,是以emulator.exe将是你在“本土”平台測試應用程式的唯一途徑。

你可以通過指令行運作emulator.exe或者通過Eclipse執行。本書中,一直通過Eclipse為你啟動Android模拟器環境。然而,為了給你提供脫離Eclipse利用Android SDK程式設計的所有資訊,當你建立你的Hello World!應用時,第六章會介紹emulator.exe的指令行的用法。

當利用Android模拟器進行應用測試時,你有兩種浏覽使用者界面的方式。首先,emulator自帶了有用的按鈕,如圖4-1所示,你可以利用這些按鈕浏覽Android和你開發的任何應用。

第四章 探索Android SDK

圖4-1 Android模拟導航

由于目前許多高端手機帶有觸碰,當使用模拟器時你就有第二輸入方式,即模拟觸屏。把你的滑鼠當做一支筆,就可以利用滑鼠與模拟器螢幕上的對象互動。

adb.exe

當你利用指令行程式設計時,另一個很有用的工具就是Android調試橋接器或者叫adb(adb.exe),該工具允許你向Emulator.exe工具發送指令。當你使用指令行環境時,adb工具允許你:

  l         啟停伺服器

  l         安裝與解除安裝應用

  l         與模拟器傳輸檔案

MKDCARD.exe

如果你需要測試在嵌入到移動裝置中的SD存儲卡上讀寫檔案的應用,MKDCARD.exe會非常有用。MKDCARD.exe在你的驅動器上建立一個小分區,來儲存測試檔案。模拟器會把該分區當做是SD存儲卡。

DX.exe

DX.exe是Android SDK的編譯器。如果java檔案出現沖突,DX.exe會生成.dex字尾的檔案——即達爾維克可執行檔案格式。這些檔案能以正确的格式被Android裝置解析和運作。

activityCreator(.bat or . pn)

activityCreator是個用來安裝基礎開發環境的簡單的指令行工具。當從指令行啟動時,activityCreator會安裝哪些建立android應用所需的shell檔案。如果你沒用Eclipse,這些shell檔案會特别有用。當你建立新工程時,Eclipse的Android插件會通過響應activityCreator為你安裝這些shell檔案。

你看到的activityCreator會以何種不同類型的腳本檔案出現,取決于你運作的環境。如果是Windows環境,會是一個.bat檔案,否則會使一個Python(.pn)腳本。你隻需執行腳本,它就以正确的參數會喚醒activityCreator程序。 

API

API,或者說應用程式設計接口,是Android SDK的核心。一個API就是一個功能、方法、屬性、類和庫的集合,應用開發者用他們來建立運作在具體平台上的程式。Android API包括你建立能與基于Android的應用互動的應用程式時,需要的所有具體資訊。

Android API也包含了的兩項補充的API集——Google API和Optional API。随後的章節中,當你利用他們編寫應用時,還會重點介紹這些API。現在,浏覽一下他們的内容,了解一下他們的功用。

Google API

Android API中包含了Google API,包括将你的應用與Google服務綁定的程式設計指導。如果你編寫了一個Android應用,并且想讓使用者通過你的應用通路Google服務,那麼你需要引入Google API。

Google API位于在android.jar檔案的com.google.*包中,其中僅有少量的包。內建到Google API中的一些包,包括圖形、可移植性、聯絡和月曆工具。然而Google Maps用到的包會是本書關注的重點。

利用包含Google Maps資訊的com.google.android.maps 包,你可以建立與熟悉的GoogleMaps接口無縫互動的應用。這個包集為你打開了等着你去建立的可用應用的世界。

Google API還包含一組有用的包,允許你利用Jabber開源社群的可擴充消息處理現場協定(XMPP)進行開發。利用XMPP,應用能快速識别其它用戶端,實作通信的目的。如果你想利用手機短信功能建立一個聊天式的程式,該處理XMPP的API軟體包非常有用。

Optional API

Android SDK擁有大量的Optional API,它涵蓋了标準Android API沒有涉及的功能。這些Optional API是可選的,因為他們提供的功能在特定的硬體裝置上不一定需要。也就是說,一些适用Android平台的裝置可能包含其它裝置沒有的更新和特性。當你在Android應用中适用這些特性時,Optional API包括在你的程式設計選項中。

其中一個可選特性(本書後面你會用到)是基于手機的GPS。Android LBS(基于位置的服務)API處理那些需要接收和使用來自裝置的GPS單元的資訊的功能。(将這些在Android LBS API中的資訊和Google Maps API連接配接起來,你就可以擁有非常有用的應用,它能及時地自動顯示你所處的位置。)

其它Optional API,如使用藍牙、Wi-Fi,播放Mp3和通路3D—OpenGL啟用硬體。

應用的生命周期

如果你是一個經驗豐富的應用開發者,你就了解應用生命周期的概念。一個應用的生命周期包含了應用進行必須遵從的從執行到終止的步驟。無論是何種語言編寫的引用,都有一個特定的生命周期,Android應用也不例外。本節研究一個ASP應用的生命周期,借此和Android應用的生命周期進行比較。

标準ASP應用的生命周期 

标準ASP應用的生命周期和Android應用的生命周期非常相似,便以作對比。ASP應用由始至終,需要五個嚴格的過程。這五個步驟全部需要ASP應用來實作,并且定義何是ASP應用。這些步驟按順序是:

1. Application_Start

2. Event

3. HTTPApplication.Init

4. Disposal

5. Application_End

Application_Start在伺服器端被請求時響應。該程序然後指向Event程序。當所有相關聯的應用子產品都被裝載,就會響應HTTPApplication.Init。該應用執行事件,當使用者試圖關閉時,響應Dispose。Dispose然後将程序傳遞到Application_End程序,來關閉應用。

這是非常标準的應用生命周期。大多數應用都有相似的生命周期:建立應用,裝載,響應事件,和銷毀。下面一節說明如何與Android應用的生命周期做比較。

Android應用的生命周期 

由于的許多應用的生命周期被系統控制的,Android應用的生命周期就獨一無二了。所有Android應用,或者活動都運作在自己的程序中。所有運作的程序被Android監控,取決于活動的運作狀況(也就是說,一個前台活動,背景活動,僅此而已),Android可能會為了釋放必須的資源而終止活動。

在Android活動的生命周期中,響應的個别方法有:

● onCreate

● onStart

● Process-specific events (例如,啟動活動和通路資料庫)

● onStop

● onDestroy

如同其它應用的生命周期的思路,一個Android被建立,啟動程序,觸發事件,終止程序,銷毀應用。盡管有一點兒不同,許多應用開發者都會适應生命周期中的這些步驟。

專家答疑

問:Google是否更新了Android SDK?

答:是的,從我寫這本書開始,Google就已經更新了三次Android SDK。Google也将在Android網站上釋出可用的更新。

問:部分API Demo是否就是将在最終産品中釋出的應用 ?

答:不一定!建立API Demo是為了展示産品的功能。雖然API Demo中可能包含了核心的釋出應用,我們也不能肯定就能在最終版本中看到Lunar Lander。