《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
本節書摘來異步社區《OpenGL ES 3.x游戲開發(上卷)》一書中的第1章,第1.5節,作者: 吳亞峰 責編: 張濤,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
1.5 Android應用程序運行的機制
前面介紹了如何搭建Android開發環境、如何開發Hello Android應用程序以及Android應用程序的調試,接下來在本節中將簡要地介紹Android應用程序的運行機制。
1.5.1 應用程序的系統架構
Android平臺由應用程序、應用程序框架、Android運行時、系統庫以及底層Linux內核構成,詳細結構如圖1-68所示。
說明
應用程序層里面包含的就是需要讀者去發揮創意開發的、各種各樣豐富多彩的應用程序,這也是一般Android應用開發人員工作的層次。
1.5.2 應用程序框架
Android應用程序框架是開發Android應用的基礎,開發者在開發時有大部分的時間用在調用這一層。Android應用程序框架包含活動管理器、窗口管理器、內容提供者、視圖系統、包管理器、電話管理器、位置管理器、資源管理器以及通知管理器等,如圖1-69所示。
應用程序框架層各部分的具體功能如下所列。
- 活動管理器(Activity Manager):管理所有應用程序的生命周期并提供相應的應用程序導航返回棧。
- 窗口管理器(Window Manager):管理所有的應用程序窗口。
- 內容提供者(Content Providers):用來在應用程序之間互相讀取或者分享數據。
- 視圖系統(View System):主要包含用來構建應用程序界面的基本控件,- 包含普通按鈕、列表、文本框和單選按鈕、復選框等。
- 包管理器(Package Manager):用來進行Android系統內的程序管理。
- 電話管理器(Telephony Manager):用來管理所有與移動電話相關的功能。
- 位置管理器(Location Manager):提供位置服務。
- 資源管理器(Resource Manager):為應用程序提供各種資源,如圖片、布局文件以及本地化字符串等。
- 通知管理器(Notification Manager):用于管理顯示在狀態欄的應用程序中的通知信息。狀態欄通常在手機的頂部,如短信、語音郵件提示以及剩余電量等全部會在這里顯示。
1.5.3 Android運行時
Android運行時包括核心庫(Core Libraires)以及Dalvik虛擬機(Dalvik Virtual Machine)兩部分,如圖1-70所示。
- 核心庫(Core Libraires)主要包括兩部分,一部分是來自于JavaSE中的核心Java部分,如集合框架、多線程等。另一部分由Android核心庫,如an- droid.os以及android.media等組成。
- Dalvik虛擬機(Dalvik Virtual Machine)是一種基于寄存器的Java虛擬機,主要依靠轉換工具dx將Java字節碼轉換為dex格式(.dex)。基于寄存器的Java虛擬機的優點是所需資源相對較少,同時使用硬件實現虛擬機也會比較容易。
說明
與傳統的JavaME不同的是,每個Android應用程序都有一個自己特有的進程,每個應用程序都是使用一個自己持有的Dalvik虛擬機來執行的,而不像在大部分JavaME實現中,多個JavaME應用程序共享一個Java虛擬機進程。
1.5.4 系統庫
應用程序框架是最接近于應用程序的軟件組件服務,而更底層則是Android的系統函數庫(Libraries),這部分是應用程序框架的支撐,其基本架構如圖1-71所示。
- Surface Manager管理對顯示子系統的訪問,并且負責將不同應用程序2D及3D繪制的結果進行顯示合成。
- Media Framework(媒體函數庫)是基于Packet Video公司的OpenCORE發展而成的,使用該函數庫可以方便地播放以及錄制多種常見格式的影音。這些格式主要包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等。
SQLite是內嵌到Android系統中的一套輕量級的關系數據庫引擎,支持關系數據庫的各項功能。
OpenGL ES:Android是根據OpenGL ES1.0、1.1、2.0、3.0或3.1的 API標準來實現其3D繪圖函數庫的,該函數庫可以以硬件加速方式執行,也可以用軟件模擬方式執行(僅限OpenGL ES 1.0與1.1),不過在沒有硬件加速的情況下性能會有明顯差距。
- FreeType負責點陣字體以及向量字體的繪圖顯示。
- WebKit本身是一個開源項目,許多瀏覽器也都是用WebKit引擎所開發的,Android下原生自帶的瀏覽器就是基于其實現的。Android將其引入到系統庫,大大方便了開發人員HTTP相關功能的開發。
- SGL庫為Android在2D繪圖方面提供繪圖引擎。
- SSL位于TCP/IP與各種應用層協議之間,為數據通信提供支持。
- Libc提供了一套針對于移動設備優化后的C標準庫。
1.5.5 底層Linux內核
Android平臺開放性的基礎是因為其采用了Linux內核,如圖1-72所示。Android平臺中的操作系統采用了Linux 2.6版的內核,其包括顯示驅動、攝像頭驅動、Flash內存驅動、Binder(IPC)驅動、鍵盤驅動、WIFI驅動、視頻驅動及電源驅動等。
-Linux內核層是軟件層與硬件層之間的橋梁,軟件開發人員不必關心底層Linux內核的實現細節,只需將全部精力投入到上層的軟件開發中。而實現底層Linux內核的工作是由Google和手機廠商來完成,如驅動的更新或者新驅動的編寫等。
總結
以上是生活随笔為你收集整理的《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《微信小程序开发入门精要》——导读
- 下一篇: 《Adobe Flash Profess