Android系統框架

前言

Android系統很龐大,全部咱們學習的都只是冰山一角。記得剛開始接觸Android時,發現徹底不知道如何入門去學習Android,很迷茫,很無措。因此這裏大概說下Android系統的框架,但願有助於初學者對Android的總體瞭解。vim

正文

這裏先附上谷歌一張Android系統框架圖,方便你們查看。從圖中能夠看出,Android系統大致能夠分爲五層,從上往下分別是:

Applications 層,Framework層,Libraries層,Hardware層,Linux層。微信

Applications層

這一層是app開發工程師接觸最多的一層,與用戶直接交互的就是這些應用程序。app

應用程序的開發採用的是Java語言,這一層是一個被廣大Java開發者熱捧的Java世界。這個世界並非徹底獨立,它的運轉依賴於Native世界,同時也須要framework層做爲基石。框架

主要開發工具就是Android Studio,很強大,用得很爽。工具

Framework層

這一層大部分是由Java語言編寫,封裝了不少功能,爲Applications層提供各類各樣的API,知足業務需求。一般咱們看到的PMS,AMS,WMS等,就是在這一層進行實現。post

通常定製功能或者解決系統bug的時候,須要對framework層代碼進行編輯,我比較喜歡用vim編輯,而後在系統環境中進行編譯。學習

Libraries層

這一層主要提供動態庫,Android運行時庫、Dalvik虛擬機等。這一層大部分都是用C或者C++寫的,因此這一層能夠簡單把它當作是Native層。開發工具

能夠單編成so庫,而後推動機器端進行調試。spa

Hardware層

Android系統的硬件抽象層(全稱Hardware Abstract Layer, 簡稱HAL)運行在用戶空間中,它向下屏蔽硬件驅動模塊的實現細節,向上提供硬件訪問服務。經過硬件抽象層,Android系統分爲兩層來支持硬件設備,其中一層實如今用戶空間(User Space),另一層實如今內核空間(Kernel Space)。傳統的Linux系統把對硬件的支持徹底實如今內核空間,即把對硬件的支持徹底實如今硬件驅動模塊中。debug

Android分兩層去控制硬件的緣由,在於保護商家的利益。由於Linux是徹底開源的,Linux部分的代碼須要公開,但這樣一來,關於一些Linux內核驅動的控制邏輯細節也會被公開。因此就經過兩層來實現,一層是位於user space空間,專門實現對硬件的控制邏輯,這一層不做公開。而另外一層則是在Linux內核中實現,這一層只是對硬件的一些簡單讀寫操做,例如讀寫硬件寄存器的通道等。這一層能夠被公開。

Linux層

包含了Linux內核和一些驅動模塊(好比LED驅動,USB驅動,wifi驅動等)。這一層主要是跟硬件打交道,調驅動居多。

增長一個驅動或者debug時,能夠單獨編譯kernel,而後單獨燒錄入系統。

結語

如上就是對Android系統框架的一個簡單描述,簡單介紹了各層大概作的事情。因此若是是剛開始接觸Android的同窗,建議先從Applications層,搭建第一個app(hello world)開始。由於這一層有比較方便好用的工具AS,初學者只須要上網大概瞭解下AS的安裝和項目建立過程,就能建立本身的app。而後再慢慢去學習Java語法,很快就能入門。

至於其餘層,能夠做爲後續能力提高,再向下延申學習。

關鍵在於堅持和學習。

互動

若是文章存在錯誤描述,可直接留言,一塊兒探討!

可能感興趣的文章

關於Android狀態欄高度爲0仍顯示的問題

踩坑之NavigationBar 的隱藏與否

關於Android9.0開機黑屏一段時間才加載launcher界面的解決方法

最後

我在微信公衆號也有寫文章,更新比較及時,有興趣者能夠關注以下公衆號!

相關文章
相關標籤/搜索