移動(dòng)開發(fā)基礎(chǔ)教程:Android是什么 安卓開發(fā)9分出處:刷機(jī)教程網(wǎng) 時(shí)間:2012-02-16 人氣:4066
核心提示:本教程為大家介紹安卓基礎(chǔ),以及安卓開發(fā)基礎(chǔ)知識(shí)。
Android是基于Linux內(nèi)核的操作系統(tǒng),是谷歌公司在2007年11月5日公布的手機(jī)操作系統(tǒng),早期由谷歌開發(fā),后由開放手持設(shè)備聯(lián)盟(Open Handset Alliance)開發(fā)。它采用了軟件堆層(software stack,又名以軟件疊層)的架構(gòu),主要分為三部分。底層Linux內(nèi)核只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),部分程序以Java編寫。 一、簡(jiǎn)介 BlackBerry和iPhone都提供了受歡迎的、高容量的移動(dòng)平臺(tái),但是卻分別針對(duì)兩個(gè)不同的消費(fèi)群體。BlackBerry是企業(yè)業(yè)務(wù)用戶的不二選擇。但是,作為一種消費(fèi)設(shè)備,它在易用性和 “新奇特性” 方面難以和iPhone抗衡。Android則是一個(gè)年輕的、有待開發(fā)的平臺(tái),它有潛力同時(shí)涵蓋移動(dòng)電話的兩個(gè)不同消費(fèi)群體,甚至可能縮小工作和娛樂之間的差別。 如今,很多基于網(wǎng)絡(luò)或有網(wǎng)絡(luò)支持的設(shè)備都運(yùn)行某種Linux內(nèi)核。這是一種可靠的平臺(tái):可經(jīng)濟(jì)有效地進(jìn)行部署和提供支持,并且可直接作為面向部署的良好的設(shè)計(jì)方法。這些設(shè)備的UI通常是基于HTML的,可通過PC或Mac瀏覽器查看。但并不是每個(gè)設(shè)備都需要通過一個(gè)常規(guī)的計(jì)算設(shè)備來控制。想象一下傳統(tǒng)的家用電器,例如電爐、微波爐或面包機(jī)。如果您的家用電器由Android控制,并且有一個(gè)彩色觸摸屏,會(huì)怎么樣?如果電爐上有一個(gè)Android UI,那么操控者甚至可以烹飪點(diǎn)什么東西。 二、Android術(shù)語 在Eclipse環(huán)境中開發(fā)Android應(yīng)用程序需要了解Eclipse環(huán)境和Android平臺(tái)的知識(shí)。了解以下術(shù)語會(huì)有助于用Eclipse插件開發(fā)Android應(yīng)用程序。 Open Handset Alliance 這是一個(gè)由谷歌公司主導(dǎo)的組織,它由許多公共和私人組織組成。 Android 這是Open Handset Alliance的主打產(chǎn)品。它是一種針對(duì)移動(dòng)設(shè)備的開放源碼操作環(huán)境。 模擬器 模擬另一個(gè)系統(tǒng)的軟件工具—這常常是在個(gè)人計(jì)算機(jī)(IBM、Mac、Linux)上運(yùn)行的一個(gè)環(huán)境,它模擬另一個(gè)環(huán)境,比如移動(dòng)計(jì)算設(shè)備。 Linux 一種開放源碼的操作系統(tǒng)內(nèi)核,許多計(jì)算平臺(tái)都使用這種操作系統(tǒng),包括服務(wù)器、桌面計(jì)算機(jī)、網(wǎng)絡(luò)設(shè)備和移動(dòng)計(jì)算設(shè)備。Android在Linux內(nèi)核上運(yùn)行。 Dalvik Virtual Machine Dalvik VM是Android產(chǎn)品組合中的一種操作環(huán)境,它在運(yùn)行時(shí)解釋應(yīng)用程序代碼。Dalvik VM與Java VM相似,但是兩者不兼容。 三、Android簡(jiǎn)史 Android平臺(tái)是Open Handset Alliance的成果,Open Handset Alliance 組織由一群共同致力于構(gòu)建更好的移動(dòng)電話的公司組成。這個(gè)組織由谷歌領(lǐng)導(dǎo),包括移動(dòng)運(yùn)營(yíng)商、手持設(shè)備制造商、零部件制造商、軟件解決方案和平臺(tái)提供商以及市場(chǎng)營(yíng)銷公司。從軟件開發(fā)的觀點(diǎn)看,Android正處在開源領(lǐng)域的中心位置。 市場(chǎng)上第一款支持Android的手機(jī)是由HTC制造并由T-Mobile供應(yīng)的G1。這款設(shè)備從設(shè)想到推出花了大約一年的時(shí)間,惟一可用的軟件開發(fā)工具是一些實(shí)行增量改進(jìn)的SDK發(fā)行版。隨著G1發(fā)行日的臨近,Android團(tuán)隊(duì)發(fā)布了SDK V1.0,用于這個(gè)新平臺(tái)的應(yīng)用程序也浮出水面。 為了鼓勵(lì)創(chuàng)新,谷歌舉辦了兩屆“Android Developer Challenges”,為優(yōu)勝的參賽作品提供數(shù)百萬美金的獎(jiǎng)勵(lì)。G1 問世幾個(gè)月之后,隨后就發(fā)布了Android Market,它使用戶可以瀏覽應(yīng)用程序,并且可以將應(yīng)用程序直接下載到他們的手機(jī)上。經(jīng)過大約 18 個(gè)月,一個(gè)新的移動(dòng)平臺(tái)進(jìn)入公眾領(lǐng)域。 四、Android平臺(tái) Android平臺(tái)被稱為一個(gè)產(chǎn)品組合,因?yàn)樗且幌盗薪M件的集合,包括: 基于Linux內(nèi)核的操作系統(tǒng) Java編程環(huán)境 工具集,包括編譯器、資源編譯器、調(diào)試器和模擬器 用來運(yùn)行應(yīng)用程序的Dalvik VM Android有豐富的功能,因此很容易與桌面操作系統(tǒng)混淆。Android是一個(gè)分層的環(huán)境,構(gòu)建在Linux內(nèi)核的基礎(chǔ)上,它包括豐富的功能。UI 子系統(tǒng)包括: 窗口 視圖 用于顯示一些常見組件(例如編輯框、列表和下拉列表)的小部件。 Android包括一個(gè)構(gòu)建在WebKit基礎(chǔ)上的可嵌入瀏覽器,iPhone 的Mobile Safari瀏覽器同樣也是以WebKit為基礎(chǔ)。 Android提供多種連接選項(xiàng),包括WiFi、藍(lán)牙和通過蜂窩(cellular)連接的無線數(shù)據(jù)傳輸(例如GPRS、EDGE 和3G)。Android應(yīng)用程序中一項(xiàng)流行的技術(shù)是鏈接到谷歌地圖,以便在應(yīng)用程序中顯示地址。Android軟件棧還提供對(duì)基于位置的服務(wù)(例如GPS)和加速計(jì)的支持,不過并不是所有的Android設(shè)備都配備了必需的硬件。另外還有攝像支持。 過去,移動(dòng)應(yīng)用程序努力向桌面應(yīng)用程序看齊的兩個(gè)領(lǐng)域分別是圖形/媒體和數(shù)據(jù)存儲(chǔ)方法。Android通過提供對(duì)2D和3D圖形的內(nèi)置支持,包括OpenGL 庫,解決了圖形方面的挑戰(zhàn)。由于Android平臺(tái)包括流行的開源SQLite 數(shù)據(jù)庫,因此緩解了數(shù)據(jù)存儲(chǔ)的負(fù)擔(dān)。圖1顯示一個(gè)簡(jiǎn)化的Android軟件層次結(jié)構(gòu)。 圖1.Android軟件層次結(jié)構(gòu) 五、應(yīng)用程序架構(gòu) 如前所述,Android運(yùn)行在Linux內(nèi)核上。Android應(yīng)用程序是用Java編程語言編寫的,它們?cè)谝粋€(gè)虛擬機(jī)(VM)中運(yùn)行。需要注意的是,這個(gè)VM并非您想象中的JVM,而是Dalvik Virtual Machine,這是一種開源技術(shù)。每個(gè)Android應(yīng)用程序都在Dalvik VM的一個(gè)實(shí)例中運(yùn)行,這個(gè)實(shí)例駐留在一個(gè)由Linux內(nèi)核管理的進(jìn)程中,如下圖所示。 圖 2. Dalvik VM Android應(yīng)用程序由一個(gè)或多個(gè)組件組成: 活動(dòng) 具有可視UI的應(yīng)用程序是用活動(dòng)實(shí)現(xiàn)的。當(dāng)用戶從主屏幕或應(yīng)用程序啟動(dòng)器選擇一個(gè)應(yīng)用程序時(shí),就會(huì)開始一個(gè)動(dòng)作。 服務(wù) 服務(wù)應(yīng)該用于任何需要持續(xù)較長(zhǎng)時(shí)間的應(yīng)用程序,例如網(wǎng)絡(luò)監(jiān)視器或更新檢查應(yīng)用程序。 內(nèi)容提供程序 可以將內(nèi)容提供程序看作數(shù)據(jù)庫服務(wù)器。內(nèi)容提供程序的任務(wù)是管理對(duì)持久數(shù)據(jù)的訪問,例如SQLite數(shù)據(jù)庫。如果應(yīng)用程序非常簡(jiǎn)單,那么可能不需要?jiǎng)?chuàng)建內(nèi)容提供程序。如果要構(gòu)建一個(gè)較大的應(yīng)用程序,或者構(gòu)建需要為多個(gè)活動(dòng)或應(yīng)用程序提供數(shù)據(jù)的應(yīng)用程序,那么可以使用內(nèi)容提供程序?qū)崿F(xiàn)數(shù)據(jù)訪問。 廣播接收器 Android應(yīng)用程序可用于處理一個(gè)數(shù)據(jù)元素,或者對(duì)一個(gè)事件(例如接收文本消息)做出響應(yīng)。 Android應(yīng)用程序是連同一個(gè)AndroidManifest.xml文件一起部署到設(shè)備的。AndroidManifest.xml包含必要的配置信息,以便將它適當(dāng)?shù)匕惭b到設(shè)備。它包括必需的類名和應(yīng)用程序能夠處理的事件類型,以及運(yùn)行應(yīng)用程序所需的許可。例如,如果應(yīng)用程序需要訪問網(wǎng)絡(luò) — 例如為了下載一個(gè)文件 — 那么manifest文件中必須顯式地列出該許可。很多應(yīng)用程序可能啟用了這個(gè)特定的許可。這種聲明式安全性有助于減少惡意應(yīng)用程序損害設(shè)備的可能性。 六、所需工具 開始開發(fā)Android應(yīng)用程序的最簡(jiǎn)捷的方式是下載AndroidSDK 和EclipseIDE。Android開發(fā)可以在微軟Windows、Mac OS X 或Linux上進(jìn)行。 本文假設(shè)您使用的是Eclipse IDE和用于Eclipse的Android Developer Tools插件。Android應(yīng)用程序是用Java語言編寫的,但是是在Dalvik VM(非Java虛擬機(jī))中編譯和執(zhí)行的。在Eclipse中用Java語言編程非常簡(jiǎn)單;Eclipse 提供一個(gè)豐富的Java環(huán)境,包括上下文敏感幫助和代碼提示。Java 代碼通過編譯后,Android Developer Tools 可確保適當(dāng)?shù)貙⑺虬?,包括AndroidManifest.xml 文件。 雖然沒有Eclipse和Android Developer Tools插件也可以開發(fā)Android應(yīng)用程序,但是那樣就需要熟悉Android SDK。 AndroidSDK 是作為一個(gè)ZIP文件發(fā)布的,可以將該文件解壓到硬盤上的一個(gè)目錄中。由于有多個(gè)SDK更新,建議有意識(shí)地組織開發(fā)環(huán)境,以便在不同的SDK安裝之間輕松地切換。 SDK 包括: android.jar Java 歸檔文件,其中包含構(gòu)建應(yīng)用程序所需的所有的Android SDK 類。 documention.html和docs目錄 本地和網(wǎng)上提供的SDK文檔。這些文檔的主要形式為JavaDocs,以便于在SDK中導(dǎo)航大量的包。文檔還包括一個(gè)高級(jí)開發(fā)指南和Android社區(qū)的鏈接。 Samples目錄 Samples子目錄包含各種應(yīng)用程序的源代碼,包括ApiDemo,該應(yīng)用程序演示了很多API。這個(gè)示例應(yīng)用程序可以作為Android應(yīng)用程序開發(fā)的良好起點(diǎn)。 Tools目錄 包含所有用于構(gòu)建Android應(yīng)用程序的命令行工具。最常用、最有用的工具是adb實(shí)用程序(Android Debug Bridge)。 usb_driver 該目錄包含將開發(fā)環(huán)境連接到支持Android的設(shè)備(例如G1或Android Dev 1解鎖開發(fā)手機(jī))所需的驅(qū)動(dòng)程序。只有Windows平臺(tái)的開發(fā)人員才需要這些文件。 Android應(yīng)用程序可以在實(shí)際的設(shè)備上運(yùn)行,也可以在Android SDK 附帶的Android Emulator上運(yùn)行。圖 3 顯示Android Emulator 的主屏幕。 圖 3.Android Emulator 七、Android Debug Bridge adb實(shí)用程序支持一些可選命令行參數(shù),以提供強(qiáng)大的特性,例如復(fù)制文件到設(shè)備或從設(shè)備復(fù)制文件??梢允褂胹hell命令行參數(shù)連接到手機(jī)本身,并發(fā)送基本的shell命令。圖 4 顯示在通過USB線連接到Windows筆記本電腦的一個(gè)實(shí)際設(shè)備上運(yùn)行的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)境變量的內(nèi)容。 執(zhí)行su命令,以成為超級(jí)用戶。 將目錄改為/data/app,其中存放用戶應(yīng)用程序。 列出包含某個(gè)應(yīng)用程序的目錄。Android應(yīng)用程序文件實(shí)際上是歸檔文件,可通過WinZip之類的軟件查看。擴(kuò)展名為apk。 發(fā)出ping命令,查看Google.com是否可用。 從相同的命令提示符環(huán)境中,還可以與SQLite 數(shù)據(jù)庫交互,啟動(dòng)程序以及執(zhí)行許多其他系統(tǒng)級(jí)任務(wù)。想像一下您正在連接到電話,因此這是非常了不起的功能。 |
|