s60webkit 终于可以在真机上运行了,嘿嘿

来源:互联网 发布:盐城市公务员网络培训 编辑:程序博客网 时间:2024/05/05 14:45

话说这几周要把webkit在symbian的手机上跑起来,本以为不太难的任务,结果做了大概有3周之久,走了很多路,不过最终还是胜利地在真机运行了,很欣慰,说说过程吧。

 

最先又是一番google,(最近google又经常被墙,用得很郁闷),要在symbian上跑还是先从s60webkit入手肯定是比较快,要不从webkit主干上移植,凭我一人之力估计得要一年吧。选定方向后,就开始拉代码了,大家都说21772这个版本比较稳定,那咱也从这个版开始吧。

 

编译的过程参照了以下几篇BLOG

中文版

http://blog.csdn.net/mikefather/archive/2010/05/10/5574183.aspx

 

英文版

http://wiki.forum.nokia.com/index.php/Building_S60Webkit

 

如果按照这几个文章里所提到的修改点,一一修改后,用build.bat是可以把模拟器和真机版都成功编译出来的,但是模拟器可以运行,在真机却运行不起来。 从最开始的"无法安装组件已固化在手机系统" 错误 到 "未授予所需的程序接入权限" ,就折腾了好多天。

 

"无法安装组件已固化在手机系统" 这个是因为reindeer.pkg 里的PageScaler_sdk.dll toolbar.dll recenturlstore.dll xmlengine.dll这几个组件已经固化在手机里了,无法更新要注释掉

 

"未授予所需的程序接入权限" 这个错误,应该是安装包里的各个exe,dll应该都要设置相应的能力,没设置对,将会影响安装。

 

修改完这些问题,总算把程序安装上后,按reindeer图标,却闪了一下,毫无反应,纠结

可以参考这个文章,以便让程序出错时,symbian可以给点错误代码提示,而不是直接消失,就是文章里有个errrd.zip文件

http://dev.firnow.com/course/3_program/jdkf/20071129/89115.html

 

错误码是看到了, KERN EXEC 3,这个错误太常见了,以至于没什么信息量,用TRK真机调试,一样的只是提示起不来,绝望中

 

又搜来搜去,发现一个强帖,当然是后来验证成功后,才发现他是强贴

http://discussion.forum.nokia.com/forum/showthread.php?109899-S60WebKit-missed-WidgetEngineBridge.h/page3

参见 mgroeber9110 此人在39楼的回复,他不是从21772这个版本开始做的,而是从s60webkit trunk的最后一个revision 25205开始的,我想代码新点总归能多解决一些bug,好一点吧,就按照他饿方式开始尝试了。他提供了一个patch文件,一运行,就把要修改的修复了。然后就build -g ,很顺利的生成了各个库,当中只涉及到一些小修改。打包,上机,结果能跑起来了,景仰中。

 

build -g成功后,我还追求用IDE直接编译生成,在前面纠结的两周我已经通过学习perl语法把 build.bat看了个大概明白,主要功能就是把S60Internals里的zip文件解压缩到epoc目录下,然后挨个的mmp进行编译。 咱就手工地把zip都先解压缩了,然后用 carbide导入bld.inf 开始build 碰到若干问题,总结如下:

checkout最新s60webkit代碼后(r25205 from 23-Aug-2007)
用patch文件s60webkit_20100520.zip更新全套工程http://discussion.forum.nokia.com/forum/attachment.php?

attachmentid=1060&d=1274997811
build 工程步驟
1、import bld.inf后
2、修改各个mmp文件 添加#include "../../s60Internals/S60.hrh" 
               添加macro __BROWSER_SDK
               #define __BROWSER_SDK
               #define __SCALABLE_ICONS  add these 2 macro to some cpp in 3rdMR
3、修改include/gcce/gcce.h   #include <symbian_os_v9.1.hrh>
4、build pcre.lib 這個是很多庫的基礎
5、修改icons.mk browsercore.mmp主要解決icon和bmp文件的編譯問題
6、add #include <featureinfo.h> to some cpp

 

另外编译lib库时还一直提示

process_begin: CreateProcess((null), cr ....., ...) failed.
make (e=2): The system cannot find the file specified.

 

后来发现是打包的这个命令没有找到,要通过在epoc32/tools/compilation_config/gcce.mk中
的AR=arm-none-symbianelf-ar下面加上ARCHIVER=$(AR)  ,因为脚本中是用ARCHIVER 这个变量。

 

磕磕碰碰,终于可以在carbide中编译 ,调试s60webkit了,不错不错,比运行build.bat直观多了。感觉通过这几周摸索,倒是学了perl, trk真机调试,symbian的工程组织等一系列知识。

目前在3rd, 3rd_MR, V5版本都编译顺利通过,并在E66,E71,N97运行成功。不过又面临一些问题,如浏览wml页面就直接崩溃。在N97上还无法捕捉到单击事件。路漫漫,我要继续了。。。

 

 

 

原创粉丝点击