1.Android-入門之系統架構介紹


1.Android 系統架構

android分為四個層,從高層到低層分別是應用程序層、應用程序框架層、系統運行庫層和linux核心層,如下圖所示:

 

 

2.application應用程序層

      該層提供一些核心應用程序包,例如電子郵件、短信、日歷、地圖、瀏覽器和聯系人管理等。同時,開發者可以利用Java語言設計和編寫屬於自己的應用程序,而這些程序與那些核心應用程序彼此平等、友好共處

 

3.application framework應用程序框架層

該層是Android應用開發的基礎,提供API給寫application應用程序的人調用,常用到的類庫如下:

  • 活動管理器(Activity Manager):    表示當前顯示的界面窗口,用來管理各個應用程序生命周期,為所有程序的窗口提供交互的接口.
  • 窗口管理器(Window Manager):  對窗口程序進行管理
  • 內容提供者(Content Provider):   提供一個應用程序訪問另一個應用程序數據的功能,實現應用間共享數據
  • 視圖系統(View System):   創建應用所需的組件
  • 包管理器(Package Manager):  管理應用安裝、卸載,應用版本號、版本名,查詢相關權限等功能
  • 電話管理器(Telephony Manager):  提供設備電話相關功能
  • 資源管理器(Resource Manager):  提供各種非代碼資源供應用程序使用,如字符串,顏色,圖片,音頻等
  • 位置管理器(Location Manager):  提供位置服務
  • 通知管理器(Notification Manager):  使應用可以在系統狀態欄中顯示通知消息
  • XMPP服務 :  Google在線即時交流軟件中一個通用的進程,提供后台推送服務

而四大組件又分為:

  • activity活動 :  當前顯示的界面窗口, 一個Activity通常就是一個單獨的屏幕,當然也可以有多個Activity組成.然后上面的控件也可以獲取用戶事件,來做出相應操作.
  • service服務 :  用於后台完成用戶操作,主要用於周期性的后台監控和后台服務,比如在后台下載東西
  • BroadCast Receiver廣播接收器 :  用來接收各處APP發出的廣播,但是多數的廣播是系統發起的.比如來電來信等.
  • Content Provider內容提供器 :  通過它可以將自己的數據讓所有的應用程序訪問到,比如訪問電話簿聯系人,主要用來共享數據

 

4.Libraries系統庫

系統庫大部分由C/C++編寫,提供的功能給Android應用程序框架來調用

 

5. Android runtime 運行庫

包含了Core LibraryDalvik虛擬機.

Core Library: 提供JAVA編程語言核心庫的大多數功能

Dalvik虛擬機(dvm): 每個Java程序都離不開Java虛擬機, Android系統也實現了自己的一個類似JVM但是更適合嵌入式平台的虛擬機——Dalvik。Dalvik的功能等同於JVM,為Android平台上的Java代碼提供了運行環境.唯一不同的是dvm執行的是.dex文件,jvm執行的是.class文件.

  過程: android程序編譯完之后生產.class文件,然后,dex工具會把.class文件處理成.dex文件,然后把資源文件和.dex文件等打包成.apk文件,如下圖所示:

 

dvm的優點在於:基於寄存器存取,而非虛擬棧,可以根據硬件實現最大的優化,比較適合移動設備。

 

5.1 android 4.4開始, DVM被替換

由於DVM安裝后的APP是字節碼,所以每次打開APP的時候,都會去把字節碼翻譯為機器碼,導致APP運行效率降低,用戶體驗很差.

  所以在 Android 4.4開始,ART(Android Runtime)虛擬機發布,用來替換 Dalvik 虛擬機,Android 4.4 默認采用 DVM,但可以選擇ART(如下圖所示)。在 Android 5.0 開始默認使用 ART,DVM 從此被淘汰,並且ART 支持 64 位並兼容 32 位 CPU,而DVM只支持32 位 CPU.

 

ART優點:安裝應用程序時會進行一次 AOT(ahead of time compilation, 預編譯),將字節碼編譯成機器碼並存儲在本地,這樣APP每次運行時就不需要執行編譯了,APP運行效率大大提升,耗電量也會降低.

ART缺點: 應用程序的安裝時間變長,並且安裝后的存儲空間占用多一些(存儲有機器碼的原因)

6.linux內核

用來運行應用程序,並包含各種驅動,向應用層提供調用。

 

下章學習: 2.Android-sdk目錄介紹、ADT使用介紹、創建helloworld

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM