Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android webkit 時代結束,我們需要做些什麼准備?

Android webkit 時代結束,我們需要做些什麼准備?

編輯:關於Android編程

Android 4.4最新發布版本對浏覽器來說是一個革命性變化,external下面的webkit源碼已經被移除,前一陣子吵得沸沸揚揚的chromium作為android默認浏覽器的猜測已經塵埃落定,這對於已經習慣於android webkit開發的人來說,需要去學習android chromium。根據本人觀察這次大的變化需要以下幾點。

(1).WebView接口沒有任何變化,基於此的應用可以繼續放心使用

(2).android chromium 在功能和性能較之google自己研發的Chrome浏覽器(Android版)差距還是挺大。

(3).有些在androidwebkit 實現的功能在androidchromium 基本需要重來一遍,對於已經習慣android webkit開發的人員,需要快速去了解新的內核原理和實現方式。(焦點實現邏輯,繪制方式等等)


針對這3點重點做下介紹,實際在androidchromium出世之前,google已經在調整WebView的內部實現了,已經加上了WebViewProvider(WebView繼承WebViewProvider),已經為換核做好准備了.為了保持WebView上層接口的一致性,google對於android chromium還是動了很大手術。我們知道chromium本身的框架是基於多進程模型,渲染進程采用沙箱模型。大家可能看到在external目錄下存在一個chromium文件,但是這個不是真正的chromium源碼,這只是chromium其中的一個網絡模塊。這個模塊google做得已經很獨立,這個模塊也是體現chromium速度快的新特性,目前已經好多使用開源軟件的公司直接拿這個網絡模塊單獨去使用。chromium_org是真正存放chromium源碼的文件夾。目前android4.4采用chromium30版本,目前最新的chromium33 Release版本已經發布。

針對android chromium和Chrome浏覽器(Android)在設計框架上還是存在較大差異。

(1).android chromium 采用單進程模型,能夠省內存,當時在穩定性上就要略差一些,同時沒有了沙盒模型安全系數會略低一些。

Chrome浏覽器(Android) 采用多進程模型,在穩定性安全性都有一定優勢,但是占用內存又會多一些。

(2).渲染方式 android chromium 要依賴於android UI架構,也就是我們常說的OnDraw模型,說到OnDraw,google采用硬件和軟件2種方式。軟件方式和androidwebkit使用方式接近,就是把所有的數據放到skpicture上面,然後在OnDraw的時候繪制,通知到surfaceflinger 完成最終混合操作。硬件方式:依賴於android本身UI系統,目前只能在android4.4平台上運行。具體如何運作,在後續的文章中會進行詳盡介紹。

Chrome浏覽器(Android) 只有硬件加速一種,但是這種硬件加速的模式和上面的有所不同,采用SurfaceView方式,道理很簡單就是申請一塊單獨的內存,專門給GPU線程來使用(android版本的GPU存在Browser進程中以線程方式存在),這樣做的目的,可以同主UI線程分離,使得頁面動作處理更加順滑。

(3) android chromium 在功能上目前不支持WebGL,WebRTC,WebAudio等,Chrome浏覽器(Android版)支持絕大多數HTML5功能。


Android webkit 我們知道如果要對焦點定制,我們直接修改webkit封裝層就可以,但是如果要修改android chromium中的焦點或者js擴展一些功能,就顯得不是那麼直接,其中有以下幾點原因:

(1) 多進程的框架帶來了,全局數據的共享以及控制都顯得不方便。拿簡單的settings的數據控制,都帶來不方便性

(2) android chromium 內核改名為blink,雖然在基本的功能上和webkit有非常相近之處,但是在具體的邏輯上,改動已經非常大,特別是在Loader過程,而且以後會越走越遠。也就是說在以後的開發過程中,只是掌握webkit的框架是遠遠不夠的,需要跟上blink的節奏。

(3) 從繪制方式來看,android chromium的混合主要采用CC(chromium compositer) 模塊,這和webkit直線式繪制模式有很大區別。

以上是研究了android chromium代碼得出的一些結論,如有不當之處歡迎指正。

參考資料:

https://android.googlesource.com/platform/external/chromium_org/

[email protected]

QQ:390012381


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved