Android 學習第一天



自今天開始正式步入Andorid開發行列,作爲IT業界的一名普通碼農,代碼寫了不少,軟件做了一堆,但文章確是一字未有。

路漫漫其修遠兮,重要的是踏出的第一步,希望這次可以堅持下去。

首先從Android的發展歷程開始。 

Android的系統架構採用了分層架構的思想,如圖1所示。從上層到底層共包括四層,分別是應用程序程序層、應用框架層、系統庫和Android運行時以及Linux內核。

      圖1:Android系統架構圖(來源於網絡)

      每層功能簡要介紹如下:

一、Linux內核層

        該層即爲操作系統層,自2009年4月30日發佈Android官方1.5版本,採用Linux2.6作爲系統核心,以後陸續發佈的Android版本也隨着Linux內核版本的變化而採用不同的linux核心【1】。Android對操作系統的使用包括核心和驅動程序兩部分,其核心繫統服務如安全性、內存管理、進程管理、網路協議以及驅動模型都依賴於Linux內核。Android更多的是需要一些與移動設備相關的驅動程序。主要的驅動如下所示:
    顯示驅動(Display Driver):常用基於Linux的幀緩衝(Frame Buffer)驅動。
    Flash內存驅動(Flash Memory Driver)
    照相機驅動(Camera Driver):常用基於Linux的v4l(Video for )驅動。
    音頻驅動(Audio Driver):常用基於ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅動。
    WiFi驅動(Camera Driver):基於IEEE 802.11標準的驅動程序
    鍵盤驅動(KeyBoard Driver)
    藍牙驅動(Bluetooth Driver)
    Binder IPC驅動: Andoid一個特殊的驅動程序,具有單獨的設備節點,提供進程間通訊的功能。
    Power Management(能源管理)

二、系統庫和Android運行時

本層對應一般嵌入式系統,相當於中間件層。本層主要分爲兩個部分,一是系統庫,另一個是Android 運行環境。本層的內容大多是使用C++實現的。
    其中,系統庫主要包括:
    ▅ C庫:C語言的標準庫,這也是系統中一個最爲底層的庫,C庫是通過Linux的系統調用來實現。
    ▅ 多媒體框架(MediaFrameword):這部分內容是Android多媒體的核心部分,基於PacketVideo(即PV)的OpenCORE,從功能上本庫一共
分爲兩大部分,一個部分是音頻、視頻的回放(PlayBack),另一部分是則是音視頻的紀錄(Recorder)。
    ▅ SGL:2D圖像引擎。
    ▅ SSL:即Secure Socket Layer位於TCP/IP協議與各種應用層協議之間,爲數據通訊提供安全支持。
    ▅ OpenGL ES 1.0 :本部分提供了對3D的支持。
    ▅ 界面管理工具(Surface Management):本部分提供了對管理顯示子系統等功能。
    ▅ SQLite:一個通用的嵌入式數據庫
    ▅ WebKit:網絡瀏覽器的核心
    ▅ FreeType:位圖和矢量字體的功能。
       Android 的各種庫一般是以系統中間件的形式提供的,它們均有的一個顯著特點就是與移動設備的平臺的應用密切相關。

        Android 運行環境主要指的虛擬機技術——Dalvik。Dalvik虛擬機和一般JAVA虛擬機(Java VM)不同,它執行的不是JAVA標準的字節碼(bytecode )而是Dalvik可執行格式(.dex)中執行文件。在執行的過程中,每一個應用程序即一個進程(Linux的一個Process)。    二者最大的區別在於Java VM是以基於棧的虛擬機(Stack-based),而Dalvik是基於寄存器的虛擬機(Register-based)。顯然,後者最大的好處在於可以根據硬件實現更大的優化,這更適合移動設備的特點。

三、應用程序框架層

該層是Android應用開發的基礎,開發人員大部分情況是在和她打交道。應用程序框架層包括活動管理器、窗口管理器、內容提供者、視圖系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。在Android平臺上,開發人員可以完全訪問核心應用程序所使用的API框架。並且,任何一個應用程序都可以發佈自身的功能模塊,而其他應用程序則可以使用這些已發佈的功能模塊。基於這樣的重用機制,用戶就可以方便地替換平臺本身的各種應用程序組件。

         a) Activity Manager(活動管理器)

              管理各個應用程序生命週期以及通常的導航回退功能

         b) Window Manager(窗口管理器)

              管理所有的窗口程序

         c)  Content Provider(內容提供器)

              使得不同應用程序之間存取或者分享數據

         d) View System(視圖系統)

              構建應用程序的基本組件

         e) Notification Manager(通告管理器)

              使得應用程序可以在狀態欄中顯示自定義的提示信息

         f) Package Manager(包管理器) 

              Android系統內的程序管理

         g)Telephony Manager(電話管理器)

              管理所有的移動設備功能

         h)Resource Manager(資源管理器)

              提供應用程序使用的各種非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等

         i)Location Manager(位置管理器)

             提供位置服務

         j)XMPP ServiceXMPP服務)

             提供Google Talk服務 

四、 應用程序層

      該層提供一些核心應用程序包,例如電子郵件、短信、日曆、地圖、瀏覽器和聯繫人管理等。同時,開發者可以利用Java語言設計和編寫屬於自己的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處。

    

     總結:

     網上搜羅了相關文章,對Android相關架構有了一個基礎瞭解,深入的瞭解需要以後進一步的學習。


【1】 https://zh.wikipedia.org/wiki/Android#Google.E7.9A.84.E6.94.B6.E8.B3.BC.E5.8F.8A.E7.99.BC.E5.B1.95   ,維基百科 ,Android

【2】http://zh.wikipedia.org/wiki/Linux  ,維基百科,Linux

【3】http://blog.sina.com.cn/s/blog_4bc996c40100fawo.html#

【4】http://www.cnblogs.com/royenhome/archive/2010/04/24/1719293.html

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