iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0

Android 系統架構總覽:Linux Kernel、HAL、Native libraries、Framework、Applications

Android 系統層級

  • Android 系統大致分為 五個主要層級:
    • Linux Kernel (核心層)
    • Hardware Abstraction Layer (HAL, 硬體抽象層)
    • Native Libraries & Android Runtime (本地函式庫與執行環境)
    • Application Framework (應用框架層)
    • Applications (應用程式層)
      圖這邊有 Link

Linux Kernel (核心層)

  1. 基於 Linux 核心,版本通常由 Google 維護
  2. 提供 記憶體管理、程序管理、驅動程式 (Driver)、網路堆疊
  3. Android 特有的模組:
  • Binder IPC Driver(跨進程通訊)
  • wakelocks(電源管理)
  • ASHMEM(共享記憶體)

Hardware Abstraction Layer (HAL)

  1. 介於 硬體驅動 與 Framework 之間的中介層
  2. 提供 統一 API,避免 Framework 直接依賴硬體實作
  3. 例如:
  • Camera HAL(攝影機功能)
  • Sensor HAL(加速度計、陀螺儀)
  • Audio HAL(音訊輸入/輸出)

Native Libraries & Android Runtime (ART)

  1. Native Libraries
  • SQLite(資料庫)
  • OpenGL ES(圖形渲染)
  • WebKit(瀏覽器引擎,現今已改為 Chromium-based WebView)
  • Media Framework(音訊/影片編解碼)
  1. Android Runtime (ART)
  • 取代舊的 Dalvik VM
  • 支援 Ahead-of-Time (AOT) 與 Just-in-Time (JIT) 編譯
  • 提供垃圾回收 (GC) 機制

Application Framework (應用框架層)

  1. 為應用程式提供 高階 API
  2. 主要系統服務由 SystemServer 啟動並運行:
  • ActivityManagerService (AMS):管理應用與生命週期
  • WindowManagerService (WMS):視窗與 UI 管理
  • PackageManagerService (PMS):APK 安裝與權限檢查
  • ContentProvider、LocationManager、NotificationManager...

Applications (應用程式層)

  1. 使用 Java/Kotlin 撰寫
  2. 利用 Application Framework 提供的 API
  3. 分為:
  • 系統應用(設定、聯絡人、電話、相機)
  • 第三方應用(LINE、Facebook、遊戲 App 等)

Questions

  1. 為什麼需要 HAL, Android 卻不讓 Framework 直接呼叫硬體驅動?
  2. Binder IPC 在 Android 系統中的關鍵角色是什麼?
  3. ART 的 AOT + JIT 混合模式相比傳統 JVM 有什麼優勢?

上一篇
#01
下一篇
#03
系列文
安豬複習10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言