Android是什嗎?
Android是一個針對於行動裝置的軟體棧,它包括作業系統,中介軟體和關鍵應用。AndroidSDK提供了在Android平台使用Java程式設計語言進行開發應用程式的必要的工具和API。
特點
*應用程式架構 使組件可重用並且可替換
*Dalvik虛擬機器 為行動裝置最佳化
*整合的瀏覽器 基於開源的WebKit引擎
*最佳化的圖形處理 以定製的2D圖形庫和基於OpenGLES 1.0規範的3D圖形(可選的硬體加速)為基礎
* SQLite 結構化資料的儲存
*媒體支援 常見的音視頻格式,還是圖形格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
*GSM電話 (基於硬體)
*藍芽,EDGE,3G和WiFi (基於硬體)
*照相機,GPS,指南針,加速感應器 (基於硬體)
*豐富的開發環境 包括裝置模擬器,調試工具,記憶體和效能分析工具和用於Eclipse IDE的外掛程式
Android構架
顯示了Android作業系統的主要組成部分。每個部分進行了更詳細說明。
應用
Android將配備一系列核心應用程式,包括電子郵件用戶端,簡訊程式,日曆,地圖,瀏覽器,通訊錄等。所有的應用程式都是使用Java程式設計語言。
應用程式框架
通過提供一個開放的開發平台,Android給予了開發人員構建極為豐富和創新類的應用程式的機會。開發這可以自由地利用裝置,訪問位置資訊,運行後台服務,設定鬧鐘,在狀態條裡添加通知等等。
開發人員可以使用和核心應用程式使用的完全相同的API架構。應用程式架構的設計的目的是為了簡化組件的重用;任何應用程式都發行就緒它的功能,其他的應用程式可能會利用到這些功能(需遵守架構提供的安全約束)。依靠同樣的機制,組件可以被使用者所取代。
底層的所有的應用程式是一組服務和子系統,包括:
*一組豐富並且可擴充的view,這組view可以被用來構建一個應用程式,包括列表,表格,文字框,按鈕,甚至可嵌入的Web瀏覽器
*一組ContentProvider,可以使應用程式訪問其它應用程式的資料(比如通訊錄),或者共用自己的資料。
*一個資源管理員,提供對非代碼資源的訪問,比如本地化的字串,圖形和布局檔案
*一個通知管理,可以使所有的應用程式在狀態列顯示定製的提醒
*一個Activity管理,它管理的應用程式的生命週期,並且提供了一個通用的後台切換棧
如需瞭解一個應用程式的詳細資料和具體樣本,請參考Notepad程式碼範例。
庫
Android包括了一套C/C++庫,這套庫被Android系統的各個組件使用。這些能力通過Android應用程式框架展示給應用開發人員。一些核心庫的如下:
*系統C庫 - 一個針對於標準C系統庫(libc)的BSD派生的實現,針對於嵌入式Linux裝置進行了調整
*媒體庫 - 基於PacketVideo的的OpenCore;該庫支援回放和錄製許多流行的音頻和視頻格式,以及靜態影像檔,包括MPEG4,H.264,MP3,AAC,AMR,JPG和PNG格式
*Surface管理器 - 管理訪問顯示子系統和從多個程式中無縫合成二維和三維圖形層
*LibWebCore - 一個流行的Web瀏覽器引擎,它對Android瀏覽器和嵌入式Web視圖具有良好的支援
*SGL - 底層的2D圖形引擎
*3D庫 - 基於OpenGL ES 1.0 API的一個實現;該庫使用硬體3D加速(如果可用)或包含高度最佳化的3D軟體光柵掃描器
*FreeType – 用於位元影像和向量字型渲染
*SQLite - 一個提供給所有的應用程式使用的強大的,並且輕量級的關係型資料庫引擎
Android 的運行
Android包括一組核心庫,這組核心庫提供了用於Java程式設計語言的核心庫可用的大多數功能。
每個Android應用都運行在它自己的進程裡,並依附一個單獨的Dalvik虛擬機器執行個體。一個裝置可以高效地運行多個Dalvik虛擬機器。 Dalvik虛擬機器執行Dalvik可執行檔(.dex)的格式,此格式做了最小的記憶體佔用最佳化。Dalvik虛擬機器是基於寄存器的,並運行由dx工具將Java語言編譯器編譯完的class檔案轉換為的dex格式檔案。
Dalvik虛擬機器的底層功能依賴Linux核心,例如線程和底層的記憶體管理。
Linux核心
Android的核心系統服務,比如安全,記憶體管理,進程管理,網路通訊協定棧和驅動模組都是依賴於Linux 2.6。核心也作為在硬體和軟體棧之間的抽象層。