成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

專家專欄:Android層次化安全架構(gòu)及核心組件概覽

原創(chuàng)
移動開發(fā) Android
Android系統(tǒng)承襲了Linux開源操作系統(tǒng)的安全特性,并采用了層次化的方式來保證系統(tǒng)安全,本文將詳細介紹Android層次化安全架構(gòu)及其核心組件。

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

Android層次化安全架構(gòu)

Android作為一個移動設備的平臺,其軟件層次結(jié)構(gòu)包括了一個操作系統(tǒng)(OS),中間件(MiddleWare)和應用程序(Application)。根據(jù)Android的軟件框圖,其軟件層次結(jié)構(gòu)自下而上分為以下幾個層次:

  • 操作系統(tǒng)層(OS)
  • 各種庫(Libraries)和Android 運行環(huán)境(RunTime)
  • 應用程序框架(ApplicationFramework)
  • 應用程序(Application)

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

(1)操作系統(tǒng)層(OS)

Android使用Linux 2.6作為操作系統(tǒng),Linux 2.6是一種標準的技術,Linux也是一個開放的操作系統(tǒng)。Android對操作系統(tǒng)的使用包括核心和驅(qū)動程序兩部分,Android的Linux核心為標準的Linux 2.6內(nèi)核,Android更多的是需要一些與移動設備相關的驅(qū)動程序。主要的驅(qū)動如下所示:

  • 顯示驅(qū)動(DisplayDriver):常用基于Linux的幀緩沖(Frame Buffer)驅(qū)動
  • Flash內(nèi)存驅(qū)動(FlashMemory Driver)
  • 照相機驅(qū)動(CameraDriver):常用基于Linux的v4l(Video for)驅(qū)動。
  • 音頻驅(qū)動(AudioDriver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅(qū)動
  • WiFi驅(qū)動(CameraDriver):基于IEEE 802.11標準的驅(qū)動程序
  • 鍵盤驅(qū)動(KeyBoardDriver)
  • 藍牙驅(qū)動(BluetoothDriver)
  • BinderIPC驅(qū)動:Andoid一個特殊的驅(qū)動程序,具有單獨的設備節(jié)點,提供進程間通訊的功能。
  • PowerManagement(能源管理)

( 2)各種庫(Libraries)和Android 運行環(huán)境(RunTime)

本層次對應一般嵌入式系統(tǒng),相當于中間件層次。Android的本層次分成兩個部分一個是各種庫,另一個是Android 運行環(huán)境。本層的內(nèi)容大多是使用C++實現(xiàn)的。 在其中,各種庫包括:

  • C庫:C語言的標準庫,這也是系統(tǒng)中一個最為底層的庫,C庫是通過Linux的系統(tǒng)調(diào)用來實現(xiàn)。
  • 多媒體框架(MediaFrameword):這部分內(nèi)容是Android多媒體的核心部分,基于PacketVideo(即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一個部分是音頻、視頻的回放(PlayBack),另一部分是則是音視頻的紀錄(Recorder)。
  • SGL:2D圖像引擎。
  • SSL:即SecureSocket Layer位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。
  • OpenGL ES 1.0 :本部分提供了對3D的支持。
  • 界面管理工具(Surface Management):本部分提供了對管理顯示子系統(tǒng)等功能。
  • SQLite:一個通用的嵌入式數(shù)據(jù)庫
  • WebKit:網(wǎng)絡瀏覽器的核心
  • FreeType:位圖和矢量字體的功能。

Android 的各種庫一般是以系統(tǒng)中間件的形式提供的,它們均有的一個顯著特點就是與移動設備的平臺的應用密切相關。 Android 運行環(huán)境主要指的虛擬機技術——Dalvik。Dalvik虛擬機和一般Java虛擬機(Java VM)不同,它執(zhí)行的不是Java標準的字節(jié)碼(bytecode )而是Dalvik可執(zhí)行格式(.dex)中執(zhí)行文件。在執(zhí)行的過程中,每一個應用程序即一個進程(Linux的一個Process)。 二者最大的區(qū)別在于Java VM是以基于棧的虛擬機(Stack-based),而Dalvik是基于寄存器的虛擬機(Register-based)。顯然,后者最大的好處在于可以根據(jù)硬件實現(xiàn)更大的優(yōu)化,這更適合移動設備的特點。

(3)應用程序框架(ApplicationFramework)

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

(4)應用程序(Application)

Android的應用程序主要是用戶界面(UserInterface),通常以JAVA程序編寫,其中還可以包含各種資源文件(放置在res目錄中)。JAVA程序及相關資源經(jīng)過編譯后,將生成一個APK包。Android本身提供了主屏幕(Home),聯(lián)系人(Contact),電話(Phone),瀏覽器(Browsers)等眾多的核心應用。同時應用程序的開發(fā)者還可以使用應用程序框架層的API實現(xiàn)自己的程序。

圖1 Android分層安全架構(gòu)圖

Android的組件模型(ComponentModel)

Android系統(tǒng)中包括如下4種組件:

(1)Activity

Activity就是一個界面,這個界面里面可以放置各種控件。例如:TaskManager的界面、Root Explorer的界面等;Activity是為用戶操作而展示的可視化用戶界面。例如說,一個activity可以展示一個菜單項列表供用戶選擇,或者顯示一些包含說明的照片。一個短消息應用程序可以包括一個用于顯示做為發(fā)送對象的聯(lián)系人的列表的activity,一個給選定的聯(lián)系人寫短信的activity以及翻閱以前的短信和改變設置的activity。盡管它們一起組成了一個內(nèi)聚的用戶界面,但其中每個activity都與其它的保持獨立。每個都是以Activity類為基類的子類實現(xiàn)。

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

每個activity都被給予一個默認的窗口以進行繪制。一般情況下,這個窗口是滿屏的,但它也可以是一個小的位于其它窗口之上的浮動窗口。一個activity也可以使用超過一個的窗口。例如,在activity運行過程中彈出的一個供用戶反應的小對話框,或是當用戶選擇了屏幕上特定項目后顯示的必要信息。

窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自View 基類。每個視圖均控制著窗口中一塊特定的矩形空間。父級視圖包含并組織它子視圖的布局。葉節(jié)點視圖(位于視圖層次最底端)在它們控制的矩形中進行繪制,并對用戶對其直接操作做出響應。所以,視圖是activity與用戶進行交互的界面。例如說,視圖可以顯示一個小圖片,并在用戶指點它的時候產(chǎn)生動作。Android有很多既定的視圖供用戶直接使用,包括按鈕、文本域、卷軸、菜單項、復選框等等。

(2)Service

服務是運行在后臺的功能模塊。如文件下載、音樂播放程序等;服務沒有可視化的用戶界面,而是在一段時間內(nèi)在后臺運行。例如說,一個服務可以在用戶做其它事情的時候在后臺播放背景音樂、從網(wǎng)絡上獲取一些數(shù)據(jù)或者計算一些東西并提供給需要這個運算結(jié)果的activity使用。每個服務都繼承自Service基類。

一個媒體播放器播放播放列表中的曲目是一個不錯的例子。播放器應用程序可能有一個或多個activity來給用戶選擇歌曲并進行播放。然而,音樂播放這個任務本身不應該為任何activity所處理,因為用戶期望在他們離開播放器應用程序而開始做別的事情時,音樂仍在繼續(xù)播放。為達到這個目的,媒體播放器activity應該啟用一個運行于后臺的服務。而系統(tǒng)將在這個activity不再顯示于屏幕之后,仍維持音樂播放服務的運行。

可以連接至(綁定)一個正在運行的服務(如果服務沒有運行,則啟動之)。連接之后,可以通過那個服務暴露出來的接口與服務進行通訊。對于音樂服務來說,這個接口可以允許用戶暫停、回退、停止以及重新開始播放。

(3)ContentProvider

它是Android平臺應用程序間數(shù)據(jù)共享的一種標準接口,它以類似于URI(UniversalResources Identification)的方式來表示數(shù)據(jù),如:content://contacts/people/1101;內(nèi)容提供者將一些特定的應用程序數(shù)據(jù)供給其它應用程序使用。數(shù)據(jù)可以存儲于文件系統(tǒng)、SQLite數(shù)據(jù)庫或其它方式。內(nèi)容提供者繼承于ContentProvider 基類,為其它應用程序取用和存儲它管理的數(shù)據(jù)實現(xiàn)了一套標準方法。然而,應用程序并不直接調(diào)用這些方法,而是使用一個ContentResolver 對象,調(diào)用它的方法作為替代。ContentResolver可以與任意內(nèi)容提供者進行會話,與其合作來對所有相關交互通訊進行管理。

(4)BroadcastReceiver

Broadcast Receiver是一個專注于接收廣播通知信息,并做出對應處理的組件。很多廣播是源自于系統(tǒng)代碼的。例如,通知時區(qū)改變、電池電量低、拍攝了一張照片或者用戶改變了語言選項。應用程序也可以進行廣播,例如通知其它應用程序一些數(shù)據(jù)下載完成并處于可用狀態(tài)。

應用程序可以擁有任意數(shù)量的Broadcast Receiver以對所有它感興趣的通知信息予以響應。所有的接收器均繼承自BroadcastReceiver基類。Broadcast Receiver沒有用戶界面。然而,它們可以啟動一個activity來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。

與此組件相關的概念是Intent,Intent是一個對動作和行為的抽象描述,負責組件之間程序之間進行消息傳遞。而BroadcastReceiver組件則提供了一種把Intent作為一個消息廣播出去,由所有對其感興趣的程序?qū)ζ渥鞒龇磻臋C制。舉個簡單的例子,為了實現(xiàn)一個系統(tǒng)啟動后播放音樂的功能,則可以定義Intent為android.intent.action.BOOT_COMPLETED,由BroadcastReceiver組件將其進行廣播,而系統(tǒng)中的Media Player接收到該信息后則進行播放。

如上所述,4個組件之間的關系如下圖:

圖2 Android各組件關系圖

責任編輯:佚名 來源: 51CTO.com
相關推薦

2012-07-23 13:22:42

Intent Filt安全Android

2011-08-01 13:35:08

Android安全框架權(quán)限

2012-02-13 12:47:41

Android 4.0Launcher源碼分析

2012-02-02 15:56:48

Android 4.0Launcher源碼分析

2012-01-11 16:02:56

Android 4.0Launcher源碼分析

2012-06-05 10:09:45

AndroidManiAndroidMani

2011-08-12 09:06:48

Android系統(tǒng)應用程序

2011-09-06 13:56:43

李洋iOS安全機制

2012-09-27 09:25:50

2012-07-16 10:21:48

Android進程線程

2012-08-17 10:55:21

IBMdW

2022-03-04 23:55:33

安全架構(gòu)結(jié)構(gòu)

2011-08-29 13:52:15

李洋Android應用

2011-08-22 08:53:17

Android啟動過程李洋

2022-06-28 07:03:59

架構(gòu)認證安全

2010-05-28 17:30:58

SVN分支

2020-05-06 14:41:47

AIAI安全阿里安全

2009-07-20 15:57:42

ASP.NET安全架構(gòu)

2020-04-15 09:41:50

多云云安全安全云遷移

2011-09-15 08:58:41

Android短信丟失技術原因
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 色婷婷国产精品 | 99精品在线 | 国产精品一区二区三区四区 | 国产一级免费在线观看 | 欧美激情视频一区二区三区在线播放 | 一级黄色录像毛片 | 国产成人a亚洲精品 | 久久天天躁狠狠躁夜夜躁2014 | 精品网| 久久久精品网 | 国产成人精品一区二区三区网站观看 | 国产免费自拍 | 欧美成人精品一区二区男人看 | 特级一级黄色片 | 日韩影音 | 91精品国产日韩91久久久久久 | 欧美一区二区三区在线播放 | 色女人天堂 | 久久精品成人热国产成 | 97视频久久 | 国产精品久久久久久久久久久免费看 | 久久综合久 | 久久成人免费观看 | 热99精品视频 | 九九综合 | 亚洲国产精品一区二区三区 | 日韩在线播放一区 | 日韩三区在线 | 亚洲成人一区二区三区 | 色综合久久天天综合网 | 国产精品一区二区免费看 | av手机在线免费观看 | 国产精品久久久久久久粉嫩 | 欧美日韩电影一区二区 | 精品成人佐山爱一区二区 | 中文字幕国产精品 | 精品国产青草久久久久福利 | 国产一区二区精 | 在线免费中文字幕 | 日韩三级电影一区二区 |