Android開發學習1 - Android架構

Android開發學習1 - Android架構

官網:http://developer.android.com/index.html#

學習資料引用:http://www.cnblogs.com/royenhome/archive/2010/04/24/1719293.html

Android 是Google開發的基於Linux平臺的、開源的、智能手機操作系統。Android包括操作系統、中間件和應用程序,由於源代碼開放,Android可以被移植到不同的硬件平臺上。


Android架構


從宏觀的角度來看,Android是一個開放的軟件系統,它包含了衆多的源代碼。從下至上,Android系統分成4個層次:(圖片來源互聯網)


1)應用程序層

Android平臺不僅僅是操作系統,也包含了許多應用程序,諸如SMS短信客戶端程序、電話撥號程序、圖片瀏覽器、Web瀏覽器等應用程序。這些應用程序都是用Java語言編寫的,並且這些應用程序都是可以被開發人員開發的其他應用程序所替換,這點不同於其他手機操作系統固化在系統內部的系統軟件,更加靈活和個性化。

2)應用程序框架層

應用程序框架層是我們從事Android開發的基礎,很多核心應用程序也是通過這一層來實現其核心功能的,該層簡化了組件的重用,開發人員可以直接使用其提 供的組件來進行快速的應用程序開發,也可以通過繼承而實現個性化的拓展。

     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 Service(XMPP服務)
         提供Google Talk服務 

3)系統運行庫層

從圖中可以看出,系統運行庫層可以分成兩部分,分別是系統庫和Android運行時,分別介紹如下:

a)系統庫

系統庫是應用程序框架的支撐,是連接應用程序框架層與Linux內核層的重要紐帶。其主要分爲如下幾個:

  Ø  Surface Manager:
       執行多個應用程序時候,負責管理顯示與存取操作間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。 

  Ø  Media Framework: 
       多媒體庫,基於PacketVideo OpenCore;支持多種常用的音頻、視頻格式錄製和回放,編碼格式包括MPEG4
              、MP3、H.264、AAC、ARM。

  Ø  SQLite:
      小型的關係型數據庫引擎 

  Ø  OpenGL|ES:
      根據OpenGL ES 1.0API標準實現的3D繪圖函數庫 

  Ø  FreeType:
      提供點陣字與向量字的描繪與顯示 


  Ø  WebKit:
      一套網頁瀏覽器的軟件引擎

  Ø  SGL:
      底層的2D圖形渲染引擎 

  Ø  SSL:
      在Andorid上通信過程中實現握手 

  Ø  Libc:
      從BSD繼承來的標準C系統函數庫,專門爲基於embedded linux的設備定製

b)Android運行時

Android應用程序時採用Java語言編寫,程序在Android運行時中執行,其運行時分爲核心庫和Dalvik虛擬機兩部分。

 Ø  核心庫
     核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、
    android.media等等。

 Ø  Dalvik虛擬機
     Android程序不同於J2me程序,每個Android應用程序都有一個專有的進程,並且不是多個程序運行在一個虛擬機中,而是
    每個Android程序都有一個Dalivik虛擬機的實例,並在該實例中執行。Dalvik虛擬機是一種基於寄存器的Java虛擬機,而不是
    傳統的基於棧的虛擬機,並進行了內存資源使用的優化以及支持多個虛擬機的特點。需要注意的是,不同於J2me,Android程序
    在虛擬機中執行的並非編譯後的字節碼,而是通過轉換工具dx將Java字節碼轉成dex格式的中間碼。

4)Linux內核層

Android是基於Linux2.6內核,其核心繫統服務如安全性、內存管理、進程管理、網路協議以及驅動模型都依賴於Linux內核。


輔助工具

除了軟件本身的代碼之外,Android還提供了一系列工具來輔助系統開發,這些主要的工具包括:

„ aapt(Android Asset Packaging Tool): 用於建立zip兼容的包(zip、jar、apk),也可用於將資源編譯到二進 制的assets。

„ adb(Android Debug Bridge,Android調試橋):使用adb工具可以在模擬器或設備上安裝應用程序的.apk 文件,並從命令行訪問模擬器或設備。也可以用它把Android模擬器或設備上的應用程序代碼和一個標準的調試器連接在一起。

„ android工具:android工具是一個腳本,用於創建和管理Android Virtual Devices (AVDs)。

„ AIDL工具(Android Interface Description Language,Android接口描述語言工具),AIDL工具可以生成進程 間接口的代碼,諸如Service可能使用的接口。

„ AVDs(Android Virtual Devices,Android虛擬設備): 用於配置模擬器,模擬出類似的設備效果

„ DDMS(Dalvik Debug Monitor Service,Dalvik調試監視器服務):這個工具集成了Dalvik,能夠在模擬器 或者設備上管理進程並協助調試。可以使用它殺死進程,選擇某個特定的進程來調試,產生跟蹤數據,觀察堆(heap)和線程信息,截取模擬器或設備的屏幕畫面,還有更多的功能。

„ dx:dx工具用於將.class字節碼(bytecode)轉換爲Android字節碼(保存在.dex文件中)這個字節碼文件 是給Android的Java虛擬機運行用的。

„ Draw 9-patch:Draw 9-patch工具允許使用所見即所得(WYSIWYG)的編輯器輕鬆地創建NinePatch圖形。 „ Emulator(模擬器):模擬器是一個運行於主機上的程序,可以使用模擬器來模擬一個實際的Android系統 的運行,使用模擬器非常適合調試和測試應用程序。

„ Hierarchy Viewer(層級觀察器):層級觀察器工具允許調試和優化用戶界面。它用可視的方法把視圖(view) 的佈局層次展現出來,此外,還給當前界面提供了一個具有像素柵格(grid)的放大鏡觀察器。 „ mksdcard:幫助創建磁盤映像(disk image),可以在模擬器環境下使用磁盤映像來模擬外部存儲卡(例如 SD卡)。

„ Monkey:Monkey是在模擬器或設備上運行的一個小程序,它能夠產生隨機的用戶事件流,例如:點擊 (click)、觸摸(touch)、揮手(gestures),還包括一系列系統級事件。可以使用Monkey 給正在開發的程序做隨機的但可重複的壓力測試。

„ sqlite3:sqlite3工具能夠方便地訪問SQLite 數據文件,這是一個sqlite標準命令行工具。

„ Traceview:這個工具可以將Android應用程序產生的跟蹤日誌(trace log)轉換爲圖形化的分析視圖。


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