專家專欄:Android層次化安全架構及核心組件概覽

來源:互聯網
上載者:User

BKJIA獨家特稿】本文為BKJIA專欄作家李洋的最新一篇文章《Android層次化安全架構及核心組件概覽》,本文將詳細介紹Android層次化安全架構及其核心組件。

Android層次化安全架構

Android作為一個行動裝置的平台,其軟體階層包括了一個作業系統OS),中介軟體MiddleWare)和應用程式Application)。根據Android的軟體框圖,其軟體階層自下而上分為以下幾個層次:

  • 作業系統層OS)
  • 各種庫Libraries)和Android 運行環境RunTime)
  • 應用程式架構ApplicationFramework)
  • 應用程式Application)

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

1)作業系統層OS)

Android使用Linux 2.6作為作業系統,Linux 2.6是一種標準的技術,Linux也是一個開放的作業系統。Android對作業系統的使用包括核心和驅動程式兩部分,Android的Linux核心為標準的Linux 2.6核心,Android更多的是需要一些與行動裝置相關的驅動程式。主要的驅動如下所示:

  • 顯示驅動DisplayDriver):常用基於Linux的幀緩衝Frame Buffer)驅動
  • Flash記憶體驅動FlashMemory Driver)
  • 照相機驅動CameraDriver):常用基於Linux的v4lVideo for)驅動。
  • 音頻驅動AudioDriver):常用基於ALSAAdvanced Linux Sound Architecture,進階Linux聲音體系)驅動
  • WiFi驅動CameraDriver):基於IEEE 802.11標準的驅動程式
  • 鍵盤驅動KeyBoardDriver)
  • 藍牙堆疊BluetoothDriver)
  • BinderIPC驅動:Andoid一個特殊的驅動程式,具有單獨的裝置節點,提供進程間通訊的功能。
  • PowerManagement能源管理)

2)各種庫Libraries)和Android 運行環境RunTime)

本層次對應一般嵌入式系統,相當於中介軟體層次。Android的本層次分成兩個部分一個是各種庫,另一個是Android 運行環境。本層的內容大多是使用C++實現的。 在其中,各種庫包括:

  • C庫:C語言的標準庫,這也是系統中一個最為底層的庫,C庫是通過Linux的系統調用來實現。
  • 多媒體架構MediaFrameword):這部分內容是Android多媒體的核心部分,基於PacketVideo即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一個部分是音頻、視頻的回放PlayBack),另一部分是則是音視頻的紀錄Recorder)。
  • SGL:2D映像引擎。
  • SSL:即SecureSocket 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)。顯然,後者最大的好處在於可以根據硬體實現更大的最佳化,這更適合行動裝置的特點。

3)應用程式架構ApplicationFramework)

Android的應用程式架構為應用程式層的開發人員提供APIs,它實際上是一個應用程式的架構。由於上層的應用程式是以JAVA構建的,因此本層次提供的首先包含了UI程式中所需要的各種控制項:例如: Views (視圖組件)包括 lists(列表), grids(柵格), textboxes(文字框), buttons(按鈕)等,甚至一個嵌入式的Web瀏覽器。一個Android的應用程式可以利用應用程式架構中的以下幾個部分: Activity活動)、Broadcast IntentReceiver 廣播意圖接收者)、Service 服務)、Content Provider 內容提供者)。

4)應用程式Application)

Android的應用程式主要是使用者介面UserInterface),通常以JAVA程式編寫,其中還可以包含各種資源檔放置在res目錄中)。JAVA程式及相關資源經過編譯後,將產生一個APK包。Android本身提供了主畫面Home),連絡人Contact),電話Phone),瀏覽器Browsers)等眾多的核心應用。同時應用程式的開發人員還可以使用應用程式架構層的API實現自己的程式。

圖1 Android分層安全架構圖

Android的組件模型ComponentModel)

Android系統中包括如下4種組件:

1)Activity

Activity就是一個介面,這個介面裡面可以放置各種控制項。例如:TaskManager的介面、Root Explorer的介面等;Activity是為使用者操作而展示的可視化使用者介面。例如說,一個activity可以展示一個功能表項目列表供使用者選擇,或者顯示一些包含說明的照片。一個短訊息應用程式可以包括一個用於顯示做為發送對象的連絡人的列表的activity,一個給選定的連絡人寫簡訊的activity以及翻閱以前的簡訊和改變設定的activity。儘管它們一起組成了一個內聚的使用者介面,但其中每個activity都與其它的保持獨立。每個都是以Activity類為基類的子類實現。

一個應用程式可以只有一個activity,或者,如剛才提到的簡訊應用程式那樣,包含很多個。而每個activity的作用以及其數目,自然取決於應用程式及其設計。一般情況下,總有一個應用程式被標記為使用者在應用程式啟動的時候第一個看到的。從一個activity轉向另一個的方式是靠當前的activity啟動下一個。

每個activity都被給予一個預設的視窗以進行繪製。一般情況下,這個視窗是滿屏的,但它也可以是一個小的位於其它視窗之上的浮動視窗。一個activity也可以使用超過一個的視窗。例如,在activity運行過程中彈出的一個供使用者反應的小對話方塊,或是當使用者選擇了螢幕上特定項目後顯示的必要資訊。

視窗顯示的可視內容是由一系列視圖構成的,這些視圖均繼承自View 基類。每個視圖均控制著視窗中一塊特定的矩形空間。父級視圖包含並組織它子視圖的布局。分葉節點視圖位於視圖層次最底端)在它們控制的矩形中進行繪製,並對使用者對其直接操作做出響應。所以,視圖是activity與使用者進行互動的介面。例如說,視圖可以顯示一個小圖片,並在使用者指點它的時候產生動作。Android有很多既定的視圖供使用者直接使用,包括按鈕、文本域、捲軸、功能表項目、複選框等等。

2)Service

服務是運行在背景功能模組。如檔案下載、音樂播放程式等;服務沒有可視化的使用者介面,而是在一段時間內在後台運行。例如說,一個服務可以在使用者做其它事情的時候在背景播放背景音樂、從網路上擷取一些資料或者計算一些東西並提供給需要這個運算結果的activity使用。每個服務都繼承自Service基類。

一個媒體播放器播放播放清單中的曲目是一個不錯的例子。播放器應用程式可能有一個或多個activity來給使用者選擇歌曲並進行播放。然而,音樂播放這個任務本身不應該為任何activity所處理,因為使用者期望在他們離開播放器應用程式而開始做別的事情時,音樂仍在繼續播放。為達到這個目的,媒體播放器activity應該啟用一個運行於背景服務。而系統將在這個activity不再顯示於螢幕之後,仍維持音樂播放服務的運行。

可以串連至綁定)一個正在啟動並執行服務如果服務沒有運行,則啟動之)。串連之後,可以通過那個服務暴露出來的介面與服務進行通訊。對於音樂服務來說,這個介面可以允許使用者暫停、回退、停止以及重新開始播放。

3)ContentProvider

它是Android平台應用程式間資料共用的一種標準介面,它以類似於URIUniversalResources Identification)的方式來表示資料,如:content://contacts/people/1101;內容提供者將一些特定的應用程式資料供給其它應用程式使用。資料可以儲存於檔案系統、SQLite資料庫或其它方式。內容提供者繼承於ContentProvider 基類,為其它應用程式取用和儲存它管理的資料實現了一套標準方法。然而,應用程式並不直接調用這些方法,而是使用一個ContentResolver 對象,調用它的方法作為替代。ContentResolver可以與任意內容提供者進行會話,與其合作來對所有相關互動通訊進行管理。

4)BroadcastReceiver

Broadcast Receiver是一個專註於接收廣播通知資訊,並做出對應處理的組件。很多廣播是源自於系統代碼的。例如,通知時區改變、電池電量低、拍攝了一張照片或者使用者改變了語言選項。應用程式也可以進行廣播,例如通知其它應用程式一些資料下載完成並處於可用狀態。

應用程式可以擁有任意數量的Broadcast Receiver以對所有它感興趣的通知資訊予以響應。所有的接收器均繼承自BroadcastReceiver基類。Broadcast Receiver沒有使用者介面。然而,它們可以啟動一個activity來響應它們收到的資訊,或者用NotificationManager來通知使用者。通知可以用很多種方式來吸引使用者的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態列上放一個持久的表徵圖,使用者可以開啟它並擷取訊息。

與此組件相關的概念是Intent,Intent是一個對動作和行為的抽象描述,負責組件之間程式之間進行訊息傳遞。而BroadcastReceiver組件則提供了一種把Intent作為一個訊息廣播出去,由所有對其感興趣的程式對其作出反應的機制。舉個簡單的例子,為了實現一個系統啟動後播放音樂的功能,則可以定義Intent為android.intent.action.BOOT_COMPLETED,由BroadcastReceiver組件將其進行廣播,而系統中的Media Player接收到該資訊後則進行播放。

如上所述,4個組件之間的關係如:

圖2 Android各組件關係圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.