webkit的移植

Webkit是一个开源的浏览器排版和渲染引擎,它的移植主要通过以下的几步去完成。
1.首先要移植的就是c层的代码。因为要实现的activity不能调用系统的组件,所以我们要编译生成自己的.so的库,然后使用system.loadlibrary()的方法来调用我们自己的库
2.在移植的开始,我们从源码中抠出来了extern/webkit的内容,放到了我们自己新建的目录下面。(mywibkit/jni/)
3.在开始进行编译的时候是没有通过的,主要原因有三点:
    1).需要关联很多其它文件夹中的代码;
    2).需要对mk文件进行修改;
    3).需要关联一些源码编译后生成的库。
4.在确定了方向后,就开始解决这些问题。
    1).首先从源码中将archer,icu4u,libxml2,skia,sqlite,stlport等文件夹的内容移植到我们的目录下,然后新建了一个文件夹将javascriptcore,js,webcore等内容进行移植。
    2).从编译好的源码中将我们需要链接的库给移植了过来。
    3).修改mk文件是一个比较麻烦的事情,也花费了很长的时间。首先我们将src的目录给进行了修改,用以匹配我们现在的文件;然后将mk文件中与v8引擎相关的部分给注释掉,因为我们用的不是这个引擎在2.3中;在mk文件中增加了一些编译时需要链接的库的实现,以及其它一些细节上的修改。
    4).在编译的过程中,会提示一些缺少头文件之类的东西,这时需要做的就是寻找到这些文件后,将这些头文件给放进文件夹中即可。
5.在编译生成.so库的时候,需要注意一点,就是把WebKit/android/jni/WebCoreJniOnLoad.cpp中所注册的函数,所在的文件中的寻找类名的地址改为自己的文件所在的路径。
6.编译通过生成.so库

在编译生成了.so库以后,要进行的就是java的移植。
java的移植主要移植的是gingerbread/frameworks/base/core/java/android/webkit中的文件。但是移植这个文件是不够的,我们还需要将net,webkit,util等文件下的内容给移植过来。
在java移植的方面,我们主要修改的是包名,但是有两个文件的错误是包名不能解决的,我们又仿照2.3的代码进行了修改。

在java方面也没有错误后,进行了activity的实现的操作。
我们没有使用系统提供的包而是使用我们自己的,然后使用system.loadlibrary()函数加载我们的库,然后使用webView.loadUrl(mUrlText.getText().toString());
去实现上网的功能。

你可能感兴趣的:(webkit的移植)