一、系統架構
1.1 應用層:
主要是一些系統應用以及一些非系統應用,用於與用戶直接進行交互的
1.2應用框架層:
對開發人員提供一些開發的API,包括一些系統應用;其中包括一些Managers:
Activity Manager、Location Manager、Package Manager、Notification Manager、Resource Manager 、Window Manager、Content Providers 、View System
1.3系統運行庫層(Native)
C/C++程序庫
能被Android 系統中的不同組件所使用,並通過應用程序框架爲開發提供服務
Sqlite
Android 運行時庫
又分爲核心庫
和ART(Android Runtime,Android5.0後取代了Dalvik虛擬機)
;
ART > DVM >JVM
①相比於 JVM,DVM(Dalvik 虛擬機)是專門爲移動開發定製的,因爲它允許在有限的內存內,同時允許多個 Dalvik虛擬機的實例,並且每一個Dalvik應用作爲一個獨立的Linux進程執行,而獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉;
②DVM中的應用每次運行的時候,都需要通過JIT(Just In Time)即時編譯器,將字節碼轉換爲機器碼,這樣使得運行的效率降低;
③ART中,系統在安裝應用時會進行一次預編譯AOT(Ahead of Time),將字節碼預先編譯成機器碼存儲在本地,這樣每次運行的時候都不需要執行編譯了,運行效率大大提高;
1.4硬件抽象層(HAL)
位於操作系統內核層和硬件電路層之間的接口層,目的在於將硬件抽象化,爲了保護硬件廠商的知識產權,隱藏了特定平臺的硬件接口細節,爲操作系統提供虛擬硬件平臺,使其具有硬件無關性,可在多個平臺上進行移植;
1.5Linux內核層(Linux Kernel)
Android核心系統服務基於 Linux內核層,在此基礎上又添加了部分Android專用的驅動。系統的安全性、內存管理、進行管理、網絡協議棧、驅動模型等都依賴於該內核;
二、源碼閱讀:
1.在線閱讀:
點擊版本進入對應的頁面,比如8.0:
比如在framework中搜索 MediaPlayer.java
2.本地閱讀:
下載源碼到本地後,可以使用Android Studio、Eclipse、Sublime、Source Insight(推薦)
這裏使用Source Insight
http://www.cnblogs.com/dakewei/p/7993613.html