【新手入門】Android基礎知識(一):系統架構

目? ?錄

Android 系統架構圖

?1. 應用

2. JAVA API 框架

3.?原生 C/C++ 庫

4. Android 運行時(Android Runtime)

5. 硬件抽象層 (HAL)

6.?Linux 內核

參考資料


Android 系統架構圖

? ? Android底層內核空間以Linux Kernel作為基石,上層用戶空間由Native系統庫、Android運行時、JAVA API框架和應用組成,通過系統調用(Syscall)連通系統的內核空間與用戶空間。對于用戶空間主要采用C++和Java代碼編寫,通過JNI技術打通用戶空間的Java層和Native層(C++/C),從而連通整個系統。下圖所示為Android系統架構。

Android系統架構

?1. 應用

? ? ? ?應用程序是 android 架構的頂層,包含在Android設備上運行的所有應用(包括系統應用和第三方應用),它們是Android系統中直接面向用戶的部分。

? ? ? ? 第三方應用都是基于Android提供的SDK(Sofware Development Kit)開發,并受到 SDK接口的約束。系統應用則可以調用整個框架層的接口和模塊,其中的很多接口在 SDK 中是隱藏的,因此系統應用具有比第三方應用更多的權利。

2. JAVA API 框架

? ? ? ? Java API 框架是指構建應用所依據的一組 Java 類、接口和其他預編譯代碼,是 Android 的核心部分,為開發人員提供構建應用程序所需的工具和服務。

? ? ? ? 框架層包括幾項重要的服務,可以更輕松地構建功能強大且一致的 Android 應用程序,而無需從頭開始創建所有內容。服務如下表所示。

關鍵組件功能
Activity Manager (AM)管理應用生命周期、任務棧、Activity 切換
Window Manager (WM)管理應用界面窗口、布局和繪制
Content Provider (CP)數據訪問接口,實現不同應用間的數據共享
Notification Manager管理通知欄消息
Resource Manager管理資源文件,如圖片、布局、字符串
Package Manager (PM)管理安裝的應用包、權限信息
Telephony Manager / Location Manager提供電話、定位等硬件功能訪問
View 系統 / UI 組件提供 Button、TextView、RecyclerView 等界面元素
其他系統服務SensorManager、MediaPlayer、ClipboardManager 等

3.?原生 C/C++ 庫

? ? ? ?Native系統庫主要基于C\C++實現的一些原生組件,開發者需要通過 Java API 框架層調用這些庫。

庫名稱功能描述
OpenGL ES用于 2D 和 3D 圖形渲染,提供高性能的圖形處理能力,直接與 GPU 交互,可實現復雜圖形效果。
Media Framework基于 PacketVideo OpenCORE,支持多種常用音頻、視頻格式的回放和錄制,以及靜態圖像文件的處理。
SQLite一個輕量級的關系型數據庫引擎,為所有應用程序提供數據存儲和管理功能。
Surface Manager對顯示子系統進行管理,為多個應用程序提供 2D 和 3D 圖層的無縫融合。
Libc標準 C 系統函數庫,專門為嵌入式 Linux 設備定制,提供基礎的系統調用和功能支持。
OpenMAX AL一個多媒體應用程序的標準框架,用于構建和管理多媒體應用程序。
Webkit用于 WebView 的功能實現,支持網頁瀏覽和渲染。

4. Android 運行時(Android Runtime)

? ? ? ? Android 運行時主要包括以下兩個關鍵部分:

  • 核心庫(Core Libraries):提供了一系列的 Java 和 Kotlin 標準庫,是 Android 應用開發的基礎。
  • 運行時環境(ART):負責運行Android應用程序。

從 Android 5.0(Lollipop)開始,Android 運行時默認使用 ART(Android Runtime),取代早期的 Dalvik 虛擬機。Dalvik 虛擬機采用 JIT(Just-In-Time)的解釋器在程序運行時進行編譯,而ART 通過預先編譯(Ahead-Of-Time, AOT)應用程序代碼為機器代碼,顯著提高了應用程序的運行效率,但同時ART需要更多的存儲空間。

5. 硬件抽象層 (HAL)

? ? ? 硬件抽象層(Hardware Abstraction Layer,HAL)主要提供對Linux內核驅動的封裝,這種封裝可以向上提供各種設備的編程接口,并且隱藏底層實現細節。HAL 讓 Android 無需關注較低級別的驅動程序實現,當框架API請求訪問設備硬件時,Android系統將為該硬件加載相應的庫模塊。

6.?Linux 內核

? ? ? ?Android系統基于Linux內核實現,同時在該基礎上添加了Android專用的驅動,例如:Binder。由于Linux系統的優秀性,基于Linux在安全性、內存管理、進程管理等都有了很大優勢。
Linux內核提供安全性、內存管理、進程管理、網絡協議棧和驅動模型等核心系統服務,同時也是系統硬件和軟件疊層之間的抽象層。

參考資料:

1.《Android全面分析》

2.《最強Android書:架構大剖析》

3.?架構概覽 ?|? Android Open Source Project

4. Android 架構 - GeeksforGeeks

5.《瘋狂Android講義》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93198.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93198.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93198.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

晶振電路的負載電容、電阻參數設計

系列文章目錄 文章目錄系列文章目錄前言一、晶振主要參數二、有源與無源區別三、無源晶振四、有源晶振總結前言 在硬件電路的設計中,晶振電路是必不可少的,它充當了整個電路心臟的作用。在這個晶振電路的設計中負載電容、電阻參數的選型是很重要的&…

電腦上練打字用什么軟件最好:10款打字軟件評測

現在孩子們在電腦上練打字,軟件一搜一大把,可好多家長和老師都犯愁:到底哪個管用?我帶200多個小學生練過字,前前后后試了十款軟件,今天就掏心窩子說說——有的看著花哨其實沒用,有的專業是專業但…

第五天~提取Arxml的模板信息

?? ARXML模板信息提取:解鎖汽車軟件的樂高魔法 在汽車電子的世界里,AUTOSAR(汽車開放系統架構)如同無形的神經系統,而ARXML文件正是承載這套神經系統藍圖的數字載體。當工程師們需要批量創建或修改ECU(電子控制單元)配置時,模板信息提取便成為了一項至關重要的核心技…

react+antd+vite自動引入組件、圖標等

前言:react在使用antd的時候,也是需要每個組件都在界面上按需引入的,那能不能自動生成,按需使用呢?我們這里說一說這個。安裝插件,組件按需引入unplugin-antd-resolverunplugin-auto-importnpm install unp…

深度學習與遙感入門(六)|輕量化 MobileNetV2 高光譜分類

系列回顧: (一)CNN 基礎:高光譜圖像分類可視化全流程 (二)HybridNet(CNNTransformer):提升全局感受野 (三)GCN 入門實戰:基于光譜 KNN…

第4節 神經網絡從公式簡化到卷積神經網絡(CNN)的進化之路

?? 深度學習的"玄學進化史" 從CNN用卷積層池化層處理圖片,循環網絡RNN如何利用上下文處理序列數據,到注意力機制讓Transformer橫空出世,現在的大語言模型已經能寫能畫能決策!每個新技巧都讓人驚呼"還能這么玩",難怪說深度學習像玄學——但這玄學,…

最新去水印小程序系統 前端+后端全套源碼 多套模版 免授權(源碼下載)

最新去水印小程序系統 前端后端全套源碼 多套模版 免授權 源碼下載:https://download.csdn.net/download/m0_66047725/91669468 更多資源下載:關注我

TCP Socket 編程實戰:實現簡易英譯漢服務

前言:TCP(傳輸控制協議)是一種面向連接、可靠的流式傳輸協議,與 UDP 的無連接特性不同,它通過三次握手建立連接、四次揮手斷開連接,提供數據確認、重傳機制,保證數據有序且完整傳輸。本文將基于…

CF566C Logistical Questions Solution

Description 給定一棵 nnn 個點的樹 TTT,點有點權 aia_iai?,邊有邊權 www. 定義 dist?(u,v)\operatorname{dist}(u,v)dist(u,v) 為 u→vu\to vu→v 的簡單路徑上的邊權和. 找到一個節點 uuu,使得 W∑i1ndist?(u,i)32aiW\sum\limits_{i1}^n…

聊天室全棧開發-保姆級教程(Node.js+Websocket+Redis+HTML+CSS)

前言 最近在學習websocket全雙工通信,想要做一個聯機小游戲,做游戲之前先做一個聊天室練練手。 跟著本篇博客,可以從0搭建一個屬于你自己的聊天室。 準備階段 什么人適合學習本篇文章? 答:前端開發者,有一…

后臺管理系統-2-vue3之路由配置和Main組件的初步搭建布局

文章目錄1 路由搭建1.1 路由創建(router/index.js)1.2 路由組件(views/Main.vue)1.3 路由引入并注冊(main.js)1.4 路由渲染(App.vue)2 element-plus的應用2.1 完整引入并注冊(main.js)2.2 示例應用(App.vue)3 ElementPlusIconsVue的應用3.1 圖標引入并注冊(main.js)3.2 示例應用…

使用 Let’s Encrypt 免費申請泛域名 SSL 證書,并實現自動續期

使用 Let’s Encrypt 免費申請泛域名 SSL 證書,并實現自動續期 目錄 使用 Let’s Encrypt 免費申請泛域名 SSL 證書,并實現自動續期 🛠? 環境準備💡 什么是 Let’s Encrypt?🧠 Let’s Encrypt 證書頒發原…

一鍵自動化:Kickstart無人值守安裝指南

Kickstart文件實現自動安裝1. Kickstart文件概述1.1 定義與作用Kickstart文件是Red Hat系Linux發行版(如RHEL、CentOS、Fedora)用于實現自動化安裝的配置文件,采用純文本格式保存。它通過預設安裝參數的方式,使系統安裝過程無需人…

深度解讀 Browser-Use:讓 AI 驅動瀏覽器自動化成為可能

目錄 一、什么是 Browser-Use? 二、Browser-Use 的核心功能 1. AI 與瀏覽器的鏈接橋梁 2. 無代碼 / 低代碼操作界面 3. 支持多家 LLM 4. 開發體驗簡潔 可快速上手 三、核心價值與適用場景 四、與 Playwright 的結合使用 五、總結與展望 https://github.com…

React.memo、useMemo 和 React.PureComponent的區別

useMemo 和 React.memo 都是 React 提供的性能優化工具,但它們的作用和使用場景有顯著不同。以下是兩者的全面對比: 一、核心區別總結特性useMemoReact.memo類型React Hook高階組件(HOC)作用對象緩存計算結果緩存組件渲染結果優化目標避免重復計算避免不…

Lumerical INTERCONNECT ------ CW Laser 和 OPWM 組成的系統

Lumerical INTERCONNECT ------ CW Laser 和 OPWM 組成的系統 引言 正文 引言 這里我們來簡單介紹一下 CW Laser 與 OSA 組成的簡單系統結構的仿真。 正文 我們構建一個如下圖所示的仿真結構。 我們將 CWL 中的 power 設置為 1 W。 然后直接運行仿真查看結果如下: 雖然 …

想漲薪30%?別只盯著大廠了!轉型AI產品經理的3個通用方法,人人都能學!

在AI產品經理剛成為互聯網公司香餑餑的時候,剛做產品1年的月月就規劃了自己的轉型計劃,然后用3個月時間成功更換賽道,轉戰AI產品經理,漲薪30%。 問及她有什么上岸秘訣?她也復盤總結了3個踩坑經驗和正確路徑&#xff0c…

基于Hadoop的全國農產品批發價格數據分析與可視化與價格預測研究

文章目錄有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主項目介紹每文一語有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主 項目介紹 隨著我國農業數字化進程的加快,農產品批發市場每天都會產生海量的價格…

STM32在使用DMA發送和接收時的模式區別

在STM32的DMA傳輸中,發送使用DMA_Mode_Normal而接收使用DMA_Mode_Circular的設計基于以下關鍵差異:1. ?觸發機制的本質區別??發送方向(TX)?:由USART的?TXE標志(發送寄存器空)觸發?&#x…

【秋招筆試】2025.08.15餓了么秋招機考-第三題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍在線刷題 bishipass.com 03. A先生的商貿網絡投資 問題描述 A先生是一位精明的商人,他計劃在 n n n 個城市之間建立商貿網絡。目前有 m m