開發教程
android開發視頻教程-Java語言
在國內手機市場當中,Android作業系統占據了市場份額,是毋庸置疑的王者。為市場帶來非常強勁的需求,在招聘類網站上,Android開發工程師無疑是可熱的職位。而開發愛好者想進入,面臨的第一個問題就是如何掌握Java語言。
Java程式語言在市面上流行的語言當中,屬於語法簡單的一種,但包含的面向對象思想博大精深,讓人頭痛。
簡介
Google公司在2007年11月5日正式公布這個作業系統,2008年,Patrick Brady於Google I/O演講“Anatomy & Physiology of an Android”,並提出的Android HAL架構圖。HAL以*.so檔的形式存在,可以把Android framework與Linux kernel隔開。
名稱來源
Android一詞最早出現於法國作家利爾
亞當在1886年發表的科幻小說《未來夏娃》中。他將外表像人的機器起名為Android。
2010年2月3日,
Linux核心開發者Greg Kroah-Hartman將Android的驅動程式從Linux核心“狀態樹”(“staging tree”)上除去,從此,Android與Linux核心開發分道揚鑣。
Android介紹
Android 是Google開發的基於Linux平台的開源
手機作業系統。它包括作業系統、用戶界面和應用程式—— 行動電話工作所需的全部軟體,而且不存在任何以往阻礙移動產業創新的專有權障礙。谷歌與
開放手機聯盟合作開發了 Android,這個聯盟由包括中國移動、摩托羅拉、高通、宏達和
T-Mobile在內的 30 多家技術和無線套用的領軍企業組成。通過與運營商、設備製造商、開發商和其他有關各方結成深層次的合作夥伴關係,我們希望藉助建立標準化、開放式的行動電話軟體平台,在移動產業內形成一個開放式的生態系統。我們認為此舉必將推進更好、更快的創新,為移動用戶提供不可預知的套用和服務。
Android作為谷歌企業戰略的重要組成部分,將進一步推進"隨時隨地為每個人提供信息"這一企業目標的實現。我們發現,全球為數眾多的行動電話用戶從未使用過任何基於Android的電話。谷歌的目標是讓(移動通訊)不依賴於設備甚至平台。出於這個目的,Android將補充,而不會替代谷歌長期以來奉行的移動發展戰略:通過與全球各地的手機製造商和移動運營商結成合作夥伴,開發既有用又有吸引力的移動服務,並推廣這些產品。
開放手機聯盟的成立和Android的推出是對現狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,我們認為全球移動用戶從中能獲得的潛在利益是值得付出這些努力的。如果你也是一個開發者,並對我們的想法感興趣,就請再給我們一星期的時間,屆時谷歌便能提供SDK了。如果你是一名移動用戶,只需再等一段時間,我們的一些合作夥伴計畫在 2008 年下半年推出基於Android平台的電話產品。如果你已經擁有一部你了解並喜愛的電話,確保你已經安裝谷歌
手機地圖、Gmail以及其他一些專為你的手機開發的精彩套用。谷歌將繼續努力,讓這些服務變得更好,同時也將添加更有吸引力的特性、套用和服務。
發展歷史
2003年10月,Andy Rubin等人創建Android公司,並組建Android團隊。
2005年8月17日,Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁,繼續負責Android項目。
2007年11月5日,谷歌公司正式向外界展示了這款名為Android的作業系統,並且在這天谷歌宣布建立一個全球性的聯盟組織,該組織由34家手機製造商、軟體開發商、電信運營商以及晶片製造商共同組成,並與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統,這一聯盟將支持谷歌發布的手機作業系統以及套用軟體,Google以Apache免費開源許可證的授權方式,發布了Android的原始碼。
2008年,在GoogleI/O大會上,谷歌提出了Android HAL架構圖,在同年8月18號,Android獲得了美國聯邦通信委員會(FCC)的批准,在2008年9月,谷歌正式發布了Android 1.0系統,這也是Android系統最早的版本。
2009年4月,谷歌正式推出了Android 1.5這款手機,從Android 1.5版本開始,谷歌開始將Android的版本以甜品的名字命名,Android 1.5命名為Cupcake(紙杯蛋糕)。該系統與Android 1.0相比有了很大的改進。
2009年9月份,谷歌發布了Android 1.6的正式版,並且推出了搭載Android 1.6正式版的手機HTC Hero(G3),憑藉著出色的外觀設計以及全新的Android 1.6作業系統,HTC Hero(G3)成為當時全球最受歡迎的手機。Android 1.6也有一個有趣的甜品名稱,它被稱為Donut(甜甜圈)。
2010年2月份,Linux核心開發者Greg Kroah-Hartman將Android的驅動程式從Linux核心“狀態樹”(“staging tree”)上除去,從此,Android與Linux開發主流將分道揚鑣。在同年5月份,谷歌正式發布了Android 2.2作業系統。谷歌將Android 2.2作業系統命名為Froyo,翻譯完名為凍優酪乳。
2010年10月份,谷歌宣布Android系統達到了第一個里程碑,即電子市場上獲得官方數字認證的Android套用數量已經達到了10萬個,Android系統的套用增長非常迅速。在2010年12月,谷歌正式發布了Android 2.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號,谷歌將會發布全新的Android 4.0作業系統,這款系統被谷歌命名為Ice Cream Sandwich(冰激凌三明治)。
2012年1月6日,谷歌Android Market已有10萬開發者推出超過40萬活躍的套用,大多數的應用程式為免費。Android Market應用程式商店目錄在新年首周周末突破40萬基準,距離突破30萬套用僅4個月。在2011年早些時候,Android Market從20萬增加到30萬套用也花了四個月。
系統架構
應用程式
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。
中介軟體
作業系統與應用程式的溝通橋樑,並用分為兩層:函式層(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的中間層多以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工作的一個工具。
知識體系
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/感測器/手勢 套用實現