2009年9月18日 星期五

[Android]Android初探

http://focus5488.blogspot.com/2009/09/androidandroid.html

Android 歷史初探
Android History 2007即將歲末到來的時刻,國內、外的手機相關業者與Google一同組成了開放手持裝置聯盟(Open Handset Alliance),並且公佈以Android為名的手機開發平台,透過android SDK(Software Development Kit)搭配作業系統核心與相關週邊驅動,讓更多喜好開發特殊介面的開發者,擁有更多的開發想像空間,初步看來Android的開發實力不可小看,蓬勃發展畢竟是指日可待。

What is android?
Android是一個包含作業系統、中介程式與關鍵應用程式的行動裝置軟體積木,初期的Android SDK 提供必要的API(應用程式開發介面)與工具以使用Java語言開發在Android其功能包涵
● 建立應用程式框架進而使原先存在的物件可以重用或置換元件
● 利用Dalvik虛擬機器透過工具使行動裝置最佳化。
● 有效率的整合瀏覽器並發揮android的開發理念開放原始碼Webkit 引擎
● 強化與最佳化圖形,深入的加強自訂2D圖形;3D圖形則築基於OpenGL ES 1.0規格(硬體加速選項
● 訂定SQLite 結構化資料儲存
● 多功能媒體支援,包含一般聲音、影片與靜態影像格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG, GIF)
● GSM通訊,建立與硬體互相驗證的機制
● 通訊周邊的發展包含藍芽、EDGE、3G與WiFi...等,進而達到通訊周邊的完整性
● 額外的加入相機、GPS、電子羅盤與加速度計,透過硬體實現諸多功能
● 諸多的開發環境,便於大眾化開發。包含模擬器、除錯工具、記憶體與效率剖析與Eclipse IDE的外掛
根據Android architure如下圖所示,我們可以知道其發展包涵Application、Application Framework、Library與Android Runtime、Linux Kernel幾大項,每個部份各分其職。

Layer 1.應用程式(Applications)
Android是一種以Java語言撰寫的核心應用程式,其核心應用程式包含郵件、簡訊、日曆、地圖、瀏覽器、聯絡人與其它相關應用程式。透過核心應用程式可以各式AP以不同的方式呈現。


Layer 2.應用程式框架(Application Framework)
開發人員透過瞭解核心應用程式,進而利用核心應用程式的API創造出更多資源,而應用程式框架主要在於設計為重元件為輔的開發概念;應用程式開發新的功能並為其它應用程式所使用,而使用者用也可以用相同的模式置換所需的元件。
其中,應用程式底層包含”系統”與”服務”,包含:
●以View-system建立應用程式,包括lists, grids, text boxes, buttons。
●以Content Providers 使應用程式可以存取或分享資料給其它應用程式(如聯絡人)。
●以Resource Manager 提供存取非程式碼資源如本地化字串、圖形或布局檔案
●以Notification Manager 讓應用程式得以在狀態列顯示自訂的警示。
●以Activity Manager 管理應用程式生命週期並提供一般性的回溯導航(navigationbackstack )
●以Window Manager 用來用來管理所有開啟的視窗程式
●以Package Manager管理所有安裝在Android系統內的程式
●以Telephony Manager用來管理有關使用者撥打與接收電話的相關功能
●以Location Manager 用來管理地圖服務的相關功能
 

Layer3.A函式庫(Libraries)
Android包含一組系統元件使用的C/C++ 函式庫,使用者透過應用程式框架使用這些功能,部分核心函式庫列示如下:
● 系統C函式庫 引用BSD標準系統C函式庫(libc),調整為嵌入式Linux裝置。
● 媒體函式庫 建立在PacketVideo's OpenCORE 之上;該函式庫支援聲音的播放與錄製、影片格式、與靜態影像格式,包含MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF
● Surface Manager 管理顯示次系統存取、與來自多重程式2D與3D組合圖層的串流
● LibWebCore 現代化的Web瀏覽器引擎
● SGL 2D圖形底層引擎
● 3D libraries OpenGL ES 1.0 API 實做;該函式庫使用硬體加速(視硬體提供功能)與3D軟體rasterizer最佳化
● FreeType 圖形與向量字的繪製
● SQLite 提供給所有應用程式使用的強大且輕量的關聯式資料庫存取引擎
 

Layer3.B Android Runtime
Android包含一組核心函式庫提供Java程式使用核心函式庫大部分的功能。
每一個Android應用程式執行於獨立的行程與獨立的Dalvik虛擬機器,Dalvik被設計成單一裝置可有效率地使用多個虛擬機器, Dalvik虛擬機器執行Dalvik執行檔(附檔名為.dex,最佳化使用記憶體的格式),虛擬機器為登記制,並執行"dx"工具編譯並轉換格式的class檔案。
 

Layer4.Linux Kernel
Android依靠Linux2.6版的核心系統服務如安全性、記憶體管理、行程管理、網路堆疊與趨動程式模型。該核心同樣是作為硬體與軟體積木間的抽象層

平台上開發應用軟體
Android架構 Android platform粗略分成三個不同的project.
1.Core projects:主要是存放Android platform各個組成的元件.
2.External projects:存放每個元件以及所需android open source code.
3.Packages:紀錄android的應用程式與服務.
而根據官方網站下載完整的source, Core projects External projects Packages Applications

參考資料
* 數位之牆 無線網際網路的產業巨變(一)Google的策略
* Android 官方網站
* 開放手持裝置聯盟(Open Handset Alliance)
* Google Android 開發者部落格
* Android 開發者大賽網站
* Android 文件
* CNet專訪:Google手機平台背後的原創者
* Android 原始碼網站
* 史丹利的部落格
參考資料眾多不及備載…敬請見諒

0 意見:

張貼留言