webkit学习

一.Webkit的由来

1. 十几年前的故事

1994年,Netscape浏览器曾占据整个浏览器市场的90%,风头无二(也很嚣张)。但随着微软推出win95后,把IE 1.0做为win95的插件发布,开始挑战Netscape的霸主地位,到发布IE 4.x,短短三年时间,打败Netscape 这里面虽然说有与windows集成的原因,但从本身的功能上来讲, IE从速度和对标准的支持上来讲,已真正打败了Netscape

此阶段的浏览器可称为第一代浏览器。它的主要特点是单窗口型式。竞争的最主要是访问速度、兼容性。原因:90年代都大多是用modem拨号上网,56K/S

2Webkit出生

Apple公司在它的Mac OS X里,集成了基于KHTML 改进型的 WebKit 引擎的浏览器,命名为:Safari,当年苹果比较了 Gecko  KHTML 后,之所以选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。(KHTML是由KDE 小组开发的)

随后, apple将它开源。

至此,第二代浏览器,基本上是三分天下:

  Trident: IE系列, Trident 作为内核引擎;

  Gecko: Firefox 是基于 Gecko 开发;

WebKit: Safari, Google Chrome, 搜狗双核浏览器(集成IEchrome), QQ浏览器5

WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Gphone Apple  iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit

总结:

webkit是什么?

Webkit是一套浏览器排版代码, 已开源,主要由apple公司在维护。强调: webkit仅仅是一套排版引擎。

举个例子说明下:

 googlechrome是一个浏览器对吧, chrome主要包含以下模块: 外壳UI(多标签,菜单,状态栏,网址输入栏等),读取网络数据的模块,排版解析模块,JS解析引擎。

外壳UIgoogle自已写的,js引擎是google写的V8, 读取网络数据模块用的winhttp,只有排版引擎用的webkit

1.       Webkit提供以下几种主要的编译环境

1). Max os X(Xcode Tools package)

2). Windows (Visual Studio)             最为常用,毕竟用winxp系统的还是多数

3).QT

4).GTK

具体的环境搭建见:http://www.webkit.org/building/tools.html

2.       WebKit winxp下编译小结

网上很多人抱怨webkit总是编译不过,确实, webkit没有提供一个下载代码后,直接可以用VS工具编译的方法, 因为它用到了gcc编译环境,在windows下编译的话,需要安装cygwin才行,由于它的编译脚本用的perl,又需要安装perl的环境。总之比较麻烦。
   这也是因为网上的文章,有介绍QT安装环境的,有的是介绍官方webkit的安装环境的,还有的是介绍safari的, 所以在网上查阅文档时一定要找到你相对应的才行。

重点要注意的地方:

1.       下载Cygwin,一定要下载webkit提供的版本。

2.       用vs2005的话,一定要打SP1.

3.       QuickTime SDKdirectX SDK必不可少。

4.     启动Cygwin ,安装官网方法,执行./WebkitTools/Scripts/build-webkit脚本。

 

3.       较简单的编译安装QT webkit

直接在QT的官网下载如:qt-sdk-win-opensource-2009.04.exe(该版本是我09年下半年使用的,官网上应该早有新版本了)

不需要cygwin, 不需要quickTime,只需要执行下面几个步骤:

1、下载安装Visual.Studio.net.2005,或2008

2、将qt-sdk-win-opensource-2009.04.exe解压到某个目录下;以D:\qt4.5.0为例

3、配置环境变量:

在“我的电脑”—“属性”---“高级”---环境变量---**的用户变量---新建,

添加一个变量名为QTDIR 变量值为D:\qt4.5.0\qt-win-opensource-src-4.5.0

PATH变量值为D:\qt4.5.0\qt-win-opensource-src-4.5.0\bin

添加新的环境变量,名字为"QMAKESPEC",值为"win32-msvc2005".

4、编译源代码

通过"开始"菜单 -> "Microsoft Visual Studio 2005" -> "Visual Studio Tools", 运行命令行.

 

qt 源码的目录下 , 运行命令:

>configure.exe -webkit

编译过程中,会问一个问题:

是否接受GPL协议,'y'.

经过一段时间以后,qmake被编译出来了. 在安装目录的\qt\下,就可以找到工程文件:“projects.sln“

编译运行。在Visual Studio中设置browser工程为主工程,然后编译。可以顺利编译完成,下面是运行后的效果图。

4.       最最简单的webkit学习环境-ISee

            Isee是一位中国人移植的webkit winxp下用vs2008直接编译即可调试,用于学习最好,强烈支持,也是一位同事推荐给我的,后面的代码走读主要基于该环境。

           Isee还可以直接移植到wince平台运行噢。


编译过程中出现问题

解决编译过程中可能出现的常见问题

1、问题描述:

Can't open perl script "/cygdrive/e/project//WebKit/JAVASC~1/docs/make-bytecode-docs.pl": No such file or directory

解决方法:

这是因为你的电脑上已经安装了perl,在系统的环境变量PATH中含有你安装的perl路径,可将该PATH中perl路径去除。或者将自己安装的perl卸载。

2、问题描述:
FunctionPrototype.obj : error LNK2019: 无法解析的外部符号_u_charType_46
Lexer.obj : error LNK2001: 无法解析的外部符号_u_charType_46
YarrJIT.obj : error LNK2001: 无法解析的外部符号_u_tolower_46
解决方法:运行./ update-webkit-auxiliary-libs下载辅助安装包WebKitAuxiliaryLibrary.zip
3、问题描述:
6>..\platform\DefaultLocalizationStrategy.cpp(345) :error C2001: 常量中有换行符
6>..\platform\DefaultLocalizationStrategy.cpp(347) :error C2001: 常量中有换行符
解决方法:
编码问题造成的。
将345行替换如下:
returnformatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Upcontext menu item with selected word"), selectedCFString.get());
将347行替换如下:
returnWEB_UI_STRING("Look Up “<selection>”", "Look Up contextmenu item with selected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));

4、问题描述:
vc++2005 error PRJ0002 的问题 错误的结果 1 (从“C:\WINDOWS\system32\cmd.exe”返回)解决方法:
这个是关联错误,是因为有些模块编译错误造成的。解决了模块的编译错误,这个关联错误也就消失了。


5、问题描述:
对VC 2005 error C2220:警告被视为错误-没有生成“object"
解决方法:
参考FIX:VC2005编译错 误:1error C2220: 警告被视为错误 - 没有生成“object”文件
选中解决方案,选择属性->配置属性 ->c/c++->常规->将警告视为错误,把 是 改成 否。
 
6、问题描述:
正在创建库WebCore.lib : fatal error LNK1106: 文件无效或磁盘已满: 无法查找到 0x51F6CD51
解决方法:
参考FIX:LNK1106:: 无法查找到 0x76364 无效或磁盘已满解决此问题, 添加 /IGNOREIDL 链接选项。
在VisualStudio.NETIDE, 设置此链接器选项请按照下列步骤操作:
a. 打开 属性页 对话框对于项目。
b. 展开 链接 文件夹。
c. 单击要查看嵌入的 IDL 属性页 嵌入的 IDL 。
d. 将 忽略嵌入的 IDL 属性设置 是 。

7. 问题描述:
\platform\graphics\ca\win\LegacyCACFLayerTreeHost.cpp(39): fatal error C1083: Cannot open include file: 'd3d9.h': No such file ordirectory
解决方法:
需要安装DXSDK_Feb10.exe


8. 问题描述:
crypt324>LINK :fatal error LNK1104: cannot open file 'crypt32.lib'
解决方法:
Early versions of VisualStudio 2005 are  missing the library'Crypt32.lib'. A workaround is to downloadand install the  Windows Server 2003 R2Platform SDK then copy the file'Crypt32.lib' from the directory C:\Program Files\Microsoft Platform SDK for WindowsServer 2003 R2\Lib to %VSINSTALLDIR%\VC\PlatformSDK\Lib.

9. 问题描述:
>'touch' 不是内部或外部命令,也不是可运行的程序
>NMAKE : fatal errorU1077: 'touch' : return code '0x1'
解决方法:
在vs2005->Tools->Options->Projects and Solutions->VC++Directories的Executable files中添加已经安装的cygwin的bin目录路径,比如路径为C:\cygwin\bin。


10. 问题描述:
fatal error C1083:Cannot open include file: 'stdint.h': No such file or directory
解决方法:
WebKitSupportLibrary.zip安装错误或者未安装导致这个错误。
检查WebKitSupportLibrary.zip是否放错目录了,应将其放置到webkit源码根目录下,然后运行脚本” ./ update-webkit-support-libs”。

11. 问题描述:
QTCFDictionary.cpp(30): fatal error C1083: Cannot open include file: 'CFData.h': No such file ordirectory
QTDecompressionSession.cpp(29): fatal error C1083: Cannot open include file: 'ImageCompression.h': No such fileor directory
QTMovie.cpp(31) : fatalerror C1083: Cannot open include file: 'FixMath.h': No such file or directory
QTMovieGWorld.cpp(30) :fatal error C1083: Cannot open include file: 'GXMath.h': No such file ordirectory
QTMovieTask.cpp(30) :fatal error C1083: Cannot open include file: 'Movies.h': No such file ordirectory
QTMovieVisualContext.cpp(30): fatal error C1083: Cannot open include file: 'CVBase.h': No such file ordirectory
QTPixelBuffer.cpp(29) :fatal error C1083: Cannot open include file: 'CFNumber.h': No such file ordirectory
QTTrack.cpp(29) : fatalerror C1083: Cannot open include file: 'Movies.h': No such file or directory
解决办法:
首先卸载Quicktime SDK 与 DirectX SDK,然后重新安装它们到C盘默认路径下。
不卸载的话,就要把原来的安装路径添加到环境变量中去。

12. 问题描述:
Cannot open include file:'WebKit2/WKHitTestResult.h': No such file or directory
解决办法:
可能跟代码有关,可以将WebKit2\WebKit2.h中的#include<WebKit2/WKHitTestResult.h>这一行注释掉。

13、开启WML (最新版本已经不再支持WML,开启也没用了)
解决方法:修改WebKit-r95481\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops文件,
在<VisualStudioPropertySheet>末尾添加
         <UserMacro
              Name="ENABLE_WML"
              Value="ENABLE_WML"
              PerformEnvironmentSet="true"
       />

在<Tool>标签的末尾添加;$(ENABLE_WML)


说明:
1.       开启其他宏,参照开启WML的格式。替换相应的宏名称即可。
2.       在webkit老版本中运行脚本./update-webkit即可下载WebKitAuxiliaryLibrary.zip。现在需要运行./ update-webkit-auxiliary-libs

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值