第1、操作系統層(OS)
第2、各種庫(Libraries)和Android 運行環境(RunTime)
第3、利用程序框架(Application Framework)
第4、利用程序(Application)
以下分別介紹Andoid各個層次的軟件的重點及其相干技術:
Android使用Linux2.6作為操作系統,Linux2.6是1種標準的技術,Linux也是1個開放的操作系統。Android對操作系統的使用包括核心和驅動程序兩部份,Android的Linux核心為標準的Linux2.6內核,Android更多的是需要1些與移動裝備相干的驅動程序。
主要的驅動以下所示:
顯示驅動(Display Driver):經常使用基于Linux的幀緩沖(Frame Buffer)驅動。
Flash內存驅動(Flash Memory Driver)
照相機驅動(Camera Driver):經常使用基于Linux的v4l(Video for )驅動。
音頻驅動(Audio Driver):經常使用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅動。
WiFi驅動(Camera Driver):基于IEEE 802.11標準的驅動程序
鍵盤驅動(KeyBoard Driver)
藍牙驅動(Bluetooth Driver)
Binder IPC驅動: Andoid1個特殊的驅動程序,具有單獨的裝備節點,提供進程間通訊的功能。
Power Management(能源管理)
本層次對應1般嵌入式系統,相當于中間件層次。Android的本層次分成兩個部份1個是各種庫,另外一個是Android 運行環境。本層的內容
大多是使用C++實現的。
在其中,各種庫包括:
▅ C庫:C語言的標準庫,這也是系統中1個最為底層的庫,C庫是通過Linux的系統調用來實現。
▅ 多媒體框架(MediaFrameword):這部份內容是Android多媒體的核心部份,基于PacketVideo(即PV)的OpenCORE,從功能上本庫1共分為兩大部份,1個部份是音頻、視頻的回放(PlayBack),另外一部份是則是音視頻的紀錄(Recorder)。
▅ SGL:2D圖象引擎。
▅ SSL:即Secure Socket Layer位于TCP/IP協議與各種利用層協議之間,為數據通訊提供安全支持。
▅ OpenGL ES 1.0 :本部份提供了對3D的支持。
▅ 界面管理工具(Surface Management):本部份提供了對管理顯示子系統等功能。
▅ SQLite:1個通用的嵌入式數據庫
▅ WebKit:網絡閱讀器的核心
▅ FreeType:位圖和矢量字體的功能。
Android 的各種庫1般是以系統中間件的情勢提供的,它們均有的1個顯著特點就是與移動裝備的平臺的利用密切相干。
Android 運行環境主要指的虛擬機技術——Dalvik。Dalvik虛擬機和1般JAVA虛擬機(Java VM)不同,它履行的不是JAVA標準的字節碼(bytecode )而是Dalvik可履行格式(.dex)中履行文件。在履行的進程中,每個利用程序即1個進程(Linux的1個Process)。 2者最大的區分在于Java VM是以基于棧的虛擬機(Stack-based),而Dalvik是基于寄存器的虛擬機(Register-based)。明顯,后者最大的好處在于可以根據硬件實現更大的優化,這更合適移動裝備的特點。
Android的利用程序框架為利用程序層的開發者提供APIs,它實際上是1個利用程序的框架。由于上層的利用程序是以JAVA構建的,因此本層次提供的首先包括了UI程序中所需要的各種控件:
例如: Views (視圖組件)包括 lists(列表), grids(柵格), text boxes(文本框), buttons(按鈕)等。乃至1個嵌入式的Web閱讀器。
1個Andoid的利用程序可以利用利用程序框架中的以下幾個部份:
利用程序框架也包括1些高級管理(Manager):
Android的利用程序主要是用戶界面(User Interface)方面的,通常以JAVA程序編寫,其中還可以包括各種資源文件(放置在res目錄中)JAVA程序及相干資源經過編譯后,將生成1個APK包。Android本身提供了主屏幕(Home),聯系人(Contact),電話(Phone),閱讀器(Browers)等眾多的核心利用。同時利用程序的開發者還可使用利用程序框架層的API實現自己的程序。這也是Android開源的巨大潛力的體現。
所以在這個列表中,將幫助開發者了解哪些是可用的核心API。所有的Android裝備將提供最少這些API支持:
android.util:核心工具包中包括底層類,字符串格式化和XML解析工具、底層類??。
android.os:操作系統包提供了訪問基本的操作系統服務,如消息傳遞、進程間通訊、時鐘功能和調試。
android.graphics:圖形API提供了支持畫布、色彩和繪制圖元的低級別的圖形類并且支持繪制畫布。
android.text:用于顯示和解析文本的文本處理工具。
android.database:在數據庫處理游標時提供底層類支持。
android.content:content API管理數據訪問,提供服務來管理資源、內容提供者(content provider)和包。
android.view:視圖是核心的用戶接口類。所有用戶界面元素使用的是1系列視圖,以構成用戶交互的組件。
android.widget**:內置在View包內,小部件類是“這里是我們前面創建的”用戶界面元素,可以在自己的利用程序中使用。包括列表、按鈕和布局。
com.google.android.maps:高級的API,它提供了訪問本地地圖控件,可以在自己的利用程序中使用。包括MapView的控制、用于標注和控制您的嵌入式地圖的疊加和MapController類。
android.app:1個高層次的包,允許訪問利用程序模型。該利用程序包包括Activity和Service的API等是Android利用程序的基礎。
android.provider:方便開發者訪問標準的內容提供者(比如聯系人數據庫),provider包提供類給開發者訪問標準的數據庫。
android.telephony:telephony API讓開發者直接接觸電話底層,開發者可以打電話、接電話、顯示通話記錄、通話狀態和短消息。
android.webkit:WebKit的軟件包功能的API與基于Web的內容的工作,其中包括1個WebView控件在您的活動中嵌入閱讀器和cookie管理器。
一樣,你剛才看到的是Android的庫可以幫助您快速構建利用程序的簡化列表!除在Android API,Android棧還包括1組的C/C++庫,可通過利用程序框架發布出來。它們包括:
OpenGL:用于支持基于OpenGL ES1.0 API、3D圖形庫。
FreeType**:這支持位圖和矢量字體渲染。
SGL**:用于提供2D圖形引擎的核心庫。
ibc:標準C庫,為基于Linux的嵌入式裝備進行了優化。
SQLite:用于存儲利用程序數據的輕量級的關系數據庫引擎。
SSL:支持使用安全套接字層加密協議進行安全互聯網通訊。
注意:到此,要介紹的就太多了,我將在這里結束。只是多1個部份,你可以做自己的事情。如果你不能看完全個帖子,可以將其加入書簽,以備將來參考。由于,這里的大多數內容不會有太大變化!
我們所看到的核心庫,到目前為止提供所有開發Android利用程序需要的功能。但是研究高級API將會使用更高級的功能并帶來額外的樂趣。
雖然如此,值得注意的是,由于Android希望針對移動硬件有更廣泛的適應性,因此要注意以下API適用的場合和和使用時裝置是不是具有條件。
android.location:基于位置的服務的API,使利用程序訪問裝備確當前物理位置?;谖恢玫姆仗峁┩ㄓ玫脑L問使用任何位置固定的硬件或技術裝備上可用的位置信息。
android.media:媒體API提供了用于播放音頻和視頻媒體文件,包括流媒體和錄制的支持。
android.opengl:Android提供使用的OpenGL ES API,你可以用它來創建動態3D用戶界面為你的利用程序的強大的3D渲染引擎。
android.hardware:如有可能,硬件API公然的傳感器硬件,包括攝像頭、加速計和指南針傳感器。
android.bluetooth,android.net.wifi,android.telephony:Android也提供了硬件平臺,包括藍牙、Wi-Fi和電話硬件的低級別的訪問。