今天先說一下架構層級之間的關係,由上往下,按1,2,3,4,5層來表達。
大體上來說就是底層為上層提供功能和API,比如說上期提到的第二層Java API層為app層提供介面和功能.
第一層app層為應用層開發人員提供核心功能(email,camer...)
第二層Java API為第一層和開發人員提供介面(ActivityManger)
第三層c/c++ 和ART為第二層提供c的原生庫(Media,webkit)以及ART提供Android虛擬機器和回收記憶體最佳化
第四層HAL為第二層Java API層提供硬體(相機(攝像頭),藍芽)
第五層linux核心 這一層是整個Android系統基礎,(ART的回收記憶體最佳化的執行由linux執行)
瞭解了整體的層級關係,我們繼續介紹每個層級。
三.Native C/C++ Libraries(原生C/C++庫) ART(虛擬機器)
這一層的C/C++庫擁有Webkit(瀏覽器),Media(影片),OpenGl(2D,3D圖形繪製),OpenMax(多媒體應用程式)等功能。
至於為什麼這些功能要用C/C++來寫,因為它們只能用C/C++((●'◡'●))。如果這些庫不滿足你的需求,可以透過Android NDK直接訪問某些原生平臺庫
ART:Android虛擬機器即app執行時所處的空間(一個app對應著一個程序,一個ART例項)。我首先得知道要想在Android平臺執行的是dex位元組碼,而編譯工具(Jack)將Java原始碼編譯成dex位元組碼,由ART去執行dex位元組碼。
ART主要功能是編譯,最佳化垃圾回收,除錯支援。
Core Libraries;核心執行時庫向Java API提供大部分程式設計功能。
四.HAL(硬體抽象層)
向Java API提供硬體裝置
五。Linux Kerenl(核心)
Android平臺的基礎是Linux核心。
核心那是經過“風吹雨打"的安全性,穩定性都不必多說的核心。
Android許可權模式,程序隔離,程序通訊都是由Linux核心而來。