Android系統架構介紹

前言

      學習Android前前後後也有一段時間了,怎麼說呢,筆者是在13年開始自學Android的。不過之後由於找工作、實習等原因,有很長一段真空期沒有再去學習Android了。加之筆者暫時從事的也並非Android方向的工作,學習研究也就一度落下了。不過作爲一個Android愛好者,現在筆者也會利用業餘時間進行一些在學習了。
      以前的學習總是拘泥於實現漂亮好看的界面,對於系統架構的一些理論性東西瞭解甚微。在今後的學習中也會注意到這些,既然打定注意以一個新的方式學習,先來系統的瞭解一下Android整個系統架構。

What is Android

      所謂的What is的解釋可謂仁者見仁,智者見智。
      普通用戶的角度,他可以片面的認爲它是一部“手機”,深入一點的話會知道Android是手機上搭載的"操作系統“。
      商人的角度他可能並不簡單的認爲Android是一個手機或操作系統,他可能看到是基由Android所帶來影響,對整個移動互聯網的衝擊和商機。
      開發者的角度,他會知道Android是基於Linux平臺,由操作系統中間件用戶界面應用軟件組成,開放、完整的移動軟件,利用系統提供的一些列和重用的組件集成,可以實現各類有趣實用的apps。
      But what is? 這是個開放的問題。
      如若非要下一個定義,筆者也只好引用Android負責人 Dan Morrill解釋的:
           ”Android並不是傳統的Linux風格的一個規範或分發版本,也不是一些列可重用的組件集成,Android是一個用於連接設備的軟件塊。
            
What is Android

Android架構詳解

       從上面那張圖我們就可以簡單的看出Android系統架構的組成部分以及其簡單的運作方式,下面給出Android系統架構的詳細架構圖(來源於網絡):

    
      顯而易見的,根據上圖自底向上我們知道Android系統架構包含5大部分:Linux Kernel 、Libraries、Android Runtime、Application framework、application。 下面將依次瞭解這5部分
         

Linux Kernel

      android是基於linux2.6 提供核心系統服務,例如:安全、內存管理、進程管理、網絡堆棧、驅動模型。Linux kernel也作爲硬件和軟件之間的抽象層,隱藏底層硬件細節爲上層提供統一服務。對於做Android應用開發的開發者來說,這部分無需深入瞭解。

Android Runtime

      Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android app就是Dalvik虛擬機中的實力,運行在他們自己的進程中。一個設備可以高效的運行多個虛擬機。Dalvik虛擬機可執行文件格式爲.dex(專爲Dalvik設計的一種壓縮格式,適合內存和處理器速度有限的系統)。
      與大多虛擬機(jvm)不同的是,Dalvik是基於寄存器的,而不是基於棧的。這使得Dalvik支持的機器指令更大(基於棧的需要更多指令)。dx是一套工具,可以將.class文件轉化爲.dex,通常爲多對一關係。由於dex進行最佳化,文件大小增加1-4倍,以ODEX結尾。需要提出的是Dalvik虛擬機依賴於Linux內核提供基本功能(線程、底層內存管理)。

Libraries(運行庫)

     Android系統會通過一些C/C++庫來支持我們使用的各個組件,使其更好的爲我們服務。這些功能通過Android的應用程序框架暴漏給開發者。
     Bionic 系統C庫: C語言標準庫,系統最底層的庫,C庫基由Linux系統來調用。
     MediaFramework: Android系統多媒體庫,基於PackerVideo的OpenCORE,支持各種音頻、視頻格式的錄製和播放,包括靜態圖片文件。
     LibVebCore:web瀏覽器引擎,驅動Android瀏覽器和內嵌的web視圖
     SGL:基本的2D圖形引擎
     3D: 基於OpenGL ES的實現。
     SQLite:應用程序使用的強大、輕量的關係數據庫引擎。

Application Framework

      Application Framework也許是大部分開發者接觸的最多的部分了,因爲Android應用的開發都是通過框架與Android底層進行交互來實現的。 應用開發層是Android提供給開發者一個框架開發平臺,開發者在遵循框架原則的基礎上,對框架進行擴展從而開發出各式各樣的app應用。
      應用程序的體系結構簡化了組件的重用,使得開發者開發也更加的靈活。
  •          視圖(View) ——豐富的、可擴展的視圖集合,可用於構建一個應用程序。包括包括列表、網格、文本框、按 鈕,甚至是內嵌的網頁瀏覽器。
  •          內容提供者(Content Providers) ——使應 用程序能訪問其他應用程序(如通訊錄)的數據,或共享自己的數據。
  •          資源管理器(Resource Manager) ——提供訪問非代碼資源,如本地化字符串、圖形和佈局文件。
  •          通知管理器(Notification Manager ) ——使所有的應用程序能夠在狀態欄顯示自 定義警告。
  •          活動管理器(Activity Manager ) ——管理應用程序生命週期,提供通用的導 航回退功能。
  • Applications

           由Google我iAndroid系統裝配的核心app集合,包括電子郵件客戶端、SMS、日期、地圖、瀏覽器等。Android是開源的,開源力量的強大使得能夠運行在Android系統上的app層出不窮。

小結

        Android採取的是分層的架構,各層清晰分工明確,其本身就是一套軟件堆疊(Software stack:軟件疊層架構),主要分爲三層:操作系統、中間件、應用程序。

         
發佈了178 篇原創文章 · 獲贊 42 · 訪問量 91萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章