核心提示:本教程為大家介紹安卓基礎,以及安卓開(kāi)發(fā)基礎知識。
Android是基于Linux內核的操作系統,是谷歌公司在2007年11月5日公布的手機操作系統,早期由谷歌開(kāi)發(fā),后由開(kāi)放手持設備聯(lián)盟(Open Handset Alliance)開(kāi)發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能;其他的應用軟件則由各公司自行開(kāi)發(fā),部分程序以Java編寫(xiě)。
一、簡(jiǎn)介
BlackBerry和iPhone都提供了受歡迎的、高容量的移動(dòng)平臺,但是卻分別針對兩個(gè)不同的消費群體。BlackBerry是企業(yè)業(yè)務(wù)用戶(hù)的不二選擇。但是,作為一種消費設備,它在易用性和 “新奇特性” 方面難以和iPhone抗衡。Android則是一個(gè)年輕的、有待開(kāi)發(fā)的平臺,它有潛力同時(shí)涵蓋移動(dòng)電話(huà)的兩個(gè)不同消費群體,甚至可能縮小工作和娛樂(lè )之間的差別。
如今,很多基于網(wǎng)絡(luò )或有網(wǎng)絡(luò )支持的設備都運行某種Linux內核。這是一種可靠的平臺:可經(jīng)濟有效地進(jìn)行部署和提供支持,并且可直接作為面向部署的良好的設計方法。這些設備的UI通常是基于HTML的,可通過(guò)PC或Mac瀏覽器查看。但并不是每個(gè)設備都需要通過(guò)一個(gè)常規的計算設備來(lái)控制。想象一下傳統的家用電器,例如電爐、微波爐或面包機。如果您的家用電器由Android控制,并且有一個(gè)彩色觸摸屏,會(huì )怎么樣?如果電爐上有一個(gè)Android UI,那么操控者甚至可以烹飪點(diǎn)什么東西。
二、Android術(shù)語(yǔ)
在Eclipse環(huán)境中開(kāi)發(fā)Android應用程序需要了解Eclipse環(huán)境和Android平臺的知識。了解以下術(shù)語(yǔ)會(huì )有助于用Eclipse插件開(kāi)發(fā)Android應用程序。
Open Handset Alliance
這是一個(gè)由谷歌公司主導的組織,它由許多公共和私人組織組成。
Android
這是Open Handset Alliance的主打產(chǎn)品。它是一種針對移動(dòng)設備的開(kāi)放源碼操作環(huán)境。
模擬器
模擬另一個(gè)系統的軟件工具—這常常是在個(gè)人計算機(IBM、Mac、Linux)上運行的一個(gè)環(huán)境,它模擬另一個(gè)環(huán)境,比如移動(dòng)計算設備。
Linux
一種開(kāi)放源碼的操作系統內核,許多計算平臺都使用這種操作系統,包括服務(wù)器、桌面計算機、網(wǎng)絡(luò )設備和移動(dòng)計算設備。Android在Linux內核上運行。
Dalvik Virtual Machine
Dalvik VM是Android產(chǎn)品組合中的一種操作環(huán)境,它在運行時(shí)解釋?xiě)贸绦虼a。Dalvik VM與Java VM相似,但是兩者不兼容。
三、Android簡(jiǎn)史
Android平臺是Open Handset Alliance的成果,Open Handset Alliance 組織由一群共同致力于構建更好的移動(dòng)電話(huà)的公司組成。這個(gè)組織由谷歌領(lǐng)導,包括移動(dòng)運營(yíng)商、手持設備制造商、零部件制造商、軟件解決方案和平臺提供商以及市場(chǎng)營(yíng)銷(xiāo)公司。從軟件開(kāi)發(fā)的觀(guān)點(diǎn)看,Android正處在開(kāi)源領(lǐng)域的中心位置。
市場(chǎng)上第一款支持Android的手機是由HTC制造并由T-Mobile供應的G1。這款設備從設想到推出花了大約一年的時(shí)間,惟一可用的軟件開(kāi)發(fā)工具是一些實(shí)行增量改進(jìn)的SDK發(fā)行版。隨著(zhù)G1發(fā)行日的臨近,Android團隊發(fā)布了SDK V1.0,用于這個(gè)新平臺的應用程序也浮出水面。
為了鼓勵創(chuàng )新,谷歌舉辦了兩屆“Android Developer Challenges”,為優(yōu)勝的參賽作品提供數百萬(wàn)美金的獎勵。G1 問(wèn)世幾個(gè)月之后,隨后就發(fā)布了Android Market,它使用戶(hù)可以瀏覽應用程序,并且可以將應用程序直接下載到他們的手機上。經(jīng)過(guò)大約 18 個(gè)月,一個(gè)新的移動(dòng)平臺進(jìn)入公眾領(lǐng)域。
四、Android平臺
Android平臺被稱(chēng)為一個(gè)產(chǎn)品組合,因為它是一系列組件的集合,包括:
基于Linux內核的操作系統 Java編程環(huán)境 工具集,包括編譯器、資源編譯器、調試器和模擬器 用來(lái)運行應用程序的Dalvik VM
Android有豐富的功能,因此很容易與桌面操作系統混淆。Android是一個(gè)分層的環(huán)境,構建在Linux內核的基礎上,它包括豐富的功能。UI 子系統包括:
窗口 視圖 用于顯示一些常見(jiàn)組件(例如編輯框、列表和下拉列表)的小部件。
Android包括一個(gè)構建在WebKit基礎上的可嵌入瀏覽器,iPhone 的Mobile Safari瀏覽器同樣也是以WebKit為基礎。
Android提供多種連接選項,包括WiFi、藍牙和通過(guò)蜂窩(cellular)連接的無(wú)線(xiàn)數據傳輸(例如GPRS、EDGE 和3G)。Android應用程序中一項流行的技術(shù)是鏈接到谷歌地圖,以便在應用程序中顯示地址。Android軟件棧還提供對基于位置的服務(wù)(例如GPS)和加速計的支持,不過(guò)并不是所有的Android設備都配備了必需的硬件。另外還有攝像支持。
過(guò)去,移動(dòng)應用程序努力向桌面應用程序看齊的兩個(gè)領(lǐng)域分別是圖形/媒體和數據存儲方法。Android通過(guò)提供對2D和3D圖形的內置支持,包括OpenGL 庫,解決了圖形方面的挑戰。由于A(yíng)ndroid平臺包括流行的開(kāi)源SQLite 數據庫,因此緩解了數據存儲的負擔。圖1顯示一個(gè)簡(jiǎn)化的Android軟件層次結構。

圖1.Android軟件層次結構
五、應用程序架構
如前所述,Android運行在Linux內核上。Android應用程序是用Java編程語(yǔ)言編寫(xiě)的,它們在一個(gè)虛擬機(VM)中運行。需要注意的是,這個(gè)VM并非您想象中的JVM,而是Dalvik Virtual Machine,這是一種開(kāi)源技術(shù)。每個(gè)Android應用程序都在Dalvik VM的一個(gè)實(shí)例中運行,這個(gè)實(shí)例駐留在一個(gè)由Linux內核管理的進(jìn)程中,如下圖所示。

圖 2. Dalvik VM
Android應用程序由一個(gè)或多個(gè)組件組成:
活動(dòng)
具有可視UI的應用程序是用活動(dòng)實(shí)現的。當用戶(hù)從主屏幕或應用程序啟動(dòng)器選擇一個(gè)應用程序時(shí),就會(huì )開(kāi)始一個(gè)動(dòng)作。
服務(wù)
服務(wù)應該用于任何需要持續較長(cháng)時(shí)間的應用程序,例如網(wǎng)絡(luò )監視器或更新檢查應用程序。
內容提供程序
可以將內容提供程序看作數據庫服務(wù)器。內容提供程序的任務(wù)是管理對持久數據的訪(fǎng)問(wèn),例如SQLite數據庫。如果應用程序非常簡(jiǎn)單,那么可能不需要創(chuàng )建內容提供程序。如果要構建一個(gè)較大的應用程序,或者構建需要為多個(gè)活動(dòng)或應用程序提供數據的應用程序,那么可以使用內容提供程序實(shí)現數據訪(fǎng)問(wèn)。
廣播接收器
Android應用程序可用于處理一個(gè)數據元素,或者對一個(gè)事件(例如接收文本消息)做出響應。
Android應用程序是連同一個(gè)AndroidManifest.xml文件一起部署到設備的。AndroidManifest.xml包含必要的配置信息,以便將它適當地安裝到設備。它包括必需的類(lèi)名和應用程序能夠處理的事件類(lèi)型,以及運行應用程序所需的許可。例如,如果應用程序需要訪(fǎng)問(wèn)網(wǎng)絡(luò ) — 例如為了下載一個(gè)文件 — 那么manifest文件中必須顯式地列出該許可。很多應用程序可能啟用了這個(gè)特定的許可。這種聲明式安全性有助于減少惡意應用程序損害設備的可能性。
六、所需工具
開(kāi)始開(kāi)發(fā)Android應用程序的最簡(jiǎn)捷的方式是下載AndroidSDK 和EclipseIDE。Android開(kāi)發(fā)可以在微軟Windows、Mac OS X 或Linux上進(jìn)行。
本文假設您使用的是Eclipse IDE和用于Eclipse的Android Developer Tools插件。Android應用程序是用Java語(yǔ)言編寫(xiě)的,但是是在Dalvik VM(非Java虛擬機)中編譯和執行的。在Eclipse中用Java語(yǔ)言編程非常簡(jiǎn)單;Eclipse 提供一個(gè)豐富的Java環(huán)境,包括上下文敏感幫助和代碼提示。Java 代碼通過(guò)編譯后,Android Developer Tools 可確保適當地將它打包,包括AndroidManifest.xml 文件。
雖然沒(méi)有Eclipse和Android Developer Tools插件也可以開(kāi)發(fā)Android應用程序,但是那樣就需要熟悉Android SDK。
AndroidSDK 是作為一個(gè)ZIP文件發(fā)布的,可以將該文件解壓到硬盤(pán)上的一個(gè)目錄中。由于有多個(gè)SDK更新,建議有意識地組織開(kāi)發(fā)環(huán)境,以便在不同的SDK安裝之間輕松地切換。
SDK 包括:
android.jar
Java 歸檔文件,其中包含構建應用程序所需的所有的Android SDK 類(lèi)。
documention.html和docs目錄
本地和網(wǎng)上提供的SDK文檔。這些文檔的主要形式為JavaDocs,以便于在SDK中導航大量的包。文檔還包括一個(gè)高級開(kāi)發(fā)指南和Android社區的鏈接。
Samples目錄
Samples子目錄包含各種應用程序的源代碼,包括ApiDemo,該應用程序演示了很多API。這個(gè)示例應用程序可以作為Android應用程序開(kāi)發(fā)的良好起點(diǎn)。
Tools目錄
包含所有用于構建Android應用程序的命令行工具。最常用、最有用的工具是adb實(shí)用程序(Android Debug Bridge)。
usb_driver
該目錄包含將開(kāi)發(fā)環(huán)境連接到支持Android的設備(例如G1或Android Dev 1解鎖開(kāi)發(fā)手機)所需的驅動(dòng)程序。只有Windows平臺的開(kāi)發(fā)人員才需要這些文件。
Android應用程序可以在實(shí)際的設備上運行,也可以在A(yíng)ndroid SDK 附帶的Android Emulator上運行。圖 3 顯示Android Emulator 的主屏幕。

圖 3.Android Emulator
七、Android Debug Bridge
adb實(shí)用程序支持一些可選命令行參數,以提供強大的特性,例如復制文件到設備或從設備復制文件??梢允褂胹hell命令行參數連接到手機本身,并發(fā)送基本的shell命令。圖 4 顯示在通過(guò)USB線(xiàn)連接到Windows筆記本電腦的一個(gè)實(shí)際設備上運行的adb shell命令。

圖 4. 使用adb shell命令
在這個(gè)shell環(huán)境中,可以:
顯示網(wǎng)絡(luò )配置,網(wǎng)絡(luò )配置可顯示多個(gè)網(wǎng)絡(luò )連接。注意這多個(gè)網(wǎng)絡(luò )連接:
lo是本地或loopback連接。
tiwlan0是WiFi連接,該連接由本地DHCP服務(wù)器提供一個(gè)地址。
顯示PATH環(huán)境變量的內容。
執行su命令,以成為超級用戶(hù)。
將目錄改為/data/app,其中存放用戶(hù)應用程序。
列出包含某個(gè)應用程序的目錄。Android應用程序文件實(shí)際上是歸檔文件,可通過(guò)WinZip之類(lèi)的軟件查看。擴展名為apk。
發(fā)出ping命令,查看Google.com是否可用。
從相同的命令提示符環(huán)境中,還可以與SQLite 數據庫交互,啟動(dòng)程序以及執行許多其他系統級任務(wù)。想像一下您正在連接到電話(huà),因此這是非常了不起的功能。
聯(lián)系客服