技術問答
技術文章
iT 徵才
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2025 iThome 鐵人賽
DAY
3
0
自我挑戰組
安豬複習
系列 第
3
篇
#02
17th鐵人賽
hcalan
2025-09-17 23:38:30
73 瀏覽
分享至
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 (核心層)
基於 Linux 核心,版本通常由 Google 維護
提供 記憶體管理、程序管理、驅動程式 (Driver)、網路堆疊
Android 特有的模組:
Binder IPC Driver(跨進程通訊)
wakelocks(電源管理)
ASHMEM(共享記憶體)
Hardware Abstraction Layer (HAL)
介於 硬體驅動 與 Framework 之間的中介層
提供 統一 API,避免 Framework 直接依賴硬體實作
例如:
Camera HAL(攝影機功能)
Sensor HAL(加速度計、陀螺儀)
Audio HAL(音訊輸入/輸出)
Native Libraries & Android Runtime (ART)
Native Libraries
SQLite(資料庫)
OpenGL ES(圖形渲染)
WebKit(瀏覽器引擎,現今已改為 Chromium-based WebView)
Media Framework(音訊/影片編解碼)
Android Runtime (ART)
取代舊的 Dalvik VM
支援 Ahead-of-Time (AOT) 與 Just-in-Time (JIT) 編譯
提供垃圾回收 (GC) 機制
Application Framework (應用框架層)
為應用程式提供 高階 API
主要系統服務由 SystemServer 啟動並運行:
ActivityManagerService (AMS):管理應用與生命週期
WindowManagerService (WMS):視窗與 UI 管理
PackageManagerService (PMS):APK 安裝與權限檢查
ContentProvider、LocationManager、NotificationManager...
Applications (應用程式層)
使用 Java/Kotlin 撰寫
利用 Application Framework 提供的 API
分為:
系統應用(設定、聯絡人、電話、相機)
第三方應用(LINE、Facebook、遊戲 App 等)
Questions
為什麼需要 HAL, Android 卻不讓 Framework 直接呼叫硬體驅動?
Binder IPC 在 Android 系統中的關鍵角色是什麼?
ART 的 AOT + JIT 混合模式相比傳統 JVM 有什麼優勢?
留言
追蹤
檢舉
上一篇
#01
下一篇
#03
系列文
安豬複習
共
31
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
27
#26
28
#27
29
#28
30
#29
31
#30
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19856
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
防火牆fortinet只開放line 問題
Gem如何找到該功能?!我是Gemini付費使用者
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
照片破圖或是有損壞,如何修復?
熱門回答
防火牆fortinet只開放line 問題
中華電信光纜當骨幹...SWminigbic無法正常使用
我在做 packet tracer 的題目,想請問一下該怎麼做
dhcp 在client 端機碼設定的問題
熱門文章
Agentic AI 開發實戰:我是如何設計 “Code + LLM” 混合架構,解決 AI品質不穩的問題?
ISC2 CC 證照考試筆記和影片
VScode 開發應用系統專案(10) - Spring boot MVC 應用系統設計(1)
【資料治理實戰回憶錄】04. 拆解元數據 (下):讓資料「用起來」
[gem5] 該怎麼編譯以及運行 gem5 ?
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}