Qt for s60

来源:互联网 发布:男女就业不平等数据 编辑:程序博客网 时间:2024/04/27 18:55
笔者最近比较勤劳, 花了一天的时间把qt-s60的环境安装并测试了一下, 发现还挺有意思, 特此memo。听说诺X亚内部已经开始使用qt开发程序, 所以各位看官也要抓紧拉, 如果你掌握了这门技术,没准儿以后就能在诺X亚大颚家里谋个一官半职……后半辈子就不用愁了,呵呵~

网上关于Qt For S60的安装和配置已经有了一些现成的文章, Qt文档里也有一些内容, 但笔者感觉还是比较零散不够系统, 一方面语言的问题, 另一方面找起来太废力气。 本文算是集大成,哈哈(吹一把)~ 加张图,证明吹牛只是咱的副业……


废话少说, 下面就开始。

开发过程需要用到的软件包及其主要作用

Windows环境

需要一台装有Windows的机器, 虚拟机也可, 但要内存分配1G及以上, 太少了不行。 笔者使用虚拟机装Windows XP, 内存1G。 C盘保证5G以上的剩余空间(还不见得够用)。

诺X亚手机一部
手机中的S60系统是3.1及以上版本。 本文以Nokia N95 8GB为蓝本。

Nokia PC Suite
这个是Windows和Nokia手机连接的工具, 后面往手机上安装自己的程序时需要用到。 在Nokia网站下载:
http://nds1.nokia.com/files/support/global/phones/software/Nokia_PC_Suite_7_1_26_1_chi_sc_web.exe


Qt for S60
下载在http://pepper.troll.no/s60prereleases/
这个包当然是必不可少的。 最近的版本被命名为“Garden”, 多么的诗情画意啊! Trolltech的人还真有艺术细胞。

Perl和JRE
这两个工具是S60 SDK运行需要的工具。 需要注意的是Perl要求必须是5.6.1版本, 高低都不行。 下载在
http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi

JRE随便一个比较新的版本就行, 下载最新版本到sun的网站:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jre-6u14-oth-JPR@CDS-CDS_Developer

Carbide C++ 2.0
必装工具, 而且低版本的不行。 下载在:
http://www.forum.nokia.com/Tools_Docs_and_Code/Tools/IDEs/Carbide.c++/
需要注册帐号并登录才能下载。


S60 SDK 3rd Edition FP1
必须是3rd FP1以上版本。 我在forum nokia网站上还找到了3rd FP2, 但不如这个版本好找, 推荐下载此版本, 下载在:
http://sw.nokia.com/id/577ad48d-290c-4bb5-8bdf-779ea8a5bc6c/S60_5th_Edition_SDK_v1_0_en.zip
需要注册和登录。 这个包有三百多兆, 下载比较耗时较长。 安装后要占用将近3G的空间, 可是个绝对的大部头。

另外注意如果你用的是Nokia N97,需要去下载N97对应版本的SDK; Nokia 5800 XpressMusic需要使用 5th Edition 的SDK。 其他的配置方式与本文所述基本一致。


Open C/C++的插件

S60 SDK 3.1需要安装此包, 高的版本已经带了此工具就不需要单独下载安装了。 下载在:
http://www.forum.nokia.com/main/resources/technologies/openc_cpp/
需要注册和登录


安装和配置步骤

1、先装Perl和JRE, 随便选择路径即可, 对应的环境变量会自动设置。
2、把Carbide C++ 2.0, S60 SDK 3rd Edition FP1, Open C++分别安装到默认路径下, 顺序没有什么关系。 安装SDK过程中会提示安装gcce编译器, 这个是用来编译手机上的程序用的toolchain。
3、将qt for S60的包解压缩到C:\, 取个简单的目录名, 比如叫qt-s60.
4、更新Rpipe。 进入C:\Symbian\9.2\S60_3rd_FP1\, 将此目录下的RPipe_3.1.zip解压缩到当前位置。
5、更新预编译的Qt S60库, 这是交叉编译需要的。将C:\qt-s60\qts60binaries\3.x\qtlibs-4.5.0-garden.exe 拷贝到C:\Symbian\9.2\S60_3rd_FP1\并运行。 这个包里带了Qt给s60 arm系统编译的二进制文件,交叉编译程序时需要链接。
6、从开始菜单里找到Programs->Carbide.C++ v2.0->Configure environment for WINSCW command line, 运行此命令。 该命令会配置编译x86版本的S60程序需要的环境变量,这样在普通的windows命令行也可以使用这些环境了。

编译Qt for S60的模拟器版本

S60 SDK提供了一个桌面版本的S60环境模拟器, 我们要把Qt编译成对应的版本就可以在模拟器上运行和调试Qt程序了。
首先“开始”->”运行”->”cmd”打开一个Windows命令行终端,
cd c:\qt-s60
set PATH=c:\qt-s60\bin;%PATH%  //注意命令格式和linux环境下的区别, 另外注意不要随便加空格。
configure -platform win32-mwc -xplatform symbian-abld //这个步骤会生成qmake工具和各个目录下的Makefile, 耗时较长
make debug-winscw //编译命令, 耗时较长

编译对内存要求较高是笔者实践的经验, 最开始笔者的虚拟机分配512M内存, 这一步总是出错, 而且是很吓人的某某工具内部错误, 后来内存增加到1G就没有问题了。

上面的命令如果都能成功运行, Qt的模拟器版本就编译出来了。 后面我们要找一个小qt程序来测试环境是否正确配置。

运行测试程序

随便选一个Qt程序, 也可以是自己写的, 笔者用Qt自带的例子来测试。 提醒大家注意的是这个程序必须和S60S SDK环境放在同一个盘符下, 在我们的环境里就是必须放在C盘。 因为S60的环境去找文件的时候前面没有给出盘符, 如果放到其他分区下就会出现找不到Symbian下的文件的问题。

进到qt-s60目录下的examples\painting\basicdrawing, 运行命令:
make debug-winscw //编译
make run //在模拟器里运行

这时会先弹出Windows的防火墙界面, 选“Unblock”, 再弹出S60模拟器界面, 并且会弹出一个Open C++的一个类似许可证的界面, 要关闭这个界面程序才会运行。 好了, 顺利的话你应该就能看到程序跑在模拟器里的样子了。
编译和发布手机程序

将你的手机连接与电脑的PC Suite连接。

安装Qt的基本库

找到Qt的预编译包, 在C:\qt-s60\qts60binaries\5.0\qt_libs_armv5_udeb.sisx, 双击此文件PC Suite会自动安装, 这个包只需要安装一次, 除非你升级Qt版本。 注意, 如果你的手机是像笔者一样有多个存储器, 请选择安装在手机(而不要选安装在存储卡), 这其中的道理笔者也没有弄明白, 只是不安装在手机上就运行不起来。

安装pips包

如果你的手机里没有带这个软件, 那么需要安装一下。 从http://pepper.troll.no/s60prereleases/patches/pips_nokia_1_3_SS.sis下载后双击安装。 此包只需安装一次。

编译和安装例子程序

还是以刚才的basicdrawing程序为例。
进入程序目录, 运行命令:
make debug-gcce //编译
createpackage -i basicdrawing_gcce_udeb.pkg //这一步笔者这里出错了, 不知道为什么,唉; 后来改用了rvct的编译器就成功了。大家试一下看看gcce能成功吗?给我留言。(后来笔者换用另外一台机器的环境这个步骤就成功了,事实证明这个免费提供的toolchain也是可以用的。 至于笔者环境究竟哪里除了问题还需要继续深入研究。)

如果使用商业版的RVCT编译器, 这里的编译和打包命令略有不同, 应为:

make debug-armv5
createpackage -i basicdrawing_armv5-udeb.pkg

PC Suite会自动弹出安装界面, 手机端也会弹出安装界面, 与前面安装qt库一样。

Qt的examples里面的例子默认安装在手机菜单“应用程序”同级的“QtExamples”文件夹下, 而如果是你自己写的程序, 则会安装在“应用程序”文件夹内, 大家可别找不到程序在哪儿哦~

好了, 快点来感受一下Qt程序在手机上的效果吧。 显示方面和在模拟器上没有什么区别, 只是笔者发现Qt程序对键盘的处理好像还没有做好, 上下键都不好使, 对于键盘操作的手机可真让人郁闷了。 这个问题还需要继续研究一下。

总的来说配置Qt For S60的环境虽然步骤比较多, 但一步一步做下来还算是个比较傻瓜的过程。 唯一的问题是如果一切顺利还好办, 万一哪一步出点什么错就麻烦了, 基本上有任何问题都会成为不可调和的矛盾, 这一点让人觉得太不爽了。