Android 使用JAVA語言開發(fā)。它通過Android SDK 工具編譯代碼—將代碼及相關(guān)資源打包進一個Android 包內(nèi)(一個以“ .apk”為后綴的壓縮文件,簡單理解就是我們手機上下載應(yīng)用程序的安裝包)。 這樣的“ .apk” 文件中的所有代碼就是一個程序。這個 .apk”文件就用于在Android設(shè)備(包括但是不限于手機,平板)上安裝這個程序。
一旦安裝成功,這個Android程序就擁有了自己獨立的運行沙盒(沙盒是在受限的安全環(huán)境中運行應(yīng)用程序的一種做法,這種做法限制了授予應(yīng)用程序的代碼訪問權(quán)限。):
- Android操作系統(tǒng)是一個多用戶的linux系統(tǒng),其中的每一個應(yīng)用程序都是一個獨立的用戶(注意:這里面的用戶不是指某某人,而是某某應(yīng)用程序)。
- 默認地,系統(tǒng)(比如手機系統(tǒng))會為每一個應(yīng)用程序分配一個唯一的Linux用戶ID(這個ID只能被系統(tǒng)使用,并且對于應(yīng)用程序來說,這個ID是未知的)。系統(tǒng)為每個應(yīng)用程序的所有文件設(shè)置了權(quán)限并且只有通過這個應(yīng)用程序的用戶ID才可以去訪問它們。
- 默認地,每一個應(yīng)用程序在它自己的Linux進程中運行。Android會在一個應(yīng)用程序的任何一個組件需要被調(diào)用的時候啟動這個進程。然后,當(dāng)沒有任何組件被調(diào)用或者系統(tǒng)需要為其它應(yīng)用程序回收內(nèi)存的時候,就會關(guān)閉這個進程。
通過這種方式,Android 系統(tǒng)實現(xiàn)了最少特權(quán)原則(即每一個應(yīng)用程序,默認地,都只能調(diào)用它所需要的工作組件)。 這就創(chuàng)造了一種非常安全的環(huán)境,使得應(yīng)用程序不能去訪問沒有被授予其權(quán)限的系統(tǒng)部分。
當(dāng)然,有很多途徑可以讓一個應(yīng)用程序和其它的應(yīng)用程序共享數(shù)據(jù),或者是讓一個應(yīng)用程序去調(diào)用系統(tǒng)服務(wù),就比如:
- 為兩個應(yīng)用程序分配同一個Linux用戶ID,這樣它們就能訪問對方的文件。而為了節(jié)約系統(tǒng)資源,擁有相同用戶ID的應(yīng)用程序也可以被運行于相同的Linux進程并且共享VM(它們必須用相同的證書簽名)。
- 應(yīng)用程序可以通過請求權(quán)限來訪問設(shè)備數(shù)據(jù),例如聯(lián)系人,SMS信息,可插拔存儲(SD卡),相機,藍牙,等等。所有的應(yīng)用程序權(quán)限必須在安裝的時候由用戶授予。
最后的話
我也不知道為什么講解下載軟件的分類是其他,以后主介紹(包括但是不限于各種計算機語言,網(wǎng)絡(luò)安全,Android開放,各種框架以及好用的軟件和網(wǎng)站)。