小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于chromium content API 如何定制自己的WebView

 wusiqi111 2019-06-24

相信做過(guò)browser的同學(xué)們都接觸過(guò)chromium,或者做過(guò)其中的項(xiàng)目。我接觸chromium一年半了。在兩個(gè)企業(yè)設(shè)計(jì)與做過(guò)自定制瀏覽器項(xiàng)目。我做的是 browser for android。

    Android原生瀏覽器在Android4.2及之前的系統(tǒng)中都有。但是其支持Html5性能不是很好。與chrome for android比較起來(lái),其不能支持sandbox,不能支持硬件加速。所以,原生瀏覽器在html5時(shí)代已經(jīng)out了。下文中,我來(lái)分享下我們做瀏覽器內(nèi)核部分的心得。

   首先,我們做子定制瀏覽器內(nèi)核的效果:類(lèi)似于chrome for android,良好的支持硬件加速和sandbox。其效果要媲美chrome for android。

   看過(guò)Android4.4源碼的同學(xué)應(yīng)該知道,Android4.4上,WebView是WebViewChromium對(duì)象的封裝;而WebViewChromium對(duì)象是對(duì)AwContent對(duì)象的封裝。

    研究過(guò)chromium的同學(xué),應(yīng)該對(duì)AwContent這個(gè)對(duì)象有所了解吧。這個(gè)對(duì)象的位置在src目錄下的android_webview目錄下。在chromium目錄結(jié)構(gòu)中,這塊代碼是對(duì)原聲瀏覽器WebView的下層支持與邏輯實(shí)現(xiàn)代碼部分。

    在與android_webview目錄的同級(jí)目錄中有content目錄(后文稱(chēng)content API)。這個(gè)目錄是chrome將內(nèi)容顯示部分進(jìn)系剝離,獨(dú)立出來(lái)的一個(gè)目錄,該目錄只能進(jìn)行普通的網(wǎng)頁(yè)展示。(在content目錄下 ,有shell子目錄,可以編譯content_shell_apk,作為一個(gè)content目錄的使用Demo)。

     如果想自己定制一個(gè)支持硬件加速和sandbox的WebView。個(gè)人覺(jué)得,應(yīng)該首先去了解和分析下content目錄的結(jié)構(gòu)。要明白幾個(gè)對(duì)象之間的關(guān)系:JAVA對(duì)象:Shell 、 ShellManager、ContentView、 ContentViewRenderView、 ContentView、ContentViewCore等等關(guān)系。這些對(duì)象是什么邏輯,這些對(duì)象如何去展示網(wǎng)頁(yè)和處理各種事件。

  至于CPP對(duì)象:shell  shell_manager   content_view_core、web_contents_impl、web_contents_delegate、web_contents_observer、render_view_impl、render_view_host_impl等等。把這幾個(gè)對(duì)象的關(guān)系搞懂了,恭喜你同學(xué),基本上你可以明白content API結(jié)構(gòu)了。這是做后面工作的第一步。這一步往往花費(fèi)的時(shí)間也比較長(zhǎng)。

   這一步做到了,然后接著看。

   給你個(gè)提示,看看android_webview目錄下,WebView的底層對(duì)接的對(duì)象是誰(shuí)。上文中提到了,是AwContent對(duì)象。那么,OK。在content目錄下,這個(gè)AwContent相對(duì)象的對(duì)象是誰(shuí)?。客瑢W(xué),自己思考下吧。這個(gè)問(wèn)題,我思考了,兩個(gè)周。實(shí)驗(yàn)了一把,沒(méi)問(wèn)題的。

   至于WebView的回調(diào)系統(tǒng),可以參考下Android4.4的設(shè)計(jì)方式。WebView具備了,其callback具備了,同學(xué),你的WebView作出來(lái)了。如果有交流問(wèn)題,可以email給我:liuwenbo2018@163.com

   做這個(gè)WebView及其回調(diào)系統(tǒng),也是公司需要而做。從前期技術(shù)驗(yàn)證和后面的架構(gòu)設(shè)計(jì)與實(shí)現(xiàn),前前后后,我一個(gè)人搞了一個(gè)月。當(dāng)然了這個(gè)階段的成果,細(xì)節(jié)上還需要去完善和成熟。不過(guò)整個(gè)框架具備了,填寫(xiě)點(diǎn)代碼還搞不定的話,回家抱孩子去吧。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多