名稱來源
Android一詞最早出現於法國作家利爾亞當在1886年發表的科幻小說《未來夏娃》中。他將外表像人的機器起名為Android。Android是一種基於Linux®V2.6核心的綜合操作環境。最初,Android的部署目標是行動電話領域,包括智慧型電話和更廉價的翻蓋手機。但是,Android全面的計算服務和豐富的功能支持完全有能力擴展到行動電話市場以外。Android也可以用於其他的平台和應用程式。
2010年2月3日,Linux核心開發者GregKroah-Hartman將Android的驅動程式從Linux核心“狀態樹”(“stagingtree”)上除去,從此,Android與Linux核心開發分道揚鑣。
基本介紹
它包括作業系統、用戶界面和應用程式——行動電話工作所需的全部軟體,而且不存在任何以往阻礙移動產業創新的專有權障礙。谷歌與開放手機聯盟合作開發了Android,這個聯盟由包括中國移動、摩托羅拉、高通、宏達和T-Mobile在內的30多家技術和無線套用的領軍企業組成。通過與運營商、設備製造商、開發商和其他有關各方結成深層次的合作夥伴關係,我們希望藉助建立標準化、開放式的行動電話軟體平台,在移動產業內形成一個開放式的生態系統。我們認為此舉必將推進更好、更快的創新,為移動用戶提供不可預知的套用和服務。Android作為谷歌企業戰略的重要組成部分,將進一步推進"隨時隨地為每個人提供信息"這一企業目標的實現。我們發現,全球為數眾多的行動電話用戶從未使用過任何基於Android的電話。谷歌的目標是讓(移動通訊)不依賴於設備甚至平台。出於這個目的,Android將補充,而不會替代谷歌長期以來奉行的移動發展戰略:通過與全球各地的手機製造商和移動運營商結成合作夥伴,開發既有用又有吸引力的移動服務,並推廣這些產品。
開放手機聯盟的成立和Android的推出是對現狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,我們認為全球移動用戶從中能獲得的潛在利益是值得付出這些努力的。如果你也是一個開發者,並對我們的想法感興趣,就請再給我們一星期的時間,屆時谷歌便能提供SDK了。如果你是一名移動用戶,只需再等一段時間,我們的一些合作夥伴計畫在2008年下半年推出基於Android平台的電話產品。如果你已經擁有一部你了解並喜愛的電話,確保你已經安裝谷歌手機地圖、Gmail以及其他一些專為你的手機開發的精彩套用。谷歌將繼續努力,讓這些服務變得更好,同時也將添加更有吸引力的特性、套用和服務。
發展歷史
Android平台是OpenHandsetAlliance的成果,OpenHandsetAlliance組織由一群共同致力於構建更好的行動電話的公司組成。這個組織由Google領導,包括移動運營商、手持設備製造商、零部件製造商、軟體解決方案和平台提供商以及市場行銷公司。從軟體開發的觀點看,Android正處在開源領域的中心位置。
市場上第一款支持Android的手機是由HTC製造並由T-Mobile供應的G1。這款設備從構想到推出花了大約一年的時間,惟一可用的軟體開發工具是一些實行增量改進的SDK發行版。隨著G1發行日的臨近,Android團隊發布了SDKV1.0,用於這個新平台的應用程式也浮出水面。
為了鼓勵創新,Google舉辦了兩屆“AndroidDeveloperChallenges”,為優勝的參賽作品提供數百萬美金的獎勵。G1問世幾個月之後,隨後就發布了AndroidMarket,它使用戶可以瀏覽應用程式,並且可以將應用程式直接下載到他們的手機上。經過大約18個月,一個新的移動平台進入公眾領域。
2003年10月,AndyRubin等人創建Android公司,並組建Android團隊。
2005年8月17日,Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁,繼續負責Android項目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的作業系統,並且在這天谷歌宣布建立一個全球性的聯盟組織,該組織由34家手機製造商、軟體開發商、電信運營商以及晶片製造商共同組成,並與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(OpenHandsetAlliance)來共同研發改良Android系統,這一聯盟將支持谷歌發布的手機作業系統以及套用軟體,Google以Apache免費開源許可證的授權方式,發布了Android的原始碼。
2008年,在GoogleI/O大會上,谷歌提出了AndroidHAL架構圖,在同年8月18號,Android獲得了美國聯邦通信委員會(FCC)的批准,在2008年9月,谷歌正式發布了Android1.0系統,這也是Android系統最早的版本。
2009年4月,谷歌正式推出了Android1.5這款手機,從Android1.5版本開始,谷歌開始將Android的版本以甜品的名字命名,Android1.5命名為Cupcake(紙杯蛋糕)。該系統與Android1.0相比有了很大的改進。
2009年9月份,谷歌發布了Android1.6的正式版,並且推出了搭載Android1.6正式版的手機HTCHero(G3),憑藉著出色的外觀設計以及全新的Android1.6作業系統,HTCHero(G3)成為當時全球最受歡迎的手機。Android1.6也有一個有趣的甜品名稱,它被稱為Donut(甜甜圈)。
2010年2月份,Linux核心開發者GregKroah-Hartman將Android的驅動程式從Linux核心“狀態樹”(“stagingtree”)上除去,從此,Android與Linux開發主流將分道揚鑣。在同年5月份,谷歌正式發布了Android2.2作業系統。谷歌將Android2.2作業系統命名為Froyo,翻譯完名為凍優酪乳。
2010年10月份,谷歌宣布Android系統達到了第一個里程碑,即電子市場上獲得官方數字認證的Android套用數量已經達到了10萬個,Android系統的套用增長非常迅速。在2010年12月,谷歌正式發布了Android2.3作業系統Gingerbread(薑餅)。
2011年1月,谷歌稱每日的Android設備新用戶數量達到了30萬部,到2011年7月,這個數字增長到55萬部,而Android系統設備的用戶總數達到了1.35億,Android系統已經成為智慧型手機領域占有量最高的系統。
2011年8月2日,Android手機已占據全球智慧型機市場48%的份額,並在亞太地區市場占據統治地位,終結了Symbian(塞班系統)的霸主地位,躍居全球第一。
2011年9月份,Android系統的套用數目已經達到了48萬,而在智慧型手機市場,Android系統的占有率已經達到了43%。繼續在排在移動作業系統首位。在9月19號,谷歌將會發布全新的Android4.0作業系統,這款系統被谷歌命名為IceCreamSandwich(冰激凌三明治)。
2012年1月6日,谷歌AndroidMarket已有10萬開發者推出超過40萬活躍的套用,大多數的應用程式為免費。AndroidMarket應用程式商店目錄在新年首周周末突破40萬基準,距離突破30萬套用僅4個月。在2011年早些時候,AndroidMarket從20萬增加到30萬套用也花了四個月。
android開發教程
android開發視頻教程-Java語言
在國內手機市場當中,Android作業系統占據了市場份額,是毋庸置疑的王者。為市場帶來非常強勁的需求,在招聘類網站上,Android開發工程師無疑是可熱的職位。而開發愛好者想進入,面臨的第一個問題就是如何掌握Java語言。
系統架構
安卓平台
Android 有豐富的功能,因此很容易與桌面作業系統混淆。Android 是一個分層的環境,構建在 Linux 核心的基礎
上,它包括豐富的功能。UI子系統包括:
Android 包括一個構建在 WebKit 基礎上的可嵌入瀏覽器,iPhone 的 Mobile Safari 瀏覽器同樣也是以 WebKit 為
Android 提供多種連線選項,包括 WiFi、藍牙和通過蜂窩(cellular)連線的無線數據傳輸(例如 GPRS、EDGE 和 3G)。Android 應用程式中一項流行的技術是連結到 Google 地圖,以便在應用程式中顯示地址。Android 軟體棧還提供對基於位置的服務(例如 GPS)和加速計的支持,不過並不是所有的 Android 設備都配備了必需的硬體。另外還有攝像支持。
過去,移動應用程式努力向桌面應用程式看齊的兩個領域分別是圖形/媒體和數據存儲方法。Android 通過提供對 2D 和 3D 圖形的內置支持,包括 OpenGL 庫,解決了圖形方面的挑戰。由於 Android 平台包括流行的開源 SQLite 資料庫,因此緩解了數據存儲的負擔。圖 1 顯示一個簡化的 Android 軟體層次結構。
應用程式
Android以Java為程式語言,使接口到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一
個 Activity 類(class)負責創建視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程式叫做Service。兩者之間通過由ServiceConnection和AIDL連結,達到複數程式同時運行的效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。
View等同於J2ME的Displayable,程式人員可以通過 View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函式不需要再Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間通過Listener 結合在一起,每一個View都可以註冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架註冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。
Android 應用程式由一個或多個組件組成:
活動
具有可視 UI 的應用程式是用活動實現的。當用戶從主螢幕或應用程式啟動器選擇一個應用程式時,就會開始一個動作。
服務
服務應該用於任何需要持續較長時間的應用程式,例如網路監視器或更新檢查應用程式。
內容提供程式
可以將內容提供程式看作資料庫伺服器。內容提供程式的任務是管理對持久數據的訪問,例如 SQLite 資料庫。如果應用程式非常簡單,那么可能不需要創建內容提供程式。如果要構建一個較大的應用程式,或者構建需要為多個活動或應用程式提供數據的應用程式,那么可以使用內容提供程式實現數據訪問。
廣播接收器
Android 應用程式可用於處理一個數據元素,或者對一個事件(例如接收文本訊息)做出回響。Android 應用程式是連同一個AndroidManifest.xml 檔案一起部署到設備的。AndroidManifest.xml 包含必要的配置信息,以便將它適當地安裝到設備。它包括必需的類名和應用程式能夠處理的事件類型,以及運行應用程式所需的許可。例如,如果應用程式需要訪問網路 — 例如為了下載一個檔案 — 那么 manifest 檔案中必須顯式地列出該許可。很多應用程式可能啟用了這個特定的許可。這種聲明式安全性有助於減少惡意應用程式損害設備的可能性。
中介軟體
作業系統與應用程式的溝通橋樑,並用分為兩層:函式層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到螢幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,目前Skia 也是Google Chrome 的圖形引擎。
Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可通過ContentResolver類(Column)取得共用資料庫。
Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種“暫存器型態”(Register Based)的Java虛擬機,變數皆存放於暫存器中,虛擬機的指令相對減少。
Dalvik虛擬機可以有多個實例(instance), 每個Android應用程式都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程式時可達到最佳化。Dalvik 虛擬機並非運行Java位元組碼(Bytecode),而是運行一種稱為.dex格式的檔案。
硬體抽像
Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模組。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程式實現的前提下進行發展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函式(operations),並由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函式。HAL 里包含了許多的 stub(代理人)。Runtime 只要說明“類型”,即 module ID,就可以取得操作函式。
程式語言
Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達到商業套用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程式移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程式管理(Process Management),網路堆疊(Network Stack),驅動程式模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
相關專業
套用開發
隨著近年來手機的日漸普及,手機遊戲已經成為整個遊戲領域發展速度最快的部分。截至2012年年底,中國手機遊戲用戶累計規模已達2.86億,手機遊戲用戶規模較上一年度增長62.5%。武漢航海職業技術學院教改專業移動終端套用開發專業培養移動互聯高端開發型人才。移動套用開發方向將最新的移動開發技術IOS和Android進引入教學體系,通過以項目為中心,以學生為中心的教學理念,注重培養學生的實際完成項目能力和團隊合作意識,擁有在IOS和Android移動 終端上設計、開發和測試移動套用軟體和移動終端遊戲的能力。
未來,隨著移動網際網路運營環境的進一步改善,遊戲產品手機遊戲開發商研發創新能力的提升,產業鏈不斷最佳化,中國手機遊戲市場將穩步發展,市場規模將穩步提高,到2014年第四季度,手機遊戲用戶規模將突破4億。
伴隨著網際網路的迅速崛起和通訊技術的不斷進步,手機遊戲開始占據遊戲市場的主流地位,越來越多的網際網路公司投入巨資研發手遊,未來的手遊市場前景也不斷被看好。
武漢航海職業技術學院移動終端套用開發專業培養移動互聯高端開發型人才 。移動套用開發方向將最新的移動開發技術IOS和Android進引入教學體系,通過以項目為中心,以學生為中心的教學理念,注重培養學生的實際完成項目能力和團隊合作意識,擁有在IOS和Android移動終端上設計、開發和測試移動套用軟體和移動終端遊戲的能力。
android與IOS差別
安卓與IOS都是現在兩大作業系統,IOS是由蘋果公司開發的,而Android是由Google公司開發的,占據手機市場的大部分。那么Android和iOS哪個好?iOS與Android,兩個不同的開發體系結構,一個封閉一個開放,是所有開發者繞不去的大山。而我們在開發過程中,也感受到了這其中的細枝末節。今天就從開發者的角度來談談安卓和iOS有哪些區別,以及它們各自的優缺點。
一、開發環境對比
首先在開發環境的配置上,二者就表現出了極大的差異。
1、配置過程
iOS的開發環境非常完美,下載完官方提供的X-CODE之後直接安裝即可就可以開發了,而安卓則需要先下載JaVa環境,然後去windows裡面做好配置環境,然後下載eclipse這個環境再在裡面做各種複雜的配置操作,才可以配置好開發環境。從配置過程來看,iOS簡單,安卓極其複雜。
2、跨平台適應性
蘋果的開發環境必須用mac電腦的macos系統才可以開發iOS,而windows是無法做iOS開發的,除非做虛擬機,但
是真正做iOS開發的時候是不可能用虛擬機搭建mac os來做開發,這樣速度會及其緩慢。無法開發任何大型系統。而安卓雖然安裝起來複雜,但是具有很好的適應性,不僅能夠在windows上開發,還能在mac系統上開發,完全沒有任何問題。
3、真機調試
安卓開發者只需要打開調試開關然後就可以調試手機了,但是iOS需要證書、描述檔案、APPLEID、開發者賬號,搞半天才可以進行調試,過程實在吐血。在開發環境的對比上,蘋果表現出了強硬的態度:“只準用我的”,而安卓則表現出了很強的適應性,順勢而為。
二、推送機制問題
在推送問題上,由於iOS和安卓推送機制各自為政,所以開發者更希望有一個大一統的推送平台來管理這二者。同時加上iOS和安卓在國內推送上的水土不服,也給了第三方推送機會,而在第三方推送正好抓住了這個機會。
三、適配尺寸,版本問題
雖說蘋果的真機調試比較複雜,但是蘋果一共需要適配的機型也就兩種尺寸,3.5和4.0英寸並且iOS的版本升級率遠遠大於安卓,所以在適配上,iOS的優勢就明顯了,並且庫克在發布會上也拿系統升級率向安卓開火,安卓在這塊確實沒做好。
適配的問題上iOS讓開發者感受到了iOS的魅力。同時,在版本和尺寸的配上,安卓機亂糟糟的生態讓開發者們不得不只去選擇主流的機型去滿足而無法顧及更多邊緣需求。
四、套用商店提交
由於安卓是開放生態,所以自然套用商店也是一個開放而混亂的生態環境。在套用的提交上,iOS的提交雖然極其麻煩,但是只要提交過一次就可以大獲全勝,但是安卓則不同,由於其開放而混亂的超級生態,導致我們提交上的種種麻煩。
知識體系
1、Unix/Linux平台技術:基本命令,Linux下的開發環境
2、企業級資料庫技術:SQL語言、SQL語句調優、Oracle資料庫技術
3、Java 語言核心技術:Java語言基礎、Java面向對象編程、JDK核心API、Java集合框架、Java網路編 程、JavaI/O編程、Java多執行緒編程、Java異常機制、Java安全、JDBC、XML
4、軟體工程和設計模式:軟體工程概述、配置管理及SVN、UML、基本設計模式
5、Android套用開發基礎:Android開發平台、Eclipse+ADT開發環境、AVD及感測模擬器調試、Android核心組件、Android常用組件、Android高級組件、檔案及網路訪問、SQLite資料庫編程、後台服務編程
6、網際網路核心技術: HTML、CSS、JavaScript、JQuery、Ajax套用
7、Android高級套用開發:音頻\視頻\攝像頭、網際網路套用、GPS和位置服務、Google Map、2D\3D繪製、感測器開發、遊戲開發、電話及SMS服務、網路\Bluetooth\Wi-Fi等。
8、Android系統級開發:移植、驅動、NDK(C方向)。
9、JavaEE核心技術:Servlet核心技術、JSP核心技術、Struts、Spring、Hibernate框架。
學習內容
Android基礎階段:平台架構特性(JAVA/C) Market/應用程式組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 相關資源訪問/資源製作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深層實現
Android進階初級:組件Widget/ 選單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理, SQLite /SharedPreferences/File詳解 多媒體Audio/Video/Camera 詳解
Android進階高級:藍牙/WIFI SMS/MMS 套用實現 深層次解析GPS原理,實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 套用實現