韓超為我們講述了依據linux核心、硬體抽象層、中間件、應用層接口等幾個層次android系統中使用的各種技術。以及這些技術的來龍去脈和在android系統中的發展。深入剖析android對傳統技術的繼承和密切關系,并預估其下一步發展方向。
聽衆可從中了解android系統的技術架構,并了解android如何快速建構成一個開源的移動系統,并迅速向其他各個領域發展的原因。進一步介紹android系統第三方應用和裝置層之間的安全機制,指出android開發過程中隐含的安全漏洞。了解到android開發過程的安全政策和應注意的問題。
韓超提到,android技術生态系統和安全可以從五個方面來分析:一、android的作業系統層;二、android的硬體抽象層、android的中間件和gui系統、android應用程層接口、android的安全性。
android的總體技術特點是,android系統的誕生給了嵌入式系統兩大方面的突破:第一,android是一個完備的系統;二,android是一個提供了标準化接口的系統。
android的作業系統層
android的核心遵從标準linux的結構,其實android系統就是linux系統,隻是android系統從分利用已有的機制,盡量使用标準化的内容,比如驅動程式,并且做出必要的擴充。 android靈活充分使用核心到使用者空間的接口主要表現在字元裝置節點、sys檔案系統、proc檔案系統和不增加系統調用。

android的作業系統層結構圖
其中android的核心元件有:binder驅動程式(使用者ipc機制)、logger驅動程式(使用者系統日志)、timed_output驅動架構、timed_gpio驅動程式、lowmemorykill元件、ram_console元件、ashmem驅動程式、alarm驅動程式、pmem驅動程式、adb garget驅動程式、android paranoid網絡。
android的硬體抽象層
android系統需要運作于再不通的硬體平台上,是以需要具有很好的可移植性。android的硬體抽象層負責android系統和硬體裝置之間的聯系。
自下而上經典的模型為linux驅動、android硬體抽象層、android本地架構、android的java架構、android的java應用程式。
android的硬體抽象層結構圖
對于标準化比較高的子系統,android系統使用完全标準linux驅動,如輸入裝置(input-event)、電池資訊(power supply)、無線區域網路(wifi協定和驅動)、藍牙(bluetooth協定和驅動)。
對于有linux标準驅動,但是各系統定義情況不同的子系統,可以選擇标準驅動或自定義驅動,如顯示(framebuffer)、背光和訓示燈(led驅動)、警報器和時鐘(rtc驅動)、音頻(oss、alsa或類似驅動)、視訊輸出和照相機(v412)、gps和modem(tty)。
android的中間件和gui系統
android的中間件的特點是标準而小巧的c語言庫,适用的基本系統(c工具庫、init、uevent),縱貫全局的通信機制(屬性、套結字、binder),重新實作的dalvik徐弩機,大量适用linux和java标準庫,同時減少子產品間的底層耦合性。
而android的gui系統中,java層能夠實作結構化,本地層結合具體的硬體,有suface處理圖層、skia-圖形接口處理2d和opengl标準處理3d。
android應用程層接口
由于android裝置和android應用程式可以獨立開發,是以android應用層接口至關重要。android應用層接口的特點有:根據api級别的标準化接口(相容性),java層的隐藏接口和非api接口可調用,可以使用jni調用本地程式,sdk提供标準化的本地庫(相容性),預置應用和第三方應用的權限不同。
java架構層和應用層的技術特點:機制和政策的互通,架構層統一管理資源,架構層提供上層“虛拟解耦合”的api,應用層按照包得形式獨立存在,強制應用層具有“元件”結構,靈活的應用層插件系統。
android的安全性
android安全性的限制表現在,無論java調用還是通過jni調用本地庫,都會受到linux本身使用者權限的限制,當使用java調用架構層的方法的時候,将受到架構層許可的限制,調用其他包中元件的時候,将受到元件許可的限制,最終的限制由簽名機制完成。
許可機制對安全的控制主要表現在如下方面:某些系統的接口中将檢查調用者的許可,如果所調用的應用程式包沒有這個許可,調用将失敗,并抛出異常;對于普通許可,應用程式包可以直接得到,對于危險許可,應用程式包在得到的時候具有提示;簽名許可需要申請者和聲明者具有相同的簽名。
安全政策還有一個方面,就是一個額外的邏輯為“由于許可增加到額外的使用者組”。也就是說由于應用程式包獲得了某些許可,這個應用程式包可以從linux程序的角度被增加到特定的組。并且這是一個各個不同的android裝置可以進行自定義的政策,也就是各個平台可以自定義哪些許可将獲得增加到哪些使用者組中去