Android 系統(tǒng)組件及其作用
1.Zygote:Android應用的孵化器,一切Android程序由此進程fork而來。
2.Binder:Android的進程間通信機制,它是Android平臺最核心的功能組件。
3.Package Manager Service:應用安裝包管理服務,不僅負責包的安裝和卸載,更重要的是負責Android應用信息的查詢和控制,例如Android權限管理。
4.Activity Manager Service:管理Android框架層的進程,也包含了Android應用四大組件的邏輯實現。
5.Dalvik,art虛擬機:android 系統(tǒng)的虛擬機,google自己編寫的一個虛擬機.可執(zhí)行文件是dex文件。
Android安全機制? ? :

1.進程沙箱隔離機制
Android應用程序在安裝時被賦予獨特的用戶標識(UID),并永久保持;應用程序及其運行的Dalvik虛擬機運行于獨立的Linux進程空間,與UID不同的應用程序完全隔離。如下圖:

在特殊情況下,進程間還可以存在相互信任關系。如源自同一開發(fā)者或同一開發(fā)機構的應用程序,通過Android提供的共享UID(Shared UserId)機制,使得具備信任關系的應用程序可以運行在同一進程空間。
2.應用程序簽名機制
應用程序包(.apk文件)必須被開發(fā)者數字簽名;同一開發(fā)者可指定不同的應用程序共享UID,進而運行于同一進程空間,共享資源。
簽名的過程:?
????? 生成私有、公共密鑰和公共密鑰證書?
????? 對應用進行簽名 ?
????? 優(yōu)化應用程序?
簽名的作用: ??
????? 識別代碼的作者。
????? 檢測應用程序是否發(fā)生了改變。??
????? 在應用程序之間建立信任,以便于應用程序可以安全地共享代碼和數據。
在安裝應用程序APK時,系統(tǒng)安裝程序首先檢查APK是否被簽名,有簽名才能安裝。當應用程序升級時,需要檢查新版應用的數字簽名與已安裝的應用程序的簽名是否相同,否則,會被當做一個新的應用程序。Android開發(fā)者有可能把安裝包命名為相同的名字,通過不同的簽名可以把他們區(qū)分開來,也保證簽名不同的包不被替換,同時防止惡意軟件替換安裝的應用。?
3.權限聲明機制
動態(tài)權限:
要想獲得在對象上進行操作,就需要把權限和此對象的操作進行綁定。不同級別要求應用程序行使權限的認證方式也不一樣,Normal級申請就可以使用,Dangerous級需要安裝時由用戶確認,Signature和Signatureorsystem級則必須是系統(tǒng)用戶才可用。一般我們接觸的比較多的就是Normal的聲明和Dangerous的動態(tài)權限申請?
? 通過manifest文件中聲明以下屬性:

? 通過以下屬性添加自定義權限:

? 系統(tǒng)組件權限,如activity組件:

4.訪問控制機制
????????確保系統(tǒng)文件和用戶數據不受非法訪問。盡量控制系統(tǒng)和程序的訪問權限。
Linux用戶權限:

5.進程通信機制
基于共享內存的Binder實現,提供輕量級的遠程進程調用(RPC)。通過接口定義語言(AIDL)定義接口與交換數據的類型,確保進程間通信的數據不會溢出越界,污染進程空間。至于這一塊具體的Bindler機制,自己也沒有理解的太透徹,大家有興趣可以去看其他文章
6.內存管理機制
基于標準 Linux的低內存管理機制(OOM),設計實現了獨特的低內存清理(LMK)機制,將進程按重要性分級、分組,當內存不足時,自動清理最低級別進程所占用的內存空間;同時,引入不同于傳統(tǒng)Linux共享內存機制的Android共享內存機制Ashmem,具備清理不再使用共享內存區(qū)域的能力。