背景相關與系統架構分析


1.Android背景與目前的狀況

Android系統是由Andy Rubin創建的,後來被Google收購了;最早的版本是:Android 1.1版本 而現在最新的版本是今年5.28,Google I/O大會上推出的Android M,有趣的是Android系統的命名都是以點心來命名的,下述表是15個Android版本名稱,對應API號以及發布時間!

##Android 1.6:Donut:甜甜圈42009.9.15Android 2.0/2.0.1/2.1:Eclair:鬆餅#5/6/72009.10.26Android 2.2/2.2.1:Froyo:冷凍優格8#2010.5.20Android 2.3:Gingerbread:薑餅92010.12.7Android 3.0:Honeycomb:蜂巢112011.2.2Android 3.1:Honeycomb:蜂巢122011.5.11Android 3.2:Honeycomb:蜂巢132011.7.13Android 4.0:Ice Cream Sandwich:冰淇淋三文治142011.10.19Android 4.1:Jelly Bean:果凍豆162012.6.28Android 4.2:Jelly Bean:果凍豆172012.10.30#Android 4.3:Jelly Bean:果凍豆182013.7.25Android 4.4:KitKat:奇巧巧克力192013.11.01Android 5.0:Lollipop:棒棒糖21#2014.10.16Android M:預覽版
系統版本名稱API版本號碼#發佈時間
Android 1.5:Cupcake:紙杯蛋糕32009.4.30
###22#######2015.5.28############

好了,除了上面這些公開版本外,當然還有一些其他的版本,截止2015.1,各個版本的市佔率如下:


Android系统份额分布图(截止2015年1月)

##看完上面的訊息,我們可能有這樣的一個問題: 那麼多的系統版本,我們開發的時候要針對哪個版本來開發呢? 這就是作為一個Android必須面對的Android的"碎片化"問題了,而這個問題又分為兩個: ①系統碎片化:我們開發App時可能需要做到低版本相容,例如,最低相容於2.3版本;由於各種Rom定制的盛行,國人都喜歡對原生系統做一些更改,這導致了在原生系統上可行,而在定制Rom上不可行的問題,比如相機調用~ ②螢幕碎片化:市面上各種螢幕尺寸的手機,4.3寸,4.5寸,4.7寸,5.0寸,5.3寸...等等,除了手機外,還有Android平板,所以開發時我們可能要處理這個螢幕適配的問題,當然,剛學我們並不需要去考慮這些複雜的東西,後續實際開發我們再來深究!

2.Android系統特性與平台架構

系統特性:

  • 應用程式框架支援

    元件的重複使用與替換(app發佈時遵守了框架的約定,其他app也可以使用該模組)

  • #Dalvik虛擬機:專門為行動裝置最佳化 -整合的瀏覽器:開源的WebKit引擎

  • #SQLite結構化的資料儲存

  • 優化的圖形庫,多媒體支援,GSM電話技術,藍牙等

  • #採用

    軟體疊層方式建構

#平台架構圖:

Android平台架构图

架構的簡單理解:

  1. Application(應用程式層)我們一般說的應用層的開發就是在這個層次上進行的,當然包括了系統內建的一組應用程序,使用的是Java語言

  2. Application Framework(應用程式框架層)無論系統內建或我們自己寫的App,都需要使用到這層,例如我們想弄來電黑名單,自動掛斷電話,我們就需要用到電話管理(TelephonyManager) 透過該層我們就可以很輕鬆的實作掛斷操作,而不需要關心底層實作

  3. Libraries(庫) + Android Runtime(Android運行時)Android為我們提供了一組C/C++函式庫,為平台的不同元件所使用,例如媒體框架;而Android Runtime則由Android核心庫集+ Dalvik虛擬機構成,Dalvik虛擬機是針對行動裝置的虛擬機,它的特點:不需要很快的CPU計算速度和大量的記憶體空間;而每個App都單獨地運行在單獨的Dalvik虛擬機內每個app對於一條Dalvik進程)而他的簡單運行流程如:Dalvik的运行流程

  4. ##Linux核心這裡就是涉及底層驅動的東西了,一些系統服務,比如安全性,內存管理以及進程管理等

3.本節小結:

本節對Android的歷史背景以及現狀進行了了解,然後簡單分析了Android的系統特性以及系統架構,這些概念性的東西,我們了解了解即可,而下一節我們將開始Android環境的搭建!


#