一. 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 : 輸入法;