編輯:關於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/
QQ:390012381
本文實例講述了Android編程之OpenGL繪圖技巧。分享給大家供大家參考,具體如下:很久不用OpenGL ES繪圖,怕自己忘記了,於是重新復習一遍,順便原理性的東西總
前言:俗話說磨刀不誤砍柴工,一個優秀的產品從一個不錯的點子直到用戶的手中,是需要一個團隊不遺余力協同合作不斷打磨出來的;同樣,一個好的App除正常的代碼編寫外,還需要經過
用過ios的都知道ios上輸入法關閉的同時會自動關閉輸入框,那麼在android上如何實現監聽輸入法彈出和關閉呢?本篇文章就為你提供了一種可靠的實現方式。演示效果視頻地址
本文介紹本文是翻譯自Google 官方課程 Building Apps with Connectivity & the Cloud 第二節 Performing