探索WebKit内核(一)—— 菜鸟起步

探索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内核(一)------ 菜鸟起步
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内核的奇妙和伟大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118061.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据结构循环队列_循环队列的数据结构

    数据结构循环队列_循环队列的数据结构循环队列代码如下:#include “pch.h”#include <iostream>using namespace std;#define MAXSIZE 5struct SqQueue{ char* Base; int front; int rear;};//初始化循环队列int initqueue(SqQueue &q){ q.Bas…

    2022年8月18日
    7
  • sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法

    sqlserver数据库置疑修复语句_sql2008数据库可疑解决方法SQL数据库修复的三大核心技术:1、磁盘阵列分析重组技术;2、数据库恢复与修复技术;3、SCSI盘物理故障开盘技术。至今已经成功恢复数百台服务器的SQL数据库,用户覆盖全国。导致SQL数据库丢失的原因:1、各种原因:误删除、误格式化、断电等造成的MSSQLSERVER数据库文件破坏。2、MSSQLSERVER数据库丢失了*.ldf文件,只有一个*.MDF文件,将是非

    2022年8月20日
    25
  • FinSH组件用法

    FinSH组件用法概述本文简单介绍rtthread的FinSH控制台组件的用法,在实际项目中,该组件对调试非常方便。正文首先,先按上篇搭建好工程。这里,我以正点原子战舰板工程来实验。FinSH组件的文件结构如下:shell.c、msh.c这两个文件实际项目中基本不用更改,所以我们在cmd.c中增加我们需要的命令即可。不带参数的命令带参数的命令总结到这里,就简单了解了FinSH组件的用法。…

    2022年5月11日
    64
  • CodeIgniter启用缓存和清除缓存的方法「建议收藏」

    CodeIgniter启用缓存和清除缓存的方法

    2022年2月8日
    39
  • Unity3D | 经典小游戏Pacman

    Unity3D | 经典小游戏Pacman❥你的关注是博主坚持创作的伟大动力❥☀️项目效果展示目录☀️项目概况⭐️整体布局⭐️地图介绍⭐️玩法介绍⭐️相关知识⭐️版本说明☀️项目源码❀玩家的移动(PacmanMove.cs)❀糖豆设计(Pacdot.cs)❀敌方人机的移动(GhostMove)

    2022年5月18日
    46
  • 2010年10月51CTO壁纸点评活动获奖名单【已结束】

    2010年10月51CTO壁纸点评活动获奖名单【已结束】

    2021年8月8日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号