什么是Android?
Android是一種以Linux為基礎的開放源代碼操作系統,主要使用於便攜設備。目前尚未有統一中文名稱,中國大陸地區較多人使用“安卓”或“安致”。Android操作系統最初由Andy Rubin開發,最初主要支持手機。2005年由Google收購注資,並組建開放手機聯盟開發改良,逐漸擴展到平板電腦及其他領域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統,躍居全球第一。 2012年2月數據,Android占據全球智能手機操作系統市場59%的份額,中國市場占有率為68.4%。
Android架構:
Android的系統架構和其它操作系統一樣,采用了分層的架構。android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux核心層。
Android是以Linux為核心的手機操作平台,作為一款開放式的操作系統,隨着Android的快速發展,如今已允許開發者使用多種編程語言來開發Android應用程序,而不再是以前只能使用Java開發Android應用程序的單一局面,因而受到眾多開發者的歡迎,成為真正意義上的開放式操作系統。
在Android中,開發者可以使用Java作為編程語言來開發應用程序,也可以通過NDK使用C/C++作為編程語言來開發應用程序,也可使用SL4A來使用其他各種腳本語言進行編程(如:python、lua、tcl、php等等),還有其他諸如:Qt(qt for android)、Mono(mono for android)等一些著名編程框架也開始支持Android編程,甚至通過MonoDroid,開發者還可以使用C#作為編程語言來開發應用程序。另外,谷歌還在2009年特別發布了針對初學者的Android Simple語言,該語言類似Basic語言。而在網頁編程語言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已經支持Android開發。
而在Android系統底層方面,Android使用C/C++作為開發語言。
應用程序:
早期的Android應用程序開發,通常通過Android SDK(Android軟件開發包)下使用Java作為編程語言來開發應用程序,但通過不同的軟件開發包,則使用的編程語言也不同。
例如開發者可以通過Android NDK(Android Native開發包)使用C語言或者C++語言來作為編程語言開發應用程序。同時谷歌還推出了適合初學者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,谷歌公司還推出了Google App Inventor開發工具,該開發工具可以快速地構建應用程序,方便新手開發者。
開發人員可以使用和核心應用程序使用的完全相同的API框架。應用程序架構的設計的目的是為了簡化組件的重用;任何應用程序都可以發布它的功能,其他的應用程序可能會利用到這些功能(需遵守框架提供的安全約束)。依靠同樣的機制,組件可以被用戶所取代。
底層的所有的應用程序是一組服務和子系統,包括:
*一組豐富並且可擴展的view,這組view可以被用來構建一個應用程序,包括列表,表格,文本框,按鈕,甚至可嵌入的Web瀏覽器
*一組ContentProvider,可以使應用程序訪問其它應用程序的數據(比如通訊錄),或者共享自己的數據。
*一個資源管理器,提供對非代碼資源的訪問,比如本地化的字符串,圖形和布局文件
*一個通知管理,可以使所有的應用程序在狀態欄顯示定制的提醒
*一個Activity管理,它管理的應用程序的生命周期,並且提供了一個通用的后台切換棧
庫
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。內核也作為在硬件和軟件棧之間的抽象層。