什麼是AndroidAndroid是基於Linux內核的軟件平台和操作系統,是Google在2007年11月5日公佈的手機系統平台,早期由Google開發,後由開放手機聯盟(英語:Open Handset Alliance)(Open Handset Alliance)開發。
它採用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。
低層以Linux內核工作為基礎,只提供基本功能;
其他的應用軟件則由各公司自行開發,以Java作為編寫程序的一部分。
另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟。
Android在未公開之前常被傳聞為Google電話或gPhone。
大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟件平台。到了2010年1月,Google始發表自家品牌手機電話的Nexus One。歷史
按這裡可在新視窗開啟 或 按 CTRL+Mouse捲動 可進行放大/縮細

按這裡可在新視窗開啟 或 按 CTRL+Mouse捲動 可進行放大/縮細
第一台上市的 Android 手機開發Google於2005年並購了成立僅22個月的高科技企業Android,展開了短信、手機檢索、定位等業務,同時基於Linux的通用平台也進入了開發。2008 Patrick Brady於Google I/O 演講「Anatomy & Physiology of an Android」,並提出的 Android HAL 架構圖。HAL 以 ●.so 檔的形式存在,可以把 Android framework 與 Linux kernel 隔開。
    公佈前的傳聞Google的東南亞銷售與營運常務董事Richard Kimber曾說:"At this point in time, we are very focused on the software, not the phone.(目前我們完全專注於軟件而非電話)"。可是Google並未正式否認正在製作電話的傳聞,Google可能與一家硬件生產商合作創作 Google Phone。傳言指出Google Phone將提供完全免費的服務,Google會通過廣告獲取收益。Google Phone的發佈日期預期為2009年。LG宣佈將於2007年第二季開始在其手提電話產品中安裝Google的軟件。升級Android系統今後將繼續每半年一次的升級步伐,分別定在每年的夏天和年終。每代Android系統都將以食物命名,
比如1.5版叫做 Cupcake(紙杯蛋糕),   1.6版為Donut(甜甜圈),然後是Eclair(法式奶油夾心甜點)和Flan(水果餡餅)。
Donut將把社交網絡功能作為升級重點,在「手機的各種體驗中」都增加社交網絡元素。對手機行業的影響已經與[Sony Ericsson]、[HTC]、NTT DoCoMo、KDDI、Motorola等世界移動領域34家公司於免費提供達成一致。今後對於移動通訊的影響勢必會進一步體現出來。但是如此廣泛公司的同盟是否能夠有效運作及以持久值得拭目以待。發佈1.5 (Cupcake)基於Linux Kernel 2.6.27         
   2009年4月30日,官方1.5版本(Cupcake)的Android發佈。主要的更新如下:    ● 拍攝/回放視頻,並支持上傳到youtube    ● 支持立體聲藍牙耳機,同時改善自動配對性能    ● 最新的採用WebKit技術的瀏覽器,支持拷貝/粘帖和頁面中搜索    ● GPS性能大大提高    ● 屏幕虛擬鍵盤    ● 主屏幕增加音樂播放器和相框widgets    ● 應用程序自動隨著手機旋轉    ● 短信,Gmail,日曆,瀏覽器的用戶界面大幅改善,比如說Gmail現在可以批量刪除郵件了    ● 相機啟動速度加快,拍攝圖片可以直接上傳到picasa    ● 來電照片顯示1.6 (Donut)基於Linux Kernel 2.6.29         
   2009年9月15日, 1.6(Donut)版本SDK發佈。主要的更新如下:    ● 完全重新設計的Android Market    ● 手勢支持    ● 支持CDMA網絡    ● 文字轉語音系統(TXT-2-speech)    ● 快速搜索框    ● 全新的拍照界面    ● 應用程序耗電查看    ● 支持VPN    ● 支持更多的屏幕分辨率    ● 支持OpenCore2媒體引擎    ● 新增面向視覺或聽覺困難人群的易用性插件2.0/2.0.1/2.1(Eclair)基於Linux Kernel 2.6.29        
  2009年10月26日, 2.0(Eclair)版本SDK發佈。主要的更新如下:[12]    ● 優化硬件速度    ● "Car Home"程序    ● 支持更多的屏幕分辨率    ● 重整界面    ● 新的瀏覽器的用戶界面和支持HTML5    ● 新的聯繫人名單    ● 更好的白色/黑色背景比率    ● 改進Google Maps 3.1.2    ● 支持Microsoft Exchange    ● 支持內置相機閃光燈    ● 數字變焦    ● 改進的虛擬鍵盤● 藍牙2.1Android的代號序列會按甜點名字中首個英文字母(C、D、E、F)的排列順序。
   下一個版本的Android將會命名為Froyo(凍酸奶,基於Linux Kernel 2.6.32)。Froyo 之後的版本的Android將會命名為Gingerbread(姜餅,基於Linux Kernel 2.6.33/34)。
按這裡可在新視窗開啟 或 按 CTRL+Mouse捲動 可進行放大/縮細
應用程序以Java為編程語言,使Android從接口到功能,都有層出不窮的變化,其中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的多媒體數據庫採用SQLite3數據庫系統。數據庫又分為共用數據庫及私用數據庫。用戶可通過ContentResolver類 (Column)取得共用數據庫。Android的中間層多以Java 實現,並且採用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。
Dalvik虛擬機是一種「寄存器型態」(Register Based)的Java虛擬機,變量皆存放於寄存器中,虛擬機的指令相對減少。Dalvik虛擬機可以有多個instance, 每個Android應用程序都用一個自屬的Dalvik虛擬機來運行,讓系統在運行程序時可達到優化。
Dalvik 虛擬機並非運行Java Bytecode,而是運行一種稱為.dex格式的文件。硬件抽像層Android HAL 是為了將 Android framework 與 Linux kernel 隔開,降低對 Linux kernel 的依賴,以達成kernel independent。Android HAL 目前以 HAL stub 的形式存在,本身是.so 檔,是一種 proxy 的概念。Android runtime 向 HAL 取得 stub 的 operations,再以 callback 的方式操作函數。
操作系統Android 是運行於 Linux kernel之上,但並不是GNU Linux。因為在一般GNU/Linux 裡的功能,Android 大都沒有支持,包括Cairo, X11, Alsa, FFmpeg, GTK, Pango, Glibc等都移除掉了。Android又以bionic 取代Glibc, 以Skia 取代Cairo, 再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除關於GNU Copyleft 的限制,例如Android將驅動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程序管理(Process Management),網絡堆棧(Network Stack),驅動程序模型(Driver Model)等。
按這裡可在新視窗開啟 或 按 CTRL+Mouse捲動 可進行放大/縮細
藍色部分:應用程序綠色及黃色部分:中間件 紅色部分:操作系統內核

[ 本貼最後由 hrtd 於 2011-11-24 10:37 編輯 ]

arrow
arrow
    全站熱搜

    紫蓮の翼 發表在 痞客邦 留言(0) 人氣()