1. 起源和發展
Android是由Android公司的創始人Andy Rubin創造的,而後被Google收購,Google的目标是将Android打造成一個标準化、開放式的移動作業系統平台。
Android是開放源代碼的移動作業系統軟體,提供了豐富的功能和酷炫的使用者界面。Google不斷優化和改進Android系統,并開放原生的安卓系統源代碼允許各個軟體廠商或者手機廠商進行定制化的修改。同時Google也提供了豐富的Android API和強大的開發環境,使得在Android平台上開發Android App變得十分便捷。
Android是目前移動端市場占有率最高的手機作業系統,事實上,Android已經不僅僅用在手機端,還廣泛用于TV、手表等各種可穿戴裝置以及各種智能硬體。
2. Android平台架構
Android平台是基于Linux核心建構起來的,從上到下主要包含四個層次:
應用程式層,這一層主要包含各種應用程式軟體,包括最基本的通話、短信、聯系人、浏覽器等App,還包括大量開發者開發的各種App;
應用程式架構層,所有的App都是基于應用架構層開發的,應用架構層提供了大量的API供開發者使用,開發者也可以送出自己開發的功能子產品;
系統環境層,這一層包含了支援上層功能所需要的大量C/C++函數庫,還包括Android運作時環境,Android運作時環境包括Java核心庫以及Android虛拟機;
Linux核心層,Android核心建立在Linux 2.6之上,這一層提供最基礎的諸如記憶體管理、程序管理、網絡協定棧等作業系統級服務;
關于Android虛拟機,在5.0版本之前使用的是Dalvik虛拟機,而自5.0版本之後使用的是ART。Dalvik虛拟機是一種解釋執行的虛拟機,由于其在運作App時進行動态編譯,使得運作App的速度比較慢。ART采用AOT(Ahead of Time)的技術在安裝App時就進行編譯,使得運作App的效率得到較大提升。
3. Android開發環境
目前主流的Android開發工具主要包括兩種:Eclipse + ADT和Android Studio,前者是在Eclipse之上內建了Android Development Tool,後者是Google官方提供的開發工具,正越來越流行。
開發Android程式首先需要下載下傳Android SDK,可以從http://developer.android.com上下載下傳官方安裝檔案,安裝成功後包括Android SDK管理器、AVD管理器、Android系統源碼以及工具等。Android SDK管理器用于管理SDK的各個版本的下載下傳。AVD即Android Virtual Device,用于在PC端模拟安卓機器供開發調試使用,AVD管理器即用于管理AVD,由于AVD的啟動以及運作非常緩慢,是以實際通常在真機上開發,隻需要打開真機的調試模式。
Android提供了另外兩個常用的開發工具,即Monitor和ADB(Android Debug Bridge)。Monitor用于監視Android裝置的運作狀态,包括系統各項資源使用情況以及運作的各個App的線程狀态等。ADB是一個功能十分強大的調試工具,可以友善地實作在Android裝置和開發電腦之間複制檔案、安裝解除安裝App、執行shell指令等功能。
4. Android項目組成結構
一個開發中的Android項目通常主要包含以下幾個部分:
res目錄,該目錄下存放着Android項目使用到的各種資源檔案,如layout子目錄下存在布局相關的xml檔案,values子目錄下存放strings.xml、colors.xml、dimens.xml等;
src目錄,該目錄即儲存着項目的java源檔案;
AndroidManifest.xml檔案,該檔案是Android項目的系統清單檔案,定義了Android項目的基本屬性,如:名稱、圖示、通路權限等;
libs目錄,該目錄存放需要用到的第三方jar包;
Android項目中還包括一個R類,該類是由開發環境自動生成的一個工具類,其中定義了Android需要使用的各種資源,為在程式源代碼中友善地通路資源檔案中定義的各種資源提供了接口。每類資源在R類中都對應着一個内部類,而每個具體的資源都對應着内部類中一個public staic final int型的屬性。
5. Android四大元件
Android API提供了大量的開發接口,程式員主要是圍繞以下四大元件進行開發:
Activity,Activity負責與使用者進行互動,提供了可視化的使用者界面,應用程式通常由多個Activity組成,這些Activity儲存在Activity棧中,目前活動的Activity位于棧頂;
Service,Service通常在背景運作,負責為其他元件提供背景服務或者監控其他元件的運作情況,Service擁有自己獨立的生命周期;
BroadcastReceiver,BroadcastReceiver類似于事件監聽器,隻是它監聽的事件源不是對象,而是其他的Android元件;
ContentProvider,ContentProvider用于多個應用程式之間的資料互動,一個應用程式可以通過ContentProvider接口對外提供資料,而另一個應用程式則可以通過ContentResolver來擷取該應用程式提供的資料;
6. App在Android系統中的運作環境
Android是一個基于Linux的多使用者作業系統,在Android系統中,每個App就是一個獨立使用者。
(1) 系統為每個App維護一個User ID(這個UserID的具體值隻有系統知道,App本身并不知道),系統為該App所擁有的檔案設定權限,確定隻有獲得該User ID的程式才可以通路;
(2) 與JavaSE平台一樣,Android系統中每個應用程序都運作在一個單獨的虛拟機中;
(3) 兩個App可以擁有共同的User ID,進而可以互相通路對方的檔案,擁有共同User ID的App程序還可以運作在一個虛拟機中,進而可以節省系統資源;
(4) App在安裝時會向系統申請需要的權限,如調用攝像頭、讀取聯系人等,沒有申請相關權限則無法通路系統相關資源;
參考資料 《瘋狂Android講義》