Android應(yīng)用安裝到設(shè)備中后已旧,是怎樣運(yùn)行的呢坝撑?
安裝到設(shè)備后,每個(gè) Android 應(yīng)用都運(yùn)行在自己的安全沙箱內(nèi):
● Android 操作系統(tǒng)是一種多用戶 Linux 系統(tǒng)傲霸,其中的每個(gè)應(yīng)用都是一個(gè)不同的用戶宿刮;
●?默認(rèn)情況下,系統(tǒng)會(huì)為每個(gè)應(yīng)用分配一個(gè)唯一的 Linux 用戶 ID(該 ID 僅由系統(tǒng)使用汁展,應(yīng)用并不知曉)鹊碍。系統(tǒng)為應(yīng)用中的所有文件設(shè)置權(quán)限,使得只有分配給該應(yīng)用的用戶 ID 才能訪問這些文件食绿;
●?每個(gè)進(jìn)程都具有自己的虛擬機(jī) (VM)侈咕,因此應(yīng)用代碼是在與其他應(yīng)用隔離的環(huán)境中運(yùn)行;
●?默認(rèn)情況下器紧,每個(gè)應(yīng)用都在其自己的 Linux 進(jìn)程內(nèi)運(yùn)行耀销。Android 會(huì)在需要執(zhí)行任何應(yīng)用組件時(shí)啟動(dòng)該進(jìn)程,然后在不再需要該進(jìn)程或系統(tǒng)必須為其他應(yīng)用恢復(fù)內(nèi)存時(shí)關(guān)閉該進(jìn)程铲汪。
Android 系統(tǒng)可以通過這種方式實(shí)現(xiàn)最小權(quán)限原則熊尉。也就是說罐柳,默認(rèn)情況下,每個(gè)應(yīng)用都只能訪問執(zhí)行其工作所需的組件狰住,而不能訪問其他組件硝清。 這樣便營造出一個(gè)非常安全的環(huán)境,在這個(gè)環(huán)境中转晰,應(yīng)用無法訪問系統(tǒng)中其未獲得權(quán)限的部分芦拿。
不過,應(yīng)用仍然可以通過一些途徑與其他應(yīng)用共享數(shù)據(jù)以及訪問系統(tǒng)服務(wù):
●?可以安排兩個(gè)應(yīng)用共享同一 Linux 用戶 ID查邢,在這種情況下蔗崎,它們能夠相互訪問彼此的文件。 為了節(jié)省系統(tǒng)資源扰藕,可以安排具有相同用戶 ID 的應(yīng)用在同一 Linux 進(jìn)程中運(yùn)行缓苛,并共享同一 VM(應(yīng)用還必須使用相同的證書簽署)。
●?應(yīng)用可以請(qǐng)求訪問設(shè)備數(shù)據(jù)(如用戶的聯(lián)系人邓深、短信未桥、可裝載存儲(chǔ)裝置 [SD 卡]、相機(jī)芥备、藍(lán)牙等)的權(quán)限冬耿。 用戶必須明確授予這些權(quán)限。