標籤:
一、Andriod是什嗎?
Android系統是Google開發的一款開源移動OS,Android中文名被國內使用者俗稱“安卓”。Android作業系統基於Linux核心設計,使用了Google公司自己開發的Dalvik Java虛擬機器。Android作業系統已經成為全球最大的智能手機作業系統。
1)、開放性
Android完全開源,且該平台從底層作業系統到上層的使用者介面和應用程式都不存在任何阻礙產業創新的專有權障礙。同時開源的最大好處是,使得Android平台會擁有越來越壯大的開發人員隊伍,並且隨著使用者與應用的日益豐富,必然會使得Android這個嶄新的平台走向成熟與穩定。
2)、廠商支援
Android陣營
HTC、三星、摩托羅拉、LG、索愛、華碩、宏碁、華為、中興、夏普、聯想、魅族等數百家巨頭推出了基於Android作業系統的智能手機或平板電腦。
Symbian陣營
目前僅有諾基亞一家支援,主要有N系列,E系列和X系列的手機。
iOS陣營
僅有蘋果公司一家支援,主要有iPhone和iPad
WebOS陣營
僅有RIM黑莓公司一家支援
類似Android陣營的還有Windows Phone 7,但由於WP7並不是開源系統很多廠商沒有機會參與,僅有幾個手機製造商支援,同時沒有相對應的平板電腦作業系統,Android123作為多年資深移動開發人員,通過SDK對比,Windows Phone 7 和 Android有很大的差距,從目前微軟的戰略和封閉的API,可以說很難和Android抗衡。
3)、Dalvik虛擬機器
Dalvik虛擬機器是Google開發的一款Java VM,相對於Sun VM來說對檔案作了最佳化,比如將多個class檔案合并為一個dex檔案,Android應用程式主要由Java語言開發,但Google提供了系統層級的Java API,這和非智能手機支援的Sun J2ME Java VM有很大的不同,我們可以看到Android軟體可以支援來電防火牆顯示歸屬地這樣的底層應用,這些是Windows Phone 7 和 iPhone所不具備的。
4)、多元化
目前Android系統除了應用在智能手機外,還有平板電腦以及智能電視,目前摩托羅拉、三星、LG、HTC、宏碁、華碩等公司均推出了平板電腦,同時國內的創維、TCL等廠商已經推出了Android智能電視,最終將會有更多的智能家電、機頂盒、車載電子裝置的出現。
5)、應用程式間的無界限
Android打破了應用程式間的界限,開發人員可以將在自己開發的程式與本地的連絡人、日曆、位置資訊等很好的聯絡起來。此外,應用程式可以自申明其功能可以被其他應用程式所使用。
6)、緊密結合Google應用
全球最大的線上搜尋服務商Google在過去的10年中,已經逐漸的滲透進人們的日常生活中了。人們不再僅僅滿足於使用電腦終端來享受諸如Gamil、Google地圖、線上翻譯等線上服務,PC到移動終端的延伸成了一種必然的趨勢。而Android與Google服務的無縫整合,則可以十足的滿足人們的願望。
二、Android架構
從中可以看出,Android系統架構為四層結構,從上層到下層分別是應用程式層、應用程式架構層、系統運行庫層以及Linux核心層,分別介紹如下:
1)應用程式層
Android平台不僅僅是作業系統,也包含了許多應用程式,諸如SMS簡訊用戶端程式、電話撥號程式、圖片瀏覽器、Web瀏覽器等應用程式。這些應用程式都是 用Java語言編寫的,並且這些應用程式都是可以被開發人員開發的其他應用程式所替換,這點不同於其他手機作業系統固化在系統內部的系統軟體,更加靈活和個 性化。
2)應用程式架構層
應用程式架構層是我們從事Android開發的基礎,很多核心應用程式也是通過這一層來實現其核心功能的,該層簡化了組件的重用,開發人員可以直接使用其提供的組件來進行快速的應用程式開發,也可以通過繼承而實現個人化的拓展。
a)Activity Manager(Active Manager)
管理各個應用程式生命週期以及通常的導航回退功能
b)Window Manager(視窗管理器)
管理所有的視窗程序
c)Content Provider(內容提供器)
使得不同應用程式之間存取或者分享資料
d)View System(視圖系統)
構建應用程式的基本組件
e)NotificationManager(通告管理器)
使得應用程式可以在狀態列中顯示自訂的提示資訊
f)Package Manager(包管理器)
Android系統內的程式管理
g)TelephonyManager(電話管理器)
管理所有的行動裝置功能
h)Resource Manager(資源管理員)
提供應用程式使用的各種非代碼資源,如本地化字串、圖片、布局檔案、顏色檔案等
i)LocationManager(位置管理器)
提供位置服務
j)XMPP Service(XMPP服務)
提供GoogleTalk服務
3)系統運行庫層
可以看出,系統運行庫層可以分成兩部分,分別是系統庫和Android運行時,分別介紹如下:
a)系統庫
系統庫是應用程式架構的支撐,是串連應用程式架構層與Linux核心層的重要紐帶。其主要分為如下幾個:
Surface Manager:
執行多個應用程式時候,負責管理顯示與存取操作間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。
Media Framework:
多媒體庫,基於PacketVideo OpenCore;支援多種常用的音頻、視頻格式錄製和回放,編碼格式包括MPEG4、MP3、H.264、AAC、ARM。
SQLite:
小型的關係型資料庫引擎
OpenGL|ES:
根據OpenGLES 1.0API標準實現的3D繪圖函數庫
FreeType:
提供點陣字與向量字的描繪與顯示
WebKit:
一套網頁瀏覽器的軟體引擎
SGL:
底層的2D圖形渲染引擎
SSL:
在Andorid上通訊過程中實現握手
Libc:
從BSD繼承來的標準C系統函數庫,專門為基於embedded linux的裝置定製
b)Android運行時
Android應用程式時採用Java語言編寫,程式在Android運行時中執行,其運行時分為核心庫和Dalvik虛擬機器兩部分。
核心庫
核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、android.media等等。
Dalvik虛擬機器
Android程式不同於J2me程式,每個Android應用程式都有一個專有的進程,並且不是多個程式運行在一個虛擬機器中,而是每個Android程式都有一個Dalivik虛擬機器的執行個體,並在該執行個體中執行。Dalvik虛擬機器是一種基於寄存器的Java虛擬機器,而不是傳統的基於棧的虛擬機器,並進行了記憶體資源使用的最佳化 以及支援多個虛擬機器的特點。需要注意的是,不同於J2me,Android程式在虛擬機器中執行的並非編譯後的位元組碼,而是通過轉換工具dx將Java位元組碼轉成dex格 式的中間碼。
4)Linux核心層
Android是基於Linux2.6核心,其核心系統服務如安全性、記憶體管理、進程管理、網路協議以及驅動模型都依賴於Linux核心。
5)特別的Apps
在圖中有些基於Dalvik虛擬機器的Apps看起來像是Android的一部分,其實是由Google提供,這些應用程式套件括Dialer、Contact、Calendar、Gmail和Chat等。它們中的絕大部分是開源並可複用的。只有少部分例外,比如Google Maps和Android Market.
轉自:連結
Android系統介紹與架構(轉)