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

來源:互聯網
上載者:User

標籤:android   style   http   color   io   os   ar   java   for   

為什麼搞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 portWebKit已發展為相似與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核心的奇妙和偉大。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.