天天看點

【Android 系統開發】Android架構 與 源碼結構

一. Android 架構

Android架構層級 : Android 自下 而 上 分為 4層;

-- Linux核心層;

-- 各種庫 和 Android運作環境層;

-- 應用架構層;

-- 應用層;

1. Linux核心層

Android 的 Linux 核心層 組成 : Linux 核心 和 驅動程式;

Linux核心 : Android 2.x 是基于 Linux 2.6 核心;

驅動程式 : 

-- Display Driver (顯示卡驅動) : Linux 的幀緩沖 驅動;

-- Flash Memory Driver (Flash 記憶體驅動) : 基于 MTD 的 Flash 驅動程式;

-- Camera Driver (相機驅動) : 基于 Linux v4l 驅動;

-- Audio Driver (音頻驅動) : 基于 ALSA 驅動;

-- Wifi Driver (Wifi驅動) : 基于 IEEE 801.31 标準的驅動程式;

-- KeyBoard Driver (鍵盤驅動) : 作為輸入裝置的鍵盤驅動;

-- Bluetooth Driver (藍牙驅動) : 基于 IEEE 801.35.1 标準的無線傳輸技術;

-- Binder IPC Driver : Android 特有的驅動程式, 有單獨的裝置節點, 提供程序通信的功能;

-- Power Management (電源管理) : 管理電池電量等資訊;

解析驅動 : 

-- Frame Buffer (幀緩沖) : 視訊輸出裝置 中包含 有 完整幀資料的 視訊緩沖區, 使用該緩沖區 驅動視訊顯示裝置;

-- v4l (Video for linux) : Linux 中的 攝像頭驅動;

-- ALSA (Advanced Linux Sound Architecture) : 進階 Linux 聲音體系驅動, 該元件 提供了 聲霸卡驅動;

2. 庫 和 Android 運作環境

該層分兩部分 : Android 運作環境 和 各種 庫;

各種庫介紹 : 這些庫以系統中間件形式提供, 與移動裝置平台的應用有密切的關系;

-- C标準庫 : Android 系統最底層的庫, 該标準庫調用 核心的系統調用實作所需的功能;

-- Media Framework (多媒體架構) : Android 多媒體核心部分, 是基于 PacketVideo 的 OpenCore架構, 功能一 音頻視訊回放, 功能二 音頻視訊記錄;

-- SGL : 2D的引擎;

-- SSL (Secure Socket Layer) : 主要 為 TCP/IP 協定 與 應用層協定 之間的資料通信 提供安全支援;

-- OpenGL ES : 3D引擎;

-- Surface Management (界面管理工具) : 管理顯示子系統的功能;

-- SQLite : 嵌入式資料庫;

-- WebKit : 網絡浏覽器核心;

-- FreeType : 提供位圖 和 矢量字型功能;

Dalvik虛拟機 與 JVM 差別 : 

-- 執行檔案 : JVM 執行 .class 标準位元組碼檔案, Dalvik 虛拟機執行 .dex 檔案;

-- 最大差別 : JVM 是基于棧 (Stack-based) 的虛拟機, Dalvik 虛拟機 是基于寄存器 (Register-based) 的虛拟機, 後者可以根據硬體實作更好的優化; 

3. 應用程式架構層

應用架構層 : 該層 提供了 應用程式使用的 API, 包括 各種 UI 元件 和 其它元件, 包括下面的元件;

-- Activity : 主要活動界面;

-- BroadcastReceiver : 廣播接收者;

-- Service : 服務;

-- ContentProvider : 内容提供者;

4. 應用程式層

該層主要是 apk 安裝程式;

二. Android 源碼結構

基于 android-2.3.4_r1 版本的源碼進行分析;

Android 源碼結構分類 : 

-- 核心部分 : 該部分是建立Android 系統的基礎, 被儲存在根目錄的檔案中;

-- 擴充工程 : 使用其它開源項目的部分;

-- 包部分 : 提供了 Android 應用程式, 四大元件 等, 在 package 目錄中;

1. 根目錄 (/)

bionic : 基礎庫的源碼, C 運作時支援庫 libc, libm, libdl, 動态 linker;

bootable/bootloader/legacy : 核心引導加載器, 加載核心之前運作的程式;

build : 編譯和配置所需要的腳本 和 工具;

dalvik : Android中的 Java 虛拟機, 提供Android應用程式運作基礎;

development : 程式開發所需的模闆和工具, 層次較高;

external : 使用的其它的開源的擴充庫;

frameworks : 應用程式架構層, 四大元件等;

hardware : 硬體相關的庫;

kernel : Linux 核心源碼;

packages : Android 各種應用程式;

prebuilt : 各種平台下的編譯預置腳本;

recovery : 與 Android 系統恢複功能相關;

system : Android 底層庫;

Makefile : 整個 Android 源碼 編譯的 Makefile;

2. development 目錄 (/development)

apps : Android 應用程式模闆;

build : 編譯腳本模闆;

host : windows 平台的一些工具;

samples : 示例程式, 簡單的Android程式, 可以作為模闆;

3. external 目錄 (/external)

opencore : Android 多媒體架構核心;

webkit : Android 網絡浏覽器核心;

sqlite : Android 資料庫系統核心;

openssl : Secure Socket Layer, 是一個網絡協定, 為資料通信提供安全支援;

4. frameworks

base : Android 核心架構庫基本内容;

opt : 可選部分;

base 目錄内容 : 

-- cmds : 重要的指令;

-- core : 核心庫;

-- data : 字型聲音資料檔案;

-- docs : 文檔;

-- graphics : 圖形相關;

-- include : 頭檔案;

-- keystore : 資料簽名證書;

-- libs : 庫;

-- location : 地區庫;

-- media : 媒體相關庫;

-- obex : 藍牙相關的庫;

-- opengl : 3D圖形庫;

-- packages : 設定 TTS VPN 等庫;

-- sax : XML 解析;

-- services : 各種服務;

-- telephony : 電話通信管理;

-- test-runner : 測試工具相關;

-- test : 各種測試;

-- tools : 各種工具;

-- vpn : 

-- wifi : 

5. packages 目錄 (/packages)

Apps : Android 中的各種應用程式;

providers : 儲存内容提供者資訊;

inputmethod : 輸入法;

繼續閱讀