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