系統簡介linux
Android是基於Linux開放性內核的操做系統,是Google公司在2007年11月5日公佈的手機操做系統。早期由原名爲"Android"的公司開發,谷歌在2005年收購"Android.Inc"後,繼續進行對Android系統開發運營,它採用了軟件堆層(software stack,又名軟件疊層)的架構,主要分爲三部分。底層Linux內核只提供基本功能,其餘的應用軟件則由各公司自行開發,部分程序以Java編寫。 android
Android應用程序是採用Java語言開發,傳統的Java語言運行是經過JVM將源文件編譯成Java字節碼運行,可是Android雖然是Java語言開發,可是字節碼並非最終的運行格式,而且因爲版本問題和移動設備電量等問題,Google自行開發了一個虛擬機運行Android程序,這個虛擬機稱爲Dalvik。當完成源代碼的開發後,首先會將Java源碼轉換爲字節碼,而後經過DX工具,將字節碼文件轉換了.dex的文件,最後該dex格式的文件在Dalvik上運行。數據庫
從上圖中能夠看出,Android系統架構爲四層結構,從上層到下層分別是應用程序層、應用程序框架層、系統運行庫層以及Linux內核層,分別介紹以下:瀏覽器
1)應用程序層安全
Android平臺不單單是操做系統,也包含了許多應用程序,諸如SMS短信客戶端程序、電話撥號程序、圖片瀏覽器、Web瀏覽器等應用程序。這些應用程序都是 用Java語言編寫的,而且這些應用程序都是能夠被開發人員開發的其餘應用程序所替換,這點不一樣於其餘手機操做系統固化在系統內部的系統軟件,更加靈活和個 性化。架構
2)應用程序框架層框架
應用程序框架層是咱們從事Android開發的基礎,不少核心應用程序也是經過這一層來實現其核心功能的,該層簡化了組件的重用,開發人員能夠直接使用其提 供的組件來進行快速的應用程序開發,也能夠經過繼承而實現個性化的拓展。ide
a) Activity Manager(活動管理器)函數
管理各個應用程序生命週期以及一般的導航回退功能工具
b) Window Manager(窗口管理器)
管理全部的窗口程序
c) Content Provider(內容提供器)
使得不一樣應用程序之間存取或者分享數據
d) View System(視圖系統)
構建應用程序的基本組件
e) Notification Manager(通告管理器)
使得應用程序能夠在狀態欄中顯示自定義的提示信息
f) Package Manager(包管理器)
Android系統內的程序管理
g)Telephony Manager(電話管理器)
管理全部的移動設備功能
h)Resource Manager(資源管理器)
提供應用程序使用的各類非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等
i)Location Manager(位置管理器)
提供位置服務
j)XMPP Service(XMPP服務)
提供Google Talk服務
3)系統運行庫層
從圖中能夠看出,系統運行庫層能夠分紅兩部分,分別是系統庫和Android運行時,分別介紹以下:
a)系統庫
系統庫是應用程序框架的支撐,是鏈接應用程序框架層與Linux內核層的重要紐帶。其主要分爲以下幾個:
Ø Surface Manager:
執行多個應用程序時候,負責管理顯示與存取操做間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。
Ø Media Framework:
多媒體庫,基於PacketVideo OpenCore;支持多種經常使用的音頻、視頻格式錄製和回放,編碼格式包括MPEG四、MP三、H.26四、AAC、ARM。
Ø SQLite:
小型的關係型數據庫引擎
Ø OpenGL|ES:
根據OpenGL ES 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內核。
學習路線: