Android入門【2】-Android系統架構

【概述】

Android操作系統的結構就像一塊多層蛋糕,每一層都有各自的口味和特點,每層之間並不是完全獨立開的,往往會有互相融合的功能。接下來我們會高屋建瓴式的瀏覽Android系統的組成。

【Linux】

         Android是基於Linux開發的。Linux本身就是一款偉大的操作系統,並且是開源界的成功範本。Android之所以選擇Linux爲基礎,我想大概是因爲Linux具有較好的可移植性、安全性、特色功能。

【可移植性】

Android能夠在各種硬件平臺上編譯,因此它具有可移植性。而這種特性是Linux帶來的,因爲Linux的底層模塊是用移植性較好的C代碼實現,這可以讓各種設備都能運行Android。

【安全性】

Linux是業界公認的安全操作系統,這點已在工程研究中久經考驗,Android高度依賴於Linux的安全性。所有Android應用程序都作爲獨立Linux進程來執行,並通過Linux爲其分配權限。

【特色】

Linux有很多非常有用的特色,Android有效傳承並擴展了大部分功能,包括內存管理,電源管理,網絡管理等。

【本地代碼庫】

  Android的本地代碼庫是C/C++程序庫,爲Android應用層提供了很多必要的服務,通常來自於開源社區,主要包括:

  WebKit

  一個開源的高性能瀏覽器引擎,廣泛應用於AppleSafari,Google Chrome等瀏覽器。

  SQLite

一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。

  Apache Harmony

Java的開源實現

  OpenGL

3D圖形應用庫

  OpenSSL

爲網絡通信提供安全及數據完整性的一種安全協議,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。

  Bionic

         Google自行開發的C基礎庫,Bionic庫僅爲200KB大小是GNU版本(Linux上的標準C程序庫)體積的一半,這意味着更高的效率和低內存佔用,同時配合經過優化的Java VM Dalvik纔可以保證高的性能。Bionic不支持一些特性比如寬字節對unicode,類似c++那樣的異常處理。

【Dalvik】

         Dalvik是Google爲Android定製的虛擬機。之所以不用標準JAVA虛擬機,是因爲Dalvik對移動設備的耗電、性能等方面有更多考慮;另外一個原因是在2005年,也就是Dalvik創始時, java虛擬機並不是免費的,但是現在Sun公司的JVM已經出現了開源的替代品,即OpenJDK和Apache Harmony項目。

【Android和Java】         

先來看看Java中程序執行過程:


Java源代碼首先編譯爲Java字節碼,然後Java虛擬機執行Java字節碼,

接下來看看Android應用程序執行過程:


Android程序也是Java語言開發,先通過編譯器將Java源代碼編譯爲Java字節碼,再將Java字節碼編譯成Dalvik字節碼,然後由Dalvik虛擬機來執行Dalvik字節碼。

也許你會疑惑,爲什麼不直接將Java源代碼編譯成Dalvik字節碼呢,在技術上完全可以做到的,主要原因在於Dalvik啓動初期Java語法規範變化很頻繁,但Java字節碼基本沒有什麼變化。

傳統的Java版本分爲JavaSE,JavaEE,JavaME,而Android不是其中任何一個,可以把Android理解爲JavaSE的一個子集,但又進行了一些擴充。

【應用編程框架】

Android應用編程框架提供了大量便捷的服務接口,在android開發站點上框架相關的參考文檔非常之豐富,使得應用開發人員能順利完成工作。框架中包含很多java程序庫,也包含一些特有的諸如觸摸、定位、感應、WIFI、打電話等服務。

【Android應用程序】

Android應用程序是對用戶而言最有吸引力的Android產物了,用戶可以從各種應用市場下載應用並安裝。一個Android應用是一個獨立的APK(application pachage)文件,它包含三部分主要信息

1.    Dalvik可執行程序

如前所述,這是有Java字節碼編譯而來的,是啓動Android應用的代碼。

2.    資源文件

資源包括代碼執行中所需要的視頻、音頻、XML佈局文件、語言包等等。

3.    本地庫

Android應用中可以包含C/C++本地代碼庫,可能是進行一些特殊處理考慮,如提升性能等。

Android應用發佈前需要進行簽名,不同於iphone獨一無二的應用商店模式(其實越獄後還有其他選擇^_^),有很多應用商店可以發佈Android應用,各自的政策也都有所不同,甚至可以不通過應用商店而直接通過web方式下載APK文件來發布應用,對於應用如何發佈,這裏就不做過多描述。

【總結】

這一節講述了Android系統的組成架構,通過對Android各模塊的描述,讓開發人員感受到一個完整、開發、有吸引力的系統。下一節我會介紹如何搭建Android開發環境,並演示一個Hello World程序的開發。

【附:Android系統架構圖】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章