为什么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内核的奇妙和伟大。

探索WebKit核心(一)------ 新秀开始的更多相关文章

  1. CSS gradient渐变之webkit核心浏览器下的使用

    一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...

  2. CSS gradient渐变之webkit核心浏览器下的使用以及实例

    一.关于渐变 渐变是一种应用于平面的视觉效果,可以从一种颜色逐渐地转变成另外一种颜色,故可以创建类似于彩虹的效果渐变可以应用在任何可以使用图片的地方.例如,您可以指定一个这么一个渐变:顶部的颜色是红色 ...

  3. 探索WebKit内核(一)------ 菜鸟起步

    为什么搞WebKit 如今研究WebKit的人越来越多,俺不能免俗,也增加当中.WebKit的火爆也是得益于浏览器和WebOS的混战,随着Palm WebOS, Chrome OS, Firefox ...

  4. Junit初级编码(二)探索JUnit核心

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.现在就让我们慢慢学习Junit单元测试框架 一.Junit的三个核心概念测试类.测试集.测试运行器 1 测试类 公共的, ...

  5. CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack

    @media screen and (-webkit-min-device-pixel-ratio:0) { ul#navUL ul a{padding:8px 2px;word-break:keep ...

  6. 一系列令人敬畏的.NET核心库,工具,框架和软件

    内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...

  7. 基于Chrome内核(WebKit.net)定制开发DoNet浏览器

    1.    源起 a)     定制.Net浏览器 本人是一名C#开发者,而作为C#开发者,做客户端应用中最头痛的一件事就是没有一个好的UI解决方案, WinFrom嘛,效率虽然还不错,但是做一些特殊 ...

  8. WebKit示例解读

    如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处.UIWebView是基于移动版的Safari的,所以它的性能表现十分有限.特别是在对几乎每个Web应 ...

  9. 基于QT的webkit与ExtJs开发CB/S结构的企业应用管理系统

      一:源起       1.何为CB/S的应用程序       C/S结构的应用程序,是客户端/服务端形式的应用程序,这种应用程序要在客户电脑上安装一个程序,客户使用这个程序与服务端通信,完成一定的 ...

随机推荐

  1. Codeforces Round #272 (Div. 1)C(字符串DP)

    C. Dreamoon and Strings time limit per test 1 second memory limit per test 256 megabytes input stand ...

  2. .Net程序猿乐Android开发---(4)注册页面布局

    接下来我们介绍的登陆页面布局,在本节中,我们看一下注册页面布局,页面布局大同小异,来一起熟悉下基本控件的使用方法. 效果图: 1.加入注冊页面 右键选中layout目录,加入注冊页面.例如以下图 点击 ...

  3. UVA 10140 - Prime Distance(数论)

    10140 - Prime Distance 题目链接 题意:求[l,r]区间内近期和最远的素数对. 思路:素数打表,打到sqrt(Max)就可以,然后利用大的表去筛素数.因为[l, r]最多100W ...

  4. HighChart学习-更新数据data Series与重绘

    一:HighChart介绍 基于JQuery的纯JavaScript的图标库,支持各种图表显示,同时还支持Mootools 与Prototype详细版本支持在这里: JQuery 1.3.2 - 1. ...

  5. Android判断应用程序从后台回到前台

    MainActivity如下: package cc.testbackgroundtofront; import java.util.List; import android.app.Activity ...

  6. php中遍历数组的方法

    参考网址:http://www.jb51.net/article/29949.htm 这三种方法中效率最高的是使用foreach语句遍历数组.从PHP4开始就引入了foreach结构,是PHP中专门为 ...

  7. [ACM] POJ 3259 Wormholes (bellman-ford最短路径,推断是否存在负权回路)

    Wormholes Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29971   Accepted: 10844 Descr ...

  8. HttpClient(联网)

    抽样: void GameRequest::initRequset(const char* url, cocos2d::CCObject* pTarget, cocos2d::SEL_CallFunc ...

  9. SharePoint采用BCS开发第一个应用程序(两)

    SharePoint采用BCS开发第一个应用程序(两) 创建外部数据源 在本章中,我们使用AdventureWorksLT2008 SQL Server数据库作为外部数据源.下图显示了表SalesLT ...

  10. java 字符串 asc 加密解密

    package com; public class MD5Test { /** * @param args */ public static void main(String[] args) { Sy ...