• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Android系統架構概況

    發表于:2012-08-17來源:Csdn作者:hzbooks點擊數: 標簽:Android
    Android的架構圖如下,圖中按照功能結構及面向人群進行劃分,可以看出Android分成三個部分: 應用部分:包含在Android設備上運行的所有應用,它們是Android系統中直接面向用戶的部分。

      Android的架構圖如下,圖中按照功能結構及面向人群進行劃分,可以看出Android分成三個部分:

      應用部分:包含在Android設備上運行的所有應用,它們是Android系統中直接面向用戶的部分。

      核心部分: Android系統中核心的功能實現,包括應用框架、核心類庫等,每個Android應用的開發者,都是在此基礎上進行應用開發的。

      底層部分:主要指Android寄宿的Linux操作系統及相關驅動。通常來說,只有硬件廠商和從事Android移植的開發者,才會基于此來進行開發。

      除了上述劃分方式以外,從系統實際的架構模型來看,Android則可以分成以下幾個層次:

      應用層

      框架層

      運行時

      核心類庫

      硬件抽象層

      Linux內核

      本文的后續內容將針對以上各層逐一進行分析。

      1.1.1 應用層

      對于普通的用戶而言,只能通過具體的應用來判斷移動平臺的優劣。即便一個移動平臺具有最華麗的技術,但是如果不能給用戶提供最得心應手的應用,頂多也只能贏得無冕之王的名頭,而無法抓住用戶的心,贏得市場的認可。

      Android應用層由運行在Android設備上的所有應用共同構成,它不僅包括通話、短信、聯系人等系統應用(隨Android系統一起預裝在移動設備上),還包括其他后續安裝到設備中的第三方應用。

      第三方應用都是基于Android提供的SDK(Software Development Kit)進行開發的,并受到SDK接口的約束。而預裝在設備中的系統應用,則可以調用整個框架層的接口和模塊,其中的很多接口在SDK中是隱藏的,因此,系統應用具有比第三方應用更多的權利。

      Android的應用都是基于Java語言來開發的,但在很多應用(尤其是游戲)中,需要進行大規模的運算和圖形處理,以及使用開源C/C++類庫。通過Java來實現,可能會有執行效率過低和移植成本過高等問題。因此在Android開發中,開發者可以使用C/C++來實現底層模塊,并添加JNI(Java Native Interface)接口與上層Java實現進行交互,然后利用Android提供的交叉編譯工具生成類庫并添加到應用中。

      為了讓應用開發者能夠繞過框架層,直接使用Android系統的特定類庫,Android還提供了NDK(Native Development Kit),它由C/C++的一些接口構成,開發者可以通過它更高效地調用特定的系統功能。

      但在Android上,開發者通常只能使用C/C++編寫功能類庫,而不是整個應用。這是因為,諸如界面繪制、進程調度等核心機制是部署在框架層并通過Java來實現的,應用只有按照它們規定的模式去編寫特定的Java模塊和配置信息,才能夠被識別、加載和執行。

      小貼士 從Android 2.3(API 9)開始,新增了android.app.NativeActivity類,它是通過調用預定義的JNI接口來實現的。開發者可以基于NDK,通過C/C++語言來實現具體功能。這就意味著,開發者僅通過C/C++語言就能實現整個應用。這對于游戲開發者而言是一大喜訊,但由于控件在Android中并沒有Native的實現,普通的應用開發者通常還是需要通過Java來實現上層界面。

      1.1.2 框架層

      框架層是Android系統中最核心的部分,它集中體現了Android系統的設計思想。在Android之前,有很多基于Linux內核打造的移動平臺。作為超越前輩的成功范例,框架層的設計正是Android脫穎而出的關鍵所在。

      框架層由多個系統服務(System Service)共同組成,包括組件管理服務、窗口管理服務、地理信息服務、電源管理服務、通話管理服務,等等。所有服務都寄宿在系統核心進程(System Core Process)中,在運行時,每個服務都占據一個獨立的線程,彼此通過進程間的通信機制(Inter-Process Communication,IPC)發送消息和傳輸數據。

      應用層中的應用,時刻都在與這些系統服務打交道。每一次構造窗口、處理用戶交互事件、繪制界面、獲得當前地理信息、了解設備信息等操作,都是在各個系統服務的支持下實現的。

      而對于開發者而言,框架層最直觀的體現就是SDK,它通過一系列的Java功能模塊,來實現應用所需的功能。SDK的設計決定了上層應用的開發模式、開發效率及能夠實現的功能范疇。因此,對于開發者而言,關注SDK的變遷是一件很有必要的事情,SDK每個新版本的誕生,都意味著一些老的接口會被調整或拋棄,另一些新的接口和功能火熱出爐。開發者不但要查看和關注那些被修改的接口,來檢查應用的兼容性,并采取相應的策略去適應這些變化,更重要的是,開發者還要追蹤新提供的接口,尋找改進應用的機會,甚至是尋求開發新應用的可能。

      從系統設計的角度來看,Android期望框架層是所有應用運行的核心,參與到應用層的每一次操作中,并進行全局統籌。Android應用的最大特征是基于組件的設計方式。每個應用都由若干個組件構成,組件和組件之間并不會建立通信信道,而是通過框架層的系統服務,集中地調度和傳遞消息。這樣的設計方式相當于增加了一個中間層,該層了解所有組件的狀況,可以更智能地進行協調,從而提升了整個系統的靈活性。

      1.1.3 運行時

      和所有的Java程序運行平臺一樣,為了實現Java程序在運行階段的二次編譯, Android為它們提供了運行時(Runtime)的支撐。

      Android的運行時由Java核心類庫和Java虛擬機Dalvik共同構成。Java核心類庫涵蓋了Android框架層和應用層所要用到的基礎Java庫,包括Java對象庫、文件管理庫、網絡通信庫,等等。

      Dalvik是為Android量身打造的Java虛擬機,負責動態解析執行應用、分配空間、管理對象生命周期等工作。如果說框架層是整個Android的大腦,決定了Android應用的設計特征,那么,Dalvik就是Android的心臟,為Android的應用提供動力,決定它們的執行效率。

      與為低端移動設備而設計的J2ME虛擬機不同,Dalvik是專門為高端設備而優化設計的。它沒有采用基于棧的虛擬機架構,而是采取了基于寄存器的虛擬機架構設計。通常來說,基于棧的虛擬機對硬件的依賴程度小、生成的應用更節約空間,可以適配更多的低端設備;而基于寄存器的虛擬機,對硬件的門檻會更高一些,編譯出的應用可能會耗費稍多的存儲空間,但它的執行效率更高,更能夠發揮高端硬件(主要指處理器)的能力。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>