1. 說到Android的架構,你們第一眼想到的可能都是下面這張衆所周知的圖java
(1) 應用程序層(applications):應用程序層主要是一些核心的應用程序包,好比電話,短信,地圖,電子郵件等等。對應的源碼包在 packages/apps 下,裏面包含了各類應用程序的源碼linux
(2) 應用框架層(application framework):這層是Android應用開發的基礎,包含了視圖管理器,電話管理器,等等,也提供了Android的四大組件。這個層主要就是提供了相似與各類組件使用的API。對應的源碼直接在 frameworks 下,裏面包含了base包,包含了framework的一些基礎的代碼,大量使用C++編寫android
(3) 系統庫層:該層主要由兩部分組成,一個是系統庫,一個是android運行時。安全
android運行時比較簡單,主要包括了核心庫以及Dalvik虛擬機,核心庫包含了大多數java語言須要的功能函數,同時包含了Android的核心庫。Dalvik虛擬機主要完成了對生命週期的管理,線程的管理,堆棧的管理,垃圾回收機制以及相應的安全和異常的管理網絡
系統庫主要包含了9個子系統,就是上圖所示的系統架構
android運行時中的core libraries對應的源碼包在根目錄下的libcoreapp
android下的Dalvik虛擬機對應的源碼包在根目錄下的dalvik框架
系統庫對應的源碼包是根目錄下的bionicionic
(4) linux內核層:Android的核心繫統服務都是依賴與linux內核的,好比內存,進程等的管理,驅動模型以及網絡協議棧。內核層也是硬件和軟件的抽象層,一些驅動,好比顯卡,鍵盤,攝像頭,wifi等等函數
該層對應的源碼是在根目錄下的kernel中
硬件抽象層(HAL)則對應的是根目錄下的hardware
更加詳細的目錄能夠去看這個博客:http://blog.csdn.net/fengliang191/article/details/40678731