安卓系統開發之源碼架構簡介

2021-02-23 跟老林學智嵌
Android的源碼十分龐大,以Android7為例,除去編譯產生的中間文件與燒錄用的鏡像文件,約有20GB,編譯完成後約有140GB。Android源碼就像一片大海,要去通讀源碼就好像要把海水舀幹,窮盡一生也難以完成。我們學習Android開發並不需要去了解每一個局部細節,是要在了解整體結構的基礎上,用到哪一塊就去閱讀哪一塊內容。逐步把每一塊內容從上層到底層串聯在一起,慢慢的就能窺見Android的全貌。

以基於Android7的rk3399工程為例,源碼文件如下:

安卓源碼目錄名稱

描述

abi

應用程式二進位接口

art

ART運行環境

bionic

系統C庫

bootable

bootable 啟動引導相關

build

存放系統編譯規則及generic等基礎開發包配置

cts

Android兼容性測試套件標準

dalvik

dalvik虛擬機

developers

開發者目錄

development

應用程式開發相關

device

設備相關配置

docs

參考文檔目錄

external

開源模組相關文件

frameworks

應用程式框架,Android系統核心部分,由Java和C++編寫

hardware

主要是硬體抽象層的代碼

kernel

Linux內核

libcore

核心庫相關文件

libnativehelper

動態庫,實現JNI庫的基礎

ndk

NDK相關代碼,幫助開發人員在應用程式中嵌入C/C++代碼

out

編譯輸出目錄

packages

應用程式包

pdk

Plug Development Kit 的縮寫,本地開發套件

platform_testing

平臺測試

prebuilts

x86和arm架構下預編譯的一些資源

sdk

sdk和模擬器

system

底層文件系統庫、應用和組件

toolchain

工具鏈文件

tools

工具文件

u-boot

u-boot啟動引導程序

vendor

廠商定製目錄

Makefile

全局Makefile文件,用來定義編譯規則

開發中較為常用的目錄有kernel、frameworks、packages、device、build等。


圖:安卓系統架構圖

1)應用程式層(System Apps)

應用層是一些系統應用,例如圖示上的桌面、聯繫人、電話、瀏覽器和聯繫人管理等。這些應用都是提供一些基礎功能應用。這些應用與安卓應用開發工程師使用java開發的apk並無二致。事實上整個系統從底層搭建上來的最終目的就是可以自由運行上層應用,以實現各種各樣的需求。

2)應用框架層(Java API Framework)

應用框架層向它的上一層,即應用程式層提供開發應用所需要的API,應用開發人員大部分情況是在和它打交道。應用開發者在AndroidStudio創建一個應用工程時需要選擇API的版本,在工程中就可以看到所有API提供的接口。Framework所提供的主要組件如下表。

名稱

含義

描述

Activity Manager

活動管理器

維護應用程式的Activity生命周期

Package Manager

包管理器

管理所有安裝在系統中的應用程式包

Location Manager

位置管理器

管理地理位置和定位

Resource Manager

資源管理器

管理應用程式使用的各種資源,如字符串、圖片、布局文件、顏色文件等。

Notification Manager

通知管理器

的管理狀態欄中顯示通

Telephony Manager

電話管理器

管理行動電話相關的功能

Window Manager

窗口管理器

管理所有開啟的窗口程序

Content Provider

內容提供器

應用程式之間共享數據的一種機制實現

3)系統庫和Android運行時(Native and Android Runtime)

Native這層是由一些本地服務和一些連結庫組成的,都是通過C和C++語言實現。

名稱

描述

SurfaceManager

圖層管理

Media Framework

媒體庫

SQLite

輕型的資料庫

OpenGL ES

3D繪圖函數庫

FreeType

字體引擎,提供了統一的接口訪問多種字體格式文件

WebKit

瀏覽器網頁排版引擎

SGL

2D圖形渲染引擎

SSL

安全套接層,為網絡通信提供安全及數據完整性的安全協議

Libc

標準C系統函庫在Linux上的實現

Android運行時(Runtime)包括核心庫(CoreLibraries)和Dalvik虛擬機(VirtualMachine)。Android5.0後,Dalvik虛擬機被ART取代。核心庫提供了Java語言的大部分功能,使得上層可以運行java語言編寫的應用。Dalvik虛擬機主要是完成對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能。Dalvik虛擬機(DVM),是專門設置在行動裝置中運行的java虛擬機,允許在有限的內存中同時運行多個虛擬機的實例。DVM的替代者ART採用了aop技術,安裝程序時,將字節碼預先編譯成機器碼並存儲在本地,這樣應用程式可以不再次編譯後才能啟動程序。而DVM則是每次打開程序都要編譯一次程序。這樣就帶了一些優勢,如應用啟動更快、運行更快、體驗更流暢、觸感反饋更及時,但是也帶來了安裝時間和存儲空間加大的問題,但是隨著智能設備的硬體越來越富餘,這一點的越來越無關緊要,運行流暢是第一位的追求,

4)硬體抽象層(HAL層)

硬體抽象層是位於作業系統內核與硬體電路之間的接口層,其目的在於將硬體抽象化。它隱藏了特定平臺的硬體接口細節,為作業系統提供虛擬硬體平臺,使其具有硬體無關性,可在多種平臺上進行移植。 通過硬體抽象層,把對硬體的支持分成了兩層,一層放在用戶空間,一層放在內核空間,其中,硬體抽象層運行在用戶空間,而Linux內核驅動程序運行在內核空間。為什麼不都放在內核空間,是因為Linux內核原始碼版權遵循GNU License,是要完全共享的。而廠商希望保留自己獨有的智慧財產權,就把一部分調試參數都放在HAL層內。

5)linux內核

Android核心系統服務依賴於Linux內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。Linux內核也包含了所有的驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash內存驅動、Binder(IPC)驅動、電源管理等等。



將文章轉發和分享,將獲得由蘇嵌教育支持提供的禮包一份及學習資料一份都很實用哦!

步驟:

1、分享文章並截圖

1、關注並進入公眾號

2、回復關鍵詞「福利領取」

3、助理「蘇小嵌」將會為你安排禮品發放哦



相關焦點

  • 開發直播帶貨系統,直播帶貨系統源碼可是大功臣
    直播帶貨系統如此受商家和用戶的喜愛,直播帶貨系統源碼可是一個大功臣。接下來簡單分析一下,如此受人追捧的直播帶貨系統是如何使用直播帶貨系統源碼開發的?直播帶貨系統源碼一、關於直播帶貨系統源碼開發的語言環境直播帶貨系統源碼採用的是開源腳本語言,安卓端直播軟體開發採用java語言;蘋果端手機開發採用原生語言oc;直播後臺管理系統開發採用php語言,基於thinkphp
  • 做彩票系統源碼開發用php和java兩個語言間的區別
    彩票行業進入我國已經幾十年了,隨著時間的沉澱,也是發展起來了,也有投資者看中了彩票行業的前景想要做彩票系統源碼開發,而像是php與java是目前非常主流的兩個語言,對於系統開發也是需要做選擇的,且也是經常會在開發web應用時發生分歧,開發前很多外包團隊肯定會問你,是用java開發還是
  • 安卓系統是哪個國家開發的 手機安卓系統屬於哪個國家?
    安卓系統是哪個國家開發的 手機安卓系統屬於哪個國家? 並且現在這個系統是沒有中文的,只不過方便國人記憶,憑藉音譯過來就變成了安卓。 但是Android 並不是一開始就屬於GOOGEL的,也是他們收購了Andy Rubin開發的這個軟體,從而加工更新得來。 得到了ANDROID系統之後的谷歌開始了他們的一系列動作,先是大肆尋找加盟商與手機科技的人才,共同運營,匯集了眾多才子的安卓這時候已經基本成型了。
  • 零基礎學安卓開發的3個步驟、N本好書
    一個有著負編程基礎的少年卻有自己開發Android應用的野望~少年之野望如何實現?APP如何誕生?
  • 安卓10源碼開發定製(21)GPS定位研究(3)修改GPS定位數據測試app gps定位代碼
    一、測試gps定位功能的方法探討     在安卓App gps定位開發過程中,往往需要進行GPS定位的測試。
  • 谷歌禁止中國使用安卓系統?
    安卓是基於Linux系統開發的,而Linux是一款免費的作業系統(有GNU GPL授權證約束,要求免費),任何人可以免費獲得,並參與修改,從這個角度說Linux是全球程式設計師的共同勞動成果。當然這麼說安卓有點不對。安卓的系統架構有四層,分別為應用程式層、應用程式框架層、系統運行庫層和Linux內核層。從這裡可以看出,安卓是以Linux為地基搞出的新作業系統,有Linux的基因,但已經不是Linux。
  • 一對一直播源碼開發的技術框架
    整套一對一直播源碼共涉及三個端,也就是說,在進行一對一直播源碼開發時,我們要從用戶端、主播端和伺服器端進行討論。1.用戶端用戶可自行選擇對方(主播)的性別、連麥類型(語音、視頻)和每分鐘所需支付的價格,一對一直播源碼通過一對一軟體進行用戶匹配,最長匹配時間可在後臺進行設置若最長匹配時間段內沒有主播進行搶聊,用戶方將被提示「重新匹配」或「等會再來」在用戶發起匹配前,系統會自動對用戶帳戶餘額進行監測
  • 高質量的教育平臺源碼對教育系統開發後期運營的好處
    如今移動網際網路在不斷發展,教育系統在如此發展背景下,與直播行業相結合,讓在線教育這種形式改變教育領域以往存在的種種不足,加快教育領域的發展。教育平臺源碼作為開發教育系統的根基,其高質量的源碼對於教育系統後期運營有哪些好處呢?
  • openEuler作業系統源碼正式公開
    近日,歐拉作業系統 openEuler 正式開放原始碼、鏡像及開發測試環境。華為表示,作為項目主要籌備方,將會逐步開放在 ICT 基礎軟體領域的技術積累,將作業系統、編譯器/JDK 等領域的基礎平臺能力開源至 openEuler 社區。
  • 樂創物聯物聯網架構之硬體層中間件Arduino簡介
    了解熟悉工業自動化領域的,也開發過物聯網相關的產品。我的初衷是做工業物聯網的,但這個系統太過於龐大,後續也會自主去學習一下。所以就先做小的系統,例如構建一整套智能家居系統,從硬體到軟體全系列。下面就開始這套智能家居系統是如何在物聯網基礎上構建。在這裡你可以0開始,然後到1質變,僅僅需要一起跟我學樂創物聯物聯網架構的學習。
  • 直播系統開發中,直播源碼起到的作用有哪些?
    直播系統的需求比以往要火熱,直播源碼技術不斷前進,儘管用戶總流量紅利期已過,但網絡直播平臺已經進入成熟的成長期。在現場直播中,現場直播源碼功能的多樣性是在視頻直播市場中出彩的關鍵。直播源開發作為直播系統的脊梁骨幹。那麼直播系統開發中,直播源碼起到的作用有哪些?
  • 小眾卻不可缺少的相親交友系統源碼怎麼成為直播軟體開發的潛力股
    相親交友軟體作為視頻直播系統開發行業的小眾源碼,成為社交類軟體開發的新寵。根據相關統計數據顯示,2014年中國網絡婚戀交友行業市場營收約23億元,同比增長13.7%。與此同時,越來越多的相親交友軟體進入了網際網路婚戀行業的市場,相親交友系統源碼開發的需求得到了進一步的擴大。
  • 安卓開發:JobService中的兩個返回值,讓多少安卓程式設計師頭暈轉向
    前面幾個章節我們把JobInfo中的幾個約束條件都講完了,其實JobScheduler模塊還有一個難點或者說讓不少安卓程式設計師直接頭暈轉向的一點,那就JobService的兩個返回值。在安卓開發過程中,經常會冒出幾個令為難以捉摸的返回值。
  • 在線教育直播系統源碼有哪些特點?開發需從什麼方面考慮?
    一套優秀的在線教育直播系統源碼應該具備哪些特點呢?結合市面上大多數產品例子,小編總結了線教育直播系統源碼應有的幾個特點:3、多終端化由於移動終端的普及與迅速發展,用戶可通過多種終端設備訪問在線教育直播系統,成為了一種常態,因此,一個優秀的在線教育直播系統是支持多終端的,它可以實現良好的優化效果,應用於智慧型手機、pc、平板等。
  • Android年度總結 | 安卓巴士:砥礪前行 一心一意為開發者服務
    有消息稱,谷歌將在3月14日發布首個安卓9.0開發者預覽版,將支持通話錄音功能,其實這個國產安卓定製系統中早就實現了。簡單來說,安卓9.0算是補足原生系統的短板。而此系統的三大特性同樣非常令人期待。首先,就是Android 9.0系統將由谷歌進行統一推送。
  • 「精品源碼分享」springboot開發的學校教務管理系統
    前言大家好,我是it分享師,今天給大家帶來一個基於Springboot開發的精緻的學校教務管理系統的源碼!如果覺得本文對您有用的話,點讚,轉發,關注三連,私信我獲取源碼!創作不易,謝謝支持!使用技術該系統使用了springboot+mybatis+layui+shiro+jquery等技術開發而成有3個基本角色,為管理員,老師和學生!管理員具有這些模塊的所有功能!老師具有課程管理,成績管理,學生管理等功能!學生有選課管理等功能!基本實現了學校學生選課的一個後臺管理系統!
  • 直播平臺搭建,直播系統源碼開發,輕鬆擁有自己的在線教育網校
    越來越多的教育機構開始開發自己的線上教育平臺。直播平臺搭建,直播系統源碼開發主要有四種方式:自主研發、外包研發、購買軟體、saas租賃。4、購買成頻品直播系統源碼也就是直接購買已經搭建好的直播系統,這種成品源碼的優勢就是價格實惠,並且工期短,能快速上線運營。
  • 華為鴻蒙系統驚現ADB模式 兼容安卓還是抄襲安卓?
    上周末華為在HDC開發者大會上宣布了鴻蒙OS,這是基於微內核架構的分布式作業系統。具備分布架構、天生流暢、內核安全及生態互享等優勢。餘承東表示,鴻蒙OS比Andorid有更強性能、更高的安全性、分布式能力、面向未來全場景能力,這是面向未來的作業系統,想告訴大家我們隨時可用,但是考慮到合作夥伴關係,目前Android的生態,減少大家工作量。
  • 利用教育源碼進行線上教育平臺開發要有具體計劃
    隨著線上教育越來越融入到我們的工作和生活中,讓我們的學習和生活也發生了大的變化,而且利用教育源碼進行線上教育平臺開發後,有越來越多的人選擇線上教育這種學習和培訓方式,但是我們知道,線上教育平臺開發的技術要求比較高,那麼如何進行開發呢?
  • HTC安卓4.0系統下載 安卓4.0系統升級教程
    要進行HTC安卓4.0系統的升級,首先你的手機硬體要達標,像類似HTC G13手機的配置。