Framework學習筆記(一)

參考https://blog.csdn.net/huaxun66/category_7203839.htmlhttps://www.jianshu.com/p/9f978d57c683寫下自己的學習筆記,因爲敲一遍印象會深刻,感謝原博主提供學習素材。

一,Android系統架構

Android本質上是在Linux系統上增加了Java虛擬機,並在虛擬機上搭建了一個JAVA的application framework,所有的應用程序是基於這個framework之上的。

Android分爲四層,應用程序層、應用程序框架層、系統運行庫層、Linux內核層

1,應用程序層

提供核心應用程序包,如桌面、郵件、短信、日曆等,在這一層開發者可以安裝自己寫的程序包。

2,應用程序框架層

這層提供了可以開發應用程序時所需要的API,平時調用的API就是這個層提供的,API都是Java代碼寫的,可以稱爲Java Framework,該層包括十個部分:

Activity Manager(活動管理器,管理生命週期以及通常的導航回退功能),

Location Manager(位置管理器,提供地理位置及定位服務),

Package Manager(包管理器,管理安裝的應用程序),

Notification Manager(通知管理器,管理狀態欄顯示的自定義的消息),

Resource Manager(資源管理器,提供本地字符串、圖片、佈局文件等非代碼資源),

Telephony Manager(電話管理器,管理移動設備的功能),

Window Manager(窗口管理器,管理開啓的窗口程序),

Content Providers(內容提供器,不同程序可共享數據),

View System(視圖系統,構建應用程序的基本組件)

3,系統運行庫層

該層分爲兩部分,分別是C/C++程序庫 和 Android運行時庫

(1)C/C++程序庫

C/C++程序庫能被不同組件使用,並通過Framework層爲開發者提供服務,該程序庫分爲9部分:分別是圖形管理、媒體庫、SQLite、OpenGLEState(3D繪圖函數庫)、SGL(底層2D圖形渲染引擎)、FreeType(字體引擎,提供了統一的接口訪問多種字體文件)、WebKit、SSL(安全套接層)、libc.

(2)Android運行時庫

運行時庫分爲核心庫和ART(5.0後,Dalvik虛擬機被ART取代)。

核心庫提供了Java語言核心庫的大多數功能。

Android的核心服務基於Linux內核層,在此基礎上添加了部分Android專用的驅動。系統的安全性、內存管理、進程管理、網絡協議棧和驅動模型等都依賴於該內核。

二,Android系統啓動流程

1,啓動電源以及系統啓動

按下電源開關,此時硬件電路會產生一個確定的復位時序,因爲硬件內部的寄存器狀態可能還沒準準備好,比如磁盤或內存,所以要保證最後一個被複位的器件是CPU,不然會出現外圍硬件初始化錯誤。當CPU正確復位後,就開始執行第一條指令,這個指令所在的內存地址是由CPU製造者指定,是固定的,這個固定地址所保存的程序就是引導程序BootLoader。

2,引導程序BootLoader

BootLoader是Android操作系統開始運行前的一個小程序,主要作用是裝載真正的用戶程序,就是把系統OS拉起來運行。不同的CPU有不同的裝載方式,如並口存儲器、SD卡,還有RS232接口。裝載時需要提供的信息包括:(1)從哪裏讀取用戶程序;(2)用戶程序的長度是什麼;(3)裝載用戶程序後,用戶程序的執行入口在哪裏。

BootLoader種類很多,Android上主要是U-boot,U-Boot已經成爲ARM平臺事實上的標準BootLoader。

3,ARM

目前Android系統多運行在ARM處理器上,對於ARM處理器,當復位完畢後,處理器首先執行其片上ROM中的一小塊程序,這塊幾KB的程序就是BootLoader程序。

4,Linux內核啓動

內核啓動時,會設置緩存,被保護存儲器,計劃列表,加載驅動。當完成系統設置後,就會在系統文件中尋找init文件,然後啓動root進程或系統的第一個進程。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章