1 概述
本系列文章主要記載學習Android中的一些心得,主要專註於底層開發(包括Bootloader、核心、驅動等),必然也涉及相關硬體的介紹(S3C6410)。
1.1 系統架構
Android的系統架構如下:
1.1.1 應用程式
Android 會同一系列核心應用程式套件組合一起發布,該應用程式套件組合包括email 用戶端,SMS 短訊息程式,日曆,
地圖,瀏覽器,連絡人管理程式等。所有的應用程式都是使用JAVA 語言編寫的。
1.1.2 應用程式架構
開發人員也可以完全訪問核心應用程式所使用的API 架構。該應用程式的架構設計簡化了組件的重用;任何一個應用程式都發行就緒它的功能塊並且任何其它的應用程式都可以使用其所發布的功能塊(不過得遵循框
架的安全性限制)。同樣,該應用程式重用機制也使使用者可以方便的替換程式組件。
隱藏在每個應用後面的是一系列的服務和系統, 其中包括;
Ø 豐富而又可擴充的視圖(Views):可以用來構建應用程式,它包括列表(lists)、網格(grids)、文字框(text boxes)、按鈕( buttons), 甚至可嵌入的網頁瀏覽器;
Ø 內容提供器(Content Providers):使得應用程式可以訪問另一個應用程式的資料(如連絡人資料庫),或者共用它們自己的資料;
Ø 資源管理員(Resource Manager):提供非代碼資源的訪問,如本地字串,圖形,和布局檔案( layout files );
Ø 通知管理器(Notification Manager):使得應用程式可以在狀態列中顯示自訂的提示資訊;
Ø Active Manager( Activity Manager):用來管理應用程式生命週期並提供常用的導航回退功能;
1.1.3 程式庫
Android 包含一些C/C++庫,這些庫能被Android 系統中不同的組件使用。它們通過Android 應用程式架構為開發人員提供服務。以下是一些核心庫:
Ø 系統C 庫:一個從BSD 繼承來的標準C系統函數庫(libc), 它是專門為基於embedded linux的裝置定製的;
Ø 媒體庫:基於PacketVideo OpenCORE。該庫支援多種常用的音頻、視頻格式回放和錄製,同時支援靜態影像檔。編碼格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG;
Ø Surface Manager:對顯示子系統的管理,並且為多個應用程式提供了2D 和3D 圖層的無縫融合;
Ø LibWebCore:一個最新的網頁瀏覽器引擎用,支援Android 瀏覽器和一個可嵌入的web 視圖;
Ø SGL: 底層的2D 圖形引擎;
Ø 3D libraries:基於OpenGL ES 1.0 APIs 實現;該庫可以使用硬體3D 加速(如果可用)或者使用高度最佳化的3D 軟加速;
Ø FreeType:位元影像(bitmap)和向量(vector)字型顯示;
Ø SQLite:一個對於所有應用程式可用,功能強勁的輕型關係型資料庫引擎;
1.1.4 Android 運行庫
Android 包括了一個核心庫,該核心庫提供了JAVA 程式設計語言核心庫的大多數功能。
每一個Android 應用程式都在它自己的進程中運行,都擁有一個獨立的Dalvik 虛擬機器執行個體。Dalvik 被設計成一個裝置可以同時高效地運行多個虛擬系統。Dalvik 虛擬機器執行(.dex)的Dalvik 可執行檔,該格式檔案針對小記憶體使用量做了最佳化。同時虛擬機器是基於寄存器的,所有的類都經由JAVA 編譯器編譯,然後通過SDK中的"dx" 工具轉化成.dex 格式由虛擬機器執行。
Dalvik 虛擬機器依賴於linux 核心的一些功能,比如線程機制和底層記憶體管理機制。
1.1.5 Linux 核心
Android 的核心系統服務依賴於Linux 2.6 核心,如安全性,記憶體管理,進程管理, 網路通訊協定棧和驅動模型。
Linux 核心也同時作為硬體和軟體棧之間的抽象層。
1.2 文檔結構
目前的計劃如下:
Ø 前言:Android的介紹,Android資源的擷取等;
Ø 入門:開發平台的搭建,並以一個簡單的hello程式示範Android程式的開發;
Ø Bootloader:主要是討論在6410開發板上移植U-Boot;
Ø Kernel:主要是討論在6410開發板上移植Linux;
Ø Driver:主要是討論在6410開發板上開發的一些驅動程式;
Ø 中介軟體:
應用程式: