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

來源:互聯網
上載者:User

        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/

lihui40319@sina.com

QQ:390012381


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.