zoukankan      html  css  js  c++  java
  • 探索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内核的奇妙和伟大。

  • 相关阅读:
    Asp.net 动态添加Meta标签
    【转】在SharePoint Server 2010中更改“我的网站”
    SPQuery DateTime 类型查询
    Asp.net Web Application 打开 SharePoint 2010 Site 错误 The Web application at could not be found
    How To Create SharePoint 2010 Site Collection In Its Own DB
    C# 文件打印
    面试题 java集合
    《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
    《深入理解Java虚拟机》(五)JVM调优
    《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4516599.html
Copyright © 2011-2022 走看看