webkit android移植(1):开篇

看到这个标题,您可能会觉得奇怪,android浏览器本来就是基于webkit的,而且android还提供了一个非常方便的WebView及相关类。系统的浏览器当然稳定而且强大,但在某些情况下,可能还是不够,比如android浏览器不支持wml,也不支持html5 video。其实webkit本身是支持的,只不过android没有打开编译开关。另外一个原因,就是android中使用的webkit内核比较老,对于html5的支持比较差。因此萌发了自己编译libwebcore,作为独立的应用进行开发。这样做的一个缺点就是和android平台相关了,没有办法做到2.1/2.2/2.3通用。

首先说说开发环境,webkit选择android4.0版本包含的webkit。构建系统选择的是android的源码构建系统。这样选择也是为了选择一个稳定的版本,不在build system上花费太多的时间。开发机环境为ubuntu 11.10,64位系统。

阅读webkit android的代码,我们可以知道,实际上浏览器的代码包括两部分:一部分是java代码,是对webkit的一个封装,提供方便使用的WebView及相关类;一部分是c++代码,也就是webkit代码(包括WebCore和JavaScriptCore,在android 2.2之后,google用V8取代了JavaScriptCore),编译成so,供Java侧代码使用。

分析webkit的代码接口,主要需要做如下工作:

1. WTF库的移植

2. WebCore platform代码的移植

3. WebCore核心代码的移植

4. WebCore Support代码的实现

5. WebKit JNI

6. WebKit Java封装

webkit android移植(1):开篇》上有 8 条评论

  1. jagu

    你好。我有类似需求,看到UC浏览器是编译了一个libBrowserShell_UC.so,strings了一下估计也是webkit修改的。看到本篇说到无法在2.1/2.2/2.3上通用,不知道UC是如何解决的?

    回复
  2. alex

    jagu :
    你好。我有类似需求,看到UC浏览器是编译了一个libBrowserShell_UC.so,strings了一下估计也是webkit修改的。看到本篇说到无法在2.1/2.2/2.3上通用,不知道UC是如何解决的?

    没有在UC工作,也不知道他们是怎么做的。如果不使用系统的第三方c/c++库,比如skia等,还是可以做到2.1/2.2/2.3上通用的。

    回复

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>