淺談Android os體系架構

風靈使發表於2018-11-04

OS體系結構介紹:
在這裡插入圖片描述
第一、作業系統層(OS)

第二、各種庫(Libraries)和Android 執行環境(RunTime)

第三、應用程式框架(Application Framework)

第四、應用程式(Application)

以下分別介紹Andoid各個層次的軟體的重點及其相關技術:

● 作業系統層(OS)

Android使用Linux2.6作為作業系統,Linux2.6是一種標準的技術,Linux也是一個開放的作業系統。Android對作業系統的使用包括核心和驅動程式兩部分,Android的Linux核心為標準的Linux2.6核心,Android更多的是需要一些與移動裝置相關的驅動程式。

主要的驅動如下所示:

顯示驅動(Display Driver):常用基於Linux的幀緩衝(Frame Buffer)驅動。

Flash記憶體驅動(Flash Memory Driver)

照相機驅動(Camera Driver):常用基於Linux的v4l(Video for )驅動。

音訊驅動(Audio Driver):常用基於ALSA(Advanced Linux Sound Architecture,高階Linux聲音體系)驅動。

WiFi驅動(Camera Driver):基於IEEE 802.11標準的驅動程式

鍵盤驅動(KeyBoard Driver)

藍芽驅動(Bluetooth Driver)

Binder IPC驅動: Andoid一個特殊的驅動程式,具有單獨的裝置節點,提供程式間通訊的功能。

Power Management(能源管理)

● 各種庫(Libraries)和Android 執行環境(RunTime)

本層次對應一般嵌入式系統,相當於中介軟體層次。Android的本層次分成兩個部分一個是各種庫,另一個是Android 執行環境。本層的內容

大多是使用C++實現的。

在其中,各種庫包括:

▅ C庫:C語言的標準庫,這也是系統中一個最為底層的庫,C庫是通過Linux的系統呼叫來實現。

▅ 多媒體框架(MediaFrameword):這部分內容是Android多媒體的核心部分,基於PacketVideo(即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一個部分是音訊、視訊的回放(PlayBack),另一部分是則是音視訊的紀錄(Recorder)。

▅ SGL:2D影象引擎。

▅ SSL:即Secure Socket Layer位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。

▅ OpenGL ES 1.0 :本部分提供了對3D的支援。

▅ 介面管理工具(Surface Management):本部分提供了對管理顯示子系統等功能。

▅ SQLite:一個通用的嵌入式資料庫

▅ WebKit:網路瀏覽器的核心

▅ FreeType:點陣圖和向量字型的功能。

Android 的各種庫一般是以系統中介軟體的形式提供的,它們均有的一個顯著特點就是與移動裝置的平臺的應用密切相關。

Android 執行環境主要指的虛擬機器技術——Dalvik。Dalvik虛擬機器和一般JAVA虛擬機器(Java VM)不同,它執行的不是JAVA標準的位元組碼(bytecode )而是Dalvik可執行格式(.dex)中執行檔案。在執行的過程中,每一個應用程式即一個程式(Linux的一個Process)。 二者最大的區別在於Java VM是以基於棧的虛擬機器(Stack-based),而Dalvik是基於暫存器的虛擬機器(Register-based)。顯然,後者最大的好處在於可以根據硬體實現更大的優化,這更適合移動裝置的特點。

● 應用程式框架(Application Framework)

Android的應用程式框架為應用程式層的開發者提供APIs,它實際上是一個應用程式的框架。由於上層的應用程式是以JAVA構建的,因此本層次提供的首先包含了UI程式中所需要的各種控制元件:

例如:Views (檢視元件)包括 lists(列表), grids(柵格), text boxes(文字框), buttons(按鈕)等。甚至一個嵌入式的Web瀏覽器。

一個Andoid的應用程式可以利用應用程式框架中的以下幾個部分:

  • Activity (活動)
  • Broadcast Intent Receiver (廣播意圖接收者)
  • Service (服務)
  • Content Provider (內容提供者,讓開發者在不同應用程式之間共享資料。)

應用程式框架也包括一些高階管理(Manager):

  • Activity Manager:控制介面的生命週期,包括管理活動(Activity)棧。
  • Notification Manager:提供一貫的非侵入式的機制來通知使用者(例如:當你正在玩遊戲時有人給你發簡訊,通知不會終止你的遊戲,你會聽到一個聲音提示)。
  • Resource Manager:支援非程式碼資源,如字串和圖形被外部化
  • Window Maganger、Package Mananger、Power Manager、Service Manager等等

● 應用程式(Application)

Android的應用程式主要是使用者介面(User Interface)方面的,通常以JAVA程式編寫,其中還可以包含各種資原始檔(放置在res目錄中)JAVA程式及相關資源經過編譯後,將生成一個APK包。Android本身提供了主螢幕(Home),聯絡人(Contact),電話(Phone),瀏覽器(Browers)等眾多的核心應用。同時應用程式的開發者還可以使用應用程式框架層的API實現自己的程式。這也是Android開源的巨大潛力的體現。

開發者需要知道的Android庫

核心Android開發庫

所以在這個列表中,將幫助開發者瞭解哪些是可用的核心API。所有的Android裝置將提供至少這些API支援:

android.util:核心工具包中包含底層類,字串格式化和XML解析工具、底層類​​。

android.os:作業系統包提供了訪問基本的作業系統服務,如訊息傳遞、程式間通訊、時鐘功能和除錯。

android.graphics:圖形API提供了支援畫布、顏色和繪製圖元的低階別的圖形類並且支援繪製畫布。

android.text:用於顯示和解析文字的文字處理工具。

android.database:在資料庫處理遊標時提供底層類支援。

android.content:content API管理資料訪問,提供服務來管理資源、內容提供者(content provider)和包。

android.view:檢視是核心的使用者介面類。所有使用者介面元素使用的是一系列檢視,以構成使用者互動的元件。

android.widget**:內建在View包內,小部件類是“這裡是我們前面建立的”使用者介面元素,可以在自己的應用程式中使用。包括列表、按鈕和佈局。

com.google.android.maps:高階的API,它提供了訪問本地地圖控制元件,可以在自己的應用程式中使用。包括MapView的控制、用於標註和控制您的嵌入式地圖的疊加以及MapController類。

android.app:一個高層次的包,允許訪問應用程式模型。該應用程式包包括Activity和Service的API等是Android應用程式的基礎。

android.provider:方便開發者訪問標準的內容提供者(比如聯絡人資料庫),provider包提供類給開發者訪問標準的資料庫。

android.telephony:telephony API讓開發者直接接觸電話底層,開發者可以打電話、接電話、顯示通話記錄、通話狀態和短訊息。

android.webkit:WebKit的軟體包功能的API與基於Web的內容的工作,其中包括一個WebView控制元件在您的活動中嵌入瀏覽器和cookie管理器。

同樣,你剛才看到的是Android的庫可以幫助您快速構建應用程式的簡化列表!除了在Android API,Android棧還包括一組的C/C++庫,可通過應用程式框架釋出出來。它們包括:

  • OpenGL:用於支援基於OpenGL ES1.0 API、3D圖形庫。
  • FreeType**:這支援點陣圖和向量字型渲染。
  • SGL**:用於提供2D圖形引擎的核心庫。
  • ibc:標準C庫,為基於Linux的嵌入式裝置進行了優化。
  • SQLite:用於儲存應用程式資料的輕量級的關聯式資料庫引擎。
  • SSL:支援使用安全套接字層加密協議進行安全網際網路通訊。

注意:到此,要介紹的就太多了,我將在這裡結束。只是多一個部分,你可以做自己的事情。如果你不能看完整個帖子,可以將其加入書籤,以備將來參考。因為,這裡的大多數內容不會有太大變化!

高階Android開發庫

我們所看到的核心庫,到目前為止提供所有開發Android應用程式需要的功能。然而鑽研高階API將會使用更高階的功能並帶來額外的樂趣。

儘管如此,值得注意的是,由於Android希望針對移動硬體有更廣泛的適應性,因此要注意下列API適用的場合和以及使用時裝置是否具備條件。

android.location:基於位置的服務的API,使應用程式訪問裝置的當前物理位置。基於位置的服務提供通用的訪問使用任何位置固定的硬體或技術裝置上可用的位置資訊。

android.media:媒體API提供了用於播放音訊和視訊媒體檔案,包括流媒體和錄製的支援。

android.opengl:Android提供使用的OpenGL ES API,你可以用它來建立動態3D使用者介面為你的應用程式的強大的3D渲染引擎。

android.hardware:如有可能,硬體API公開的感測器硬體,包括攝像頭、加速計和指南針感測器。

android.bluetooth,android.net.wifi,android.telephony:Android也提供了硬體平臺,包括藍芽、Wi-Fi和電話硬體的低階別的訪問。

相關文章