淺談Android
1. 基本介紹
系統背景: Android 是基於 Linux 核心的智慧型手機作業系統,支援撥打電話、簡訊、電子郵件、行事曆、上網、遊戲、影音娛樂等多種功能。
授權協議: 採用 Apache Software License 2.0 開放原始碼方案,智慧型手機製造商可免費使用,降低了軟體採購成本。
2. 版本歷史
初期版本: 截至 2010 年 8 月 2 日,Android 已有 1.5、1.6、2.1 和 2.2 版本,其中 2.1 版本使用量最多。
3. 製造商與合作夥伴
主要製造商: 包括 Acer、Alcatel、ASUS、Dell、Foxconn、Garmin、Haier、HTC、Huawei、Kyocera、Lenovo、LG、Motorola、NEC、Samsung、Sharp、Sony Ericsson、Toshiba 和 ZTE 等二十家。
開放手機聯盟: 包括多家行動通訊公司、半導體公司、軟體公司和商業公司,這些公司參與了 Android 的生產、銷售或研發。
4. 市場地位
市佔率: 截至 2010 年第二季,Android 的市佔率為 17.2%,超過 Apple iOS 的 14.2%,成為全球智慧型手機作業系統的第三位。主要競爭者為 Nokia Symbian OS 和 RIM BlackBerry OS。
5. 應用程式開發
開發工具: 提供免費的 Android SDK,使用 Java 程式語言進行開發。
開發者吸引力: 開放且免費的策略吸引大量 Java 程式設計師投入開發行列。
6. Android 架構
應用層: 使用者直接接觸的層,包含郵件、簡訊、日曆、地圖、瀏覽器等核心應用程式。
應用程式框架: 提供開發者完整的 API,支援元件的重用和置換,應用程式可以發佈功能供其他應用程式使用。
核心組件:
Dalvik 虛擬機器: 行動裝置最佳化。
瀏覽器: 基於開放原始碼 Webkit 引擎。
圖形: 支援 2D 和 3D 圖形,基於 OpenGL ES 1.0 規格。
資料儲存: 使用 SQLite 結構化資料儲存。
媒體支援: 支援多種聲音、影片和靜態影像格式。
通訊技術: 支援 GSM、藍牙、EDGE、3G 和 WiFi。
硬體功能: 支援相機、GPS、電子羅盤和加速度計。
開發環境: 包含模擬器、除錯工具、記憶體和效率剖析,並支援 Eclipse IDE 插件。
7. 系統組件
Views System: 建構應用程式的基本元件,包括列表、文字框、按鈕和嵌入式瀏覽器。
Content Providers (內容提供者): 用於應用程式間的資料存取與共享,例如通訊錄資料的存取。
Resource Manager (資源管理員): 提供區域性字串、圖片、佈局檔等資源給應用程式使用。
Notification Manager (訊息管理員): 在狀態列顯示應用程式的警示訊息,如簡訊、語音郵件等。
Activity Manager (活動管理員): 管理應用程式的生命週期和導航回溯。
Window Manager (視窗管理員): 管理所有視窗程式。
Location Manager: 提供地圖服務和位置相關功能。
Telephony Manager: 管理移動設備的電話功能。
Package Manager: 管理系統內所有安裝的應用程式。
XMPP Service: 使用 Extensible Messaging and Presence Protocol 來了解手機的位置。
8. Libraries (函式庫)
System C Library: 基於 BSD 標準系統 C 函式庫,調整為嵌入式 Linux 裝置。
Media Libraries: 建立在 PacketVideo’s OpenCORE 上,支援聲音播放與錄製、影片格式、靜態影像格式等。
Surface Manager: 管理顯示次系統和多重程式 2D/3D 圖層的串流。
LibWebCore: 現代化的 Web 瀏覽器引擎。
SGL: 2D 圖形底層引擎。
3D Libraries: 實作 OpenGL ES 1.0 API,支援硬體加速和 3D 軟體 rasterizer。
FreeType: 繪製圖形和向量字。
SQLite: 強大且輕量的關聯式資料庫存取引擎。
SSL: 用於保護網頁通訊的安全協定。
9. Android Runtime
Core Libraries: 包含大部分 Java 程式語言所需的函式庫,每個應用程式在自己的進程中執行。
Dalvik Virtual Machine: 一種暫存器型態的虛擬機器,用於執行轉換後的 dex (Dalvik Executable) 格式檔案,優化記憶體資源和多個 VM 實例的運行。
10. 作業系統層 (Linux Kernel)
核心版本: 使用 Linux 2.6 版本的核心。
功能: 包含安全性 (Security)、記憶體管理 (Memory Management)、行程管理 (Process Management)、網路堆疊 (Network Stack)、驅動程式模型 (Driver Model)。
抽象層: 在軟體堆疊與硬體間建立抽象層,提供硬體與軟體的接口。