Android 基本架構(gòu)
android的系統(tǒng)架構(gòu)舵盈,說簡單點,可以用一張圖來表示,說復(fù)雜點掐松,可以寫成幾千頁的書,這里只做簡單介紹粪小。
? ? ? ?這是一張講解android架構(gòu)的經(jīng)典示意圖大磺。它將android大致分為四層,即Linux內(nèi)核層探膊,庫和運行時杠愧,F(xiàn)ramework層和應(yīng)用層。
? ? ? ?android 的體系架構(gòu)鼓勵系統(tǒng)組件重用逞壁,共享組建化間的數(shù)據(jù)流济,并且定義組件間訪問權(quán)限控制‰绱常可以說绳瘟,這些層次結(jié)構(gòu)既是相互獨立,又是相互聯(lián)系姿骏。
Applications(應(yīng)用層)
所有安裝在手機(jī)上的應(yīng)用程序都是屬于這一層的糖声,比如系統(tǒng)自帶的聯(lián)系人、短信等程序分瘦,或者是你從Google Play上下載的小游戲蘸泻,當(dāng)然還包括你自己開發(fā)的程序。
android 會同一些列核心的應(yīng)用程序包一起發(fā)布嘲玫,該應(yīng)用層包括HOME客戶端悦施,SMS短信息,瀏覽器去团,聯(lián)系人管理程序等等歼争,所有的應(yīng)用程序都是使用java編寫的。(不久前的2017谷歌大會宣布開始支持Kotlin的編寫渗勘,未來可能就是用kotlin編寫的了)
Framework
這一層主要就是提供了構(gòu)建應(yīng)用程序時可能用到的各種API沐绒,android自帶的一些核心應(yīng)用就是使用這些API完成的,開發(fā)者也可以通過使用這些API來構(gòu)建自己的應(yīng)用程序旺坠。
1.通過提供開放的開發(fā)平臺乔遮,android使開發(fā)者能夠編制及其豐富和新穎的應(yīng)用程序。開發(fā)者可以自由的利用設(shè)備硬件優(yōu)勢取刃,訪問位置信息蹋肮、運行后臺服務(wù)出刷、設(shè)置鬧鐘、向狀態(tài)欄添加通知等等坯辩,很多很多馁龟。
2.開發(fā)者可以完全使用核心應(yīng)用程序所使用的框架API。應(yīng)用程序的體系結(jié)構(gòu)旨在簡化組件的重用漆魔,在任何時候都能發(fā)布他的功能且任何其他應(yīng)用程序可以使用這些功能(需要服從框架執(zhí)行的安全限制)坷檩。這一機(jī)制允許用戶替換組件。
Libraries
這一層通過一些C/C++庫來為Android系統(tǒng)提供了主要的特性支持改抡。如SQLite庫提供數(shù)據(jù)庫的支持矢炼,OpenGL|ES庫提供了3D繪圖的支持,Webkit庫提供了瀏覽器內(nèi)核的支持等阿纤。
同樣句灌,在這一層中還有android運行時的庫,它主要提供了一些核心庫欠拾,能夠允許開發(fā)者使用Java語言來編寫Android應(yīng)用胰锌。另外,android運行時庫還包含了Dalvik 虛擬機(jī)(5.0系統(tǒng)之后改為ART運行環(huán)境)藐窄,它使得每一個android應(yīng)用都能在運行獨立的進(jìn)程當(dāng)中资昧,并且擁有一個自己的Dalvik虛擬機(jī)實例耙考。相比較于java虛擬機(jī)轩褐,Dalvik是專門為移動設(shè)備定制的,它針對于手機(jī)內(nèi)存说贝、CPU性能有限等做了優(yōu)化處理东揣。
Linux 內(nèi)核層
? ? ? ?android系統(tǒng)是基于Linux內(nèi)核的践惑,這一層為android設(shè)備的各種硬件提供了底層的驅(qū)動,如顯示驅(qū)動嘶卧,音頻驅(qū)動尔觉,照相機(jī)驅(qū)動,藍(lán)牙驅(qū)動芥吟,WIFI驅(qū)動侦铜、電源管理等等。