探索WebKit內核(一)------ 菜鳥起步


為什么搞WebKit

如今研究WebKit的人越來越多,俺不能免俗,也添�當中。WebKit的火爆也是得益於瀏覽器和WebOS的混戰,隨着Palm WebOS, Chrome OS, Firefox OS和Ubuntu Mobile相繼公布,WebOS逐漸成為Android和IOS之外的第三世界,而WebKit也隨之從瀏覽器內核晉升為Mobile OS的內核,除了IE和Firefox之外,市面上叫得上名字的都是基於WebKit發展起來,Chrome, Safari, Opera, 360......。因此,不管你是從事瀏覽器還是Mobile的開發,WebKit都是不二的選擇。而我眼下是由於須要在WebOS上提供一個相似與Chrome for android那樣能夠遠程debug的功能,而接觸到WebKit,隨着不斷深入,也逐漸步入WebKit的開發正軌,也是想把近期的學習歷程記錄下來,也是幫助其它朋友進這個大門,WebKit的資料實在不多。

怎樣起步

我就假定你和我一樣,從沒接觸過WebKit,沒寫過c/c++,被Java/PHP等傻瓜式語言慣壞了,對設備底層技術不甚了解,在這種情況下(不可能比這個更糟了),也是能夠在一周左右入這個門檻的。正式開工之前先准備以下幾步:
  • 學習文章:http://paulirish.com/2013/webkit-for-developers/,當然也有中文版本號:http://www.infoq.com/cn/articles/webkit-for-developers,弄清楚WebKit的幾個概念
  • 准備一台CPU和硬盤較好的電腦,CPU是為了應付編譯,硬盤是為了應付大規模代碼的訪問(去年7月份買的mac已不夠用,特地為此換了SSD)
  • 開發平台最好是Xcode,Visual Studio也行,只是可能會遇到非常多坎、
  • 准備一本C++ Primmer Plus放在手邊,研究WebKit同一時候順便把C++也給解決了
  • 給予足夠的耐心,應付漫長的源代碼下載和編譯
好了,就這么多,能夠開工了。關於怎樣編譯和調試等問題,我會在興許文章中具體介紹。

開工之前的掃盲

WebKit port

WebKit已發展為相似與Linux這樣平台性的框架,已不是單一產品類型的開源項目。它是一個標准和變異的結合體。以下這張圖能非常好說明這點:

WebKit提供了像這張圖這種標准架構和WebCore這種核心庫,但灰色的其它部分都是要依據各自平台的不同而進行替換和移植,也就是談及非常多的port,這里談的平台就是各自設備的執行環境,比方mac os x,Android和IOS,因此盡管咱是用WebKit,但能夠做的事情還有非常多,WebKit僅僅是提供了流程和框架,里面有非常多洞須要咱自己去填補的。比方,我如今做的遠程調試功能,在WebKit里面已在流程上支持,但具體實現上是須要port的,也就導致了僅僅有chrome for android和safari for IOS支持遠程調試。開頭介紹的文章中已羅列出哪些點是標准已實現的,哪些點是差異化的,從這里面大概就能估計到須要做哪些東西。

學習平台的選擇

官方的WebKit是以Safari for Mac OSX為基礎的,Chromium盡管也是基於WebKit,但基本上已是另外一套,還有QT和GTK平台,有非常多瀏覽器,比方Opera和360都選擇了基於Chromium,那對於我們這些剛開始學習的人來說該怎樣選擇學習的起點呢?我的感覺是,標准的WebKit門檻低一點,文檔要豐富一些,但作為將來project的方向,Chromium更受歡迎一些,所以,我推薦以官方的WebKit為起點,然后再延伸到Chromium。后面我會談開發環境的搭建,基於官方的WebKit,再加上XCode,會感覺手上非常順滑,不至於像大多數大型開源項目那樣在最開始就把你拒之門外。

開始動手

以下我介紹動手的幾個步驟,能夠在你無需了解細節的情況下,把環境搭起來,大多數包含我自己,都還是習慣於代碼和環境搭建好情況下,比較有心情和底氣去往下深入,所以耐心地完畢以下幾步,你就能夠在開發環境中啟動WebKit,這里我介紹的是Mac下的情況,但在windows和linux會困難一些,起碼我是受阻后就放棄了:
  1. 升級Mac OSX和Xcode至最新版本號,我的是Mountain Lion 10.8.3和Xcode 4.6。做這個是由於我的一個哥們用的是lion,用的一樣的步驟,但啟動后一直報內存訪問錯誤,升級系統至最新后就解決了。當然,別忘記了xcode command line
  2. 取得最新代碼:svn checkout https://svn.webkit.org/repository/webkit/trunk 當然,這個過程是須要耐心的,特別是下載layout test時,為了將來的一馬平川,忍忍吧
  3. Xcode的菜單File->Workspace Settings->Build->Derived Data Location一欄選擇Workspace-relative,並輸入WebKitBuild->Done
  4. Xcode的菜單Product->Scheme->Edit Scheme->選擇scheme: All Source(target WebProcess), Exceutable選擇WebProcess.app
假設你是下載的是最新代碼,環境搭建僅僅僅僅須要以上幾步,當你點擊Run后,就能夠開始順利編譯,最后會彈出Safari,實際上它的run的是webkit內核,須要一個Safari來作UI層。WebKit也提供了一個MiniBrowser,這就和Safari沒關系了,啟動方法就是在第四步上的Exceutable選擇MiniBrowser.app就可以。我當初基於的代碼會有些其它的問題,這里就不干擾大家了,假設有遇雷的請把錯誤貼出來,我看看遇到過沒。

OK,了解基本概念,搭建好了開發和調試環境,我敢相信不論什么級別菜鳥,都會有信心往下繼續深究了。我的理念就是這樣,不管后面有多難,千萬不要把開頭搞得太復雜,這樣會拒非常多人之門外,這也是我為什么推薦最開始用xcode的原因,WebKit官方已把編譯中全部細節都隱藏在xcode的項目設置和腳本中了。后面,我會基於源代碼,逐步深入,和大家一起探究WebKit內核的奇妙和偉大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM