• <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系統架構概況(2)

    發表于:2012-08-17來源:Csdn作者:hzbooks點擊數: 標簽:Android
    Dalvik沒有沿用傳統的Java二進制碼(JavaBytecode)作為其一次編譯的中間文件,而是應用了新的二進制碼格式文件.dex。在Android應用的編譯過程中,它會先生成若

      Dalvik沒有沿用傳統的Java二進制碼(JavaBytecode)作為其一次編譯的中間文件,而是應用了新的二進制碼格式文件.dex。在Android應用的編譯過程中,它會先生成若干個.class文件,然后統一轉換成一個.dex文件。在轉換過程中,Android會對部分.class文件中的指令做轉義,使用Dalvik特有的指令集OpCodes來替換,以提高執行效率。同時,.dex會整合多個.class文件中的重復信息,并對冗余部分做全局的優化和調整,合并重復的常量定義,以節約常量池耗費的空間。這使得最終得到的.dex文件通常會比將.class文件壓縮打包得出的.jar文件更精簡。

      為了提升Android應用的執行效率,從垃圾回收器(Garbage Collection,GC)到編譯器,Dalvik一直在各個方面進行優化。經??梢月牭竭@樣的消息:“新版本的Android系統,比上一個版本的效率高了x倍。”這大都是改善Dalvik的效果。在Android 2.2中,Dalvik引入了對JIT(Just-in-time)編譯的支持,將上層應用的執行效率提升了2~4倍,開啟了Android發展的新篇章。

      由于對于大部分應用開發者而言,無須了解Android運行時的具體細節,因此,本書后續將不會詳細介紹Android運行時的相關內容,有興趣的讀者,可以另行查閱相關資料和源代碼。

      1.1.4 核心類庫

      對于框架層而言,核心類庫就是它的“賢內助”。每一次Android系統升級,能看到的都是框架層SDK的變遷,增加了新的功能,提供了新的接口。而在這些新功能的背后,核心類庫都是居功至偉。

      核心類庫由一系列的二進制動態庫共同構成,通常使用C/C++進行開發。與框架層的系統服務相比,核心類庫不能夠獨立運行于線程中,而需要被系統服務加載到其進程空間里,通過類庫提供的JNI接口進行調用。

      核心類庫的來源主要有兩種,一種是系統原生類庫,Android為了提高框架層的執行效率,使用C/C++來實現它的一些性能關鍵模塊,如:資源文件管理模塊、基礎算法庫,等等。而另一種則是第三方類庫,大部分都是對優秀開源項目的移植,它們是Android能夠提供豐富功能的重要保障,如:Android的多媒體處理,依賴于開源項目OpenCORE的支持;瀏覽器控件的核心實現,是從Webkit移植而來;而數據庫功能,則是得益于Sqlite。Android會為所有移植而來第三方類庫封裝一層JNI接口,以供框架層調用。

      為了幫助游戲和圖形圖像處理等領域的開發者搭建更高效的應用,Android將數學函數庫、OpenGL庫等核心類庫以NDK的形式提供給開發者,開發者可以基于NDK更高效地構建算法,進行圖形圖像繪制。從實踐的角度看,只要能獲取到底層類庫的頭文件信息,開發者就可以逾越NDK的界限,用其他核心類庫的接口進行開發。但這樣做的危險之處在于兼容性差,Android在版本變遷時,可能會替換或修改一些類庫接口或實現,這就會導致依賴于這些類庫的應用無法運行。而NDK提供的都是穩定的類庫實現,不會再做修改,以保證使用NDK的應用具有向上的兼容性。

      1.1.5 硬件抽象層和Linux內核

      Android系統并不是從零開始設計的,而是搭建在Linux內核之上。狹義的Android系統,主要指的是Linux內核以上的各層,從運行的角度來看,它們只是運行在Linux系統上的一些進程,并不是完整的系統,離開了Linux的支撐,就像魚兒離開了水一樣,無法運行。

      Linux之于Android最大的價值,便是其強大的可移植性。Linux可以運行在各式各樣的芯片架構和硬件環境下,而依托于它的Android系統,也便有了強大的可移植性。同時,Linux像一座橋梁,將Android的上層實現與底層硬件連接起來,使它們可以不必直接耦合,因此,降低了移植的難度。

      而硬件抽象層(Hardware Abstract Layer,HAL),是Android為廠商定義的一套接口標準,它為框架層提供接口支持,廠商需要根據定義的接口實現相應功能。

    原文轉自: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>