精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學習啦 > 知識大全 > 知識百科 > 百科知識 > Android系統(tǒng)的架構(gòu)與結(jié)構(gòu)(2)

      Android系統(tǒng)的架構(gòu)與結(jié)構(gòu)(2)

      時間: 謝君787 分享

      Android系統(tǒng)的架構(gòu)與結(jié)構(gòu)

        后綴簡介

        APK是安卓應(yīng)用的后綴,是AndroidPackage的縮寫,即Android安裝包(apk)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執(zhí)行即可安裝。apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是Dalvik VM executes的全稱,即Android Dalvik執(zhí)行程序,并非Java ME的字節(jié)碼而是Dalvik字節(jié)碼。

        APK文件結(jié)構(gòu)

        一個APK文件結(jié)構(gòu)為:

        1. META-INF\ (注:Jar文件中常可以看到);

        2. res\ (注:存放資源文件的目錄) ;

        3. AndroidManifest.xml (注:程序全局配置文件) ;

        4. classes.dex (注:Dalvik字節(jié)碼);

        5. resources.arsc (注:編譯后的二進制資源文件)。

        總結(jié)下我們發(fā)現(xiàn)Android在運行一個程序時首先需要UnZip,然后類似Symbian那樣直接執(zhí)行安裝,和Windows Mobile中的PE文件有區(qū)別,這樣做對于程序的保密性和可靠性不是很高,通過dexdump命令可以反編譯,但這樣做符合發(fā)展規(guī)律,微軟的 Windows Gadgets或者說WPF也采用了這種構(gòu)架方式。

        在Android平臺中dalvik vm的執(zhí)行文件被打包為apk格式,最終運行時加載器會解壓然后獲取編譯后androidmanifest.xml文件中的permission分支相關(guān)的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發(fā)現(xiàn)執(zhí)行是不受限制的。

        最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統(tǒng)的apk文件默認會放入這個文件夾,它們擁有著root權(quán)限。

        硬件抽像層

        Android 的HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 Kernel independent 的概念,也讓 Android framework 的開發(fā)能在不考量驅(qū)動程序?qū)崿F(xiàn)的前提下進行發(fā)展。

        HAL stub 是一種代理人(Proxy)的概念,Stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(shù)(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 這些操作函數(shù)。HAL 里包含了許多的 Stub(代理人)。Runtime 只要說明“類型”,即 Module ID,就可以取得操作函數(shù)。

        中介軟件

        操作系統(tǒng)與應(yīng)用程序的溝通橋梁,應(yīng)用分為兩層:函數(shù)層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背后的引擎。Surface flinger 是就2D或3D的內(nèi)容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自制的Bionic Libc。

        Android采用OpenCORE作為基礎(chǔ)多媒體框架。Open CORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

        Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較于Linux Cairo, skia 功能還只是雛形的。2005年Skia公司被Google收購,2007年初,Skia GL源碼被公開,Skia 也是Google Chrome 的圖形引擎。

        Android的多媒體數(shù)據(jù)庫采用SQLite數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫又分為共用數(shù)據(jù)庫及私用數(shù)據(jù)庫。用戶可通過ContentResolver類(Column)取得共用數(shù)據(jù)庫。

        Android的中間層多以Java 實現(xiàn),并且采用特殊的Dalvik 虛擬機(Dalvik Virtual Machine)。Dalvik虛擬機是一種“暫存器型態(tài)”(Register Based)的Java虛擬機,變量皆存放于暫存器中,虛擬機的指令相對減少。

        Dalvik虛擬機可以有多個實例(Instance), 每個Android應(yīng)用程序都用一個自屬的Dalvik虛擬機來運行,讓系統(tǒng)在運行程序時可達到優(yōu)化。Dalvik 虛擬機并非運行Java字節(jié)碼(Bytecode),而是運行一種稱為.dex格式的文件。

        安全權(quán)限機制

        Android本身是一個權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個應(yīng)用都以唯一的一個系統(tǒng)識別身份運行(Linux用戶ID與群組ID)。系統(tǒng)的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開。

        系統(tǒng)更多的安全功能通過權(quán)限機制提供。權(quán)限可以限制某個特定進程的特定操作,也可以限制每個URI權(quán)限對特定數(shù)據(jù)段的訪問。

        Android安全架構(gòu)的核心設(shè)計思想是,在默認設(shè)置下,所有應(yīng)用都沒有權(quán)限對其他應(yīng)用、系統(tǒng)或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數(shù)據(jù)(聯(lián)系人或電子郵件),讀寫其他應(yīng)用文件,訪問網(wǎng)絡(luò)或阻止設(shè)備待機等。

        安裝應(yīng)用時,在檢查程序簽名提及的權(quán)限,且經(jīng)過用戶確認后,軟件包安裝器會給予應(yīng)用權(quán)限。從用戶角度看,一款Android應(yīng)用通常會要求如下的權(quán)限:

        撥打電話、發(fā)送短信或彩信、修改/刪除SD卡上的內(nèi)容、讀取聯(lián)系人的信息、讀取日程信的息,寫入日程數(shù)據(jù)、讀取電話狀態(tài)或識別碼、精確的(基于GPS)地理位置、模糊的(基于網(wǎng)絡(luò)獲取)地理位置、創(chuàng)建藍牙連接、對互聯(lián)網(wǎng)的完全訪問、查看網(wǎng)絡(luò)狀態(tài),查看WiFi狀態(tài)、避免手機待機、修改系統(tǒng)全局設(shè)置、讀取同步設(shè)定、開機自啟動、重啟其他應(yīng)用、終止運行中的應(yīng)用、設(shè)定偏好應(yīng)用、震動控制、拍攝圖片等。

        一款應(yīng)用應(yīng)該根據(jù)自身提供的功能,要求合理的權(quán)限。用戶也可以分析一款應(yīng)用所需權(quán)限,從而簡單判定這款應(yīng)用是否安全。如一款應(yīng)用是不帶廣告的單機版,也沒有任何附加的內(nèi)容需要下載,那么它要求訪問網(wǎng)絡(luò)的權(quán)限就比較可疑。
      看過“Android系統(tǒng)的架構(gòu)與結(jié)構(gòu)“的人還看了:

      1.android培訓心得體會

      2.android4.0硬件要求是多少

      3.android基礎(chǔ)教程視頻:JavaWeb實現(xiàn)用戶登錄功能

      4.Android系統(tǒng)如何設(shè)置手動IP地址

      5.android手機病毒原理

      6.Linux怎么搭建Android開發(fā)環(huán)境

      1284049