Android學習筆記(一)概述

1 概述

本系列文章主要記載學習Android中的一些心得,主要專注於底層開發(包括Bootloader、內核、驅動等),必然也涉及相關硬件的介紹(S3C6410)。

1.1 系統框架

Android的系統框架如下:

clip_image002

1.1.1 應用程序

Android 會同一系列核心應用程序包一起發佈,該應用程序包包括email 客戶端,SMS 短消息程序,日曆,

地圖,瀏覽器,聯繫人管理程序等。所有的應用程序都是使用JAVA 語言編寫的。

1.1.2 應用程序框架

開發人員也可以完全訪問核心應用程序所使用的API 框架。該應用程序的架構設計簡化了組件的重用;任何一個應用程序都可以發佈它的功能塊並且任何其它的應用程序都可以使用其所發佈的功能塊(不過得遵循框

架的安全性限制)。同樣,該應用程序重用機制也使用戶可以方便的替換程序組件。

隱藏在每個應用後面的是一系列的服務和系統, 其中包括;

Ø 豐富而又可擴展的視圖(Views):可以用來構建應用程序,它包括列表(lists)、網格(grids)、文本框(text boxes)、按鈕( buttons), 甚至可嵌入的web 瀏覽器;

Ø 內容提供器(Content Providers):使得應用程序可以訪問另一個應用程序的數據(如聯繫人數據庫),或者共享它們自己的數據;

Ø 資源管理器(Resource Manager):提供非代碼資源的訪問,如本地字符串,圖形,和佈局文件( layout files );

Ø 通知管理器(Notification 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:一個最新的web 瀏覽器引擎用,支持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開發板上開發的一些驅動程序;

Ø 中間件:

應用程序:

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