Symbian开发笔记(一) Qt for Symbian环境的安装
以下文字是工作中的总结,如有错误或者不足之处,望指出。不胜感激!
安装步骤说明:
以下带*号的要安装在同一个盘中,并且路径不能有空格和中文,否则。。。
1. 安装JDK
2. 安装ActivePerl-5.10
3. 安装Carbide_cpp_v2_3_en (*),装好后运行“程序\Nokia\Carbide.c++\Configure environment for WINSCW command line”,输入Y,按回车。
4. 安装Nokia_N97_SDK_v1_0_en(*),这个安装结束后会提示安装CSL Arm Toolchain,这个要装,路径默认即可。装好后运行“程序\Nokia Developer Tools\N97 SDK\v1.0\Languages\Change to Chinese”,可以将模拟器语言切换成中文。
5. 安装qt-symbian-opensource-4.7.0-s60.exe(*)
6. 安装Nokia_Qt_SDK_Win_offline_v1_0_1_en(*)
7. 运行Carbide.c++,会提示有一个新的SDK,按Restart,重启一下,然后关掉。
(做这一步是为了那编译器识别新装的SDK,否则会编译不通过)
8. 配置Mobile_extensions(这个是Qt4.4以前的老库,有新库所没有的一些功能,比如电话功能,不用就不要配置了,它对新版有兼容性问题,经过配置直接静态编译才可以使用),
a.解压Mobile_extensions_preview_3(*) 和MobExtConfig-0.5(*)放在同一文件夹。
b.点击开始菜单下的Qt for Symbian by Nokia v4.7.0 (S60 Opensource)--Qt for Symbian Command Prompt,会打开一个cmd窗口
c.在打开的cmd窗口运行:
configure.bat -sourcepath D:\Qt\Mobile_extensions\extensions\src (路径要改成你相应的)
9. 配置QtMobility(Qt移动开发的新库) ,解压缩qt-mobility-symbian-opensource。
然后把解压出来的qt-mobility-1.0.2-epoc32-5.0.zip文件解压到N97 SDK里面。
.点击开始菜单下的Qt for Symbian by Nokia v4.7.0 (S60 Opensource)--Qt for Symbian Command Prompt,会打开一个cmd窗口,在打开的cmd窗口运行:
Configure.bat
显示成功后再运行:
make debug-winscw
结束后关闭此窗口即可
10. 将C:\Program Files\Common Files\ 下的Symbian文件夹移动到和Qt在同一盘并且路径中不能有空格和中文,然后打开 我的电脑--属性--高级--环境变量,将系统的Path变量中的C:\Program Files\Common Files\Symbian\tools替换成新的路径,如下图所示:
(不改的话由于原路径中有空格,会导致SDK编译不通过)
11. 配置Qt的编译器,Qt默认是没有识别SDK的模拟器的,需要自己配置。打开Qt Creator--Tools--Options--Qt4
点击那条黄色选中的,按下图配置路径:
填写完就按OK,然后关掉Qt,重启Qt即可。
12. 启动Qt,开始第一个项目HelloWorld
点击File--New File or Project,选择Mobile Qt Application,下一步,项目名HelloWorld,路径要和Qt同盘哦,这个是关键,否则编译器无法编译出sis文件。其他设置默认即可。
Qt会自动打开mainwindow.ui文件,这是控件布局的文件,拖一个Label上去,内容改成HelloWorld即可。
然后点击左边的,
会出现一个列表,选择Symbian Emulator,如下图:
然后按那个绿色的按钮,然后就是等待编译完成并运行,如果你能看到最终结果,说明配置成功。
常见问题解答:
1.为何要装Carbide 和 Qt Creator两个开发环境?
答:装Carbide的目的是为了使用N97 SDK所带的模拟器,我们开发使用Qt Creator即可
2.N97竖屏版的在本本这类的小屏幕上会显示不全,如何解决?
答:打开N97 SDK安装目录下的\epoc32\data 文件夹,可以看到epoc_*****_touch_***.ini文件,你要使用哪个分辨率的就打开哪个,在第三第四行是显示的偏移,都改为0即可。
ScreenOffsetX 0
ScreenOffsetY 0
然后修改相应的bmp文件,将大小改为适合的分辨率即可
效果如图:
3.安装qt-symbian-opensource的目的?
让N97 SDK装上Qt Symbian库
4.Mobile_extensions和QtMobility的区别?
Mobile_extensions是4.4以前版本用的老库,功能已经比较完善,但是兼容性差,只支持S60。QtMobility是Qt全新开发的一个库,支持多种移动平台,但功能还不够完善,比如常用的打电话功能,要用这个功能只能使用Mobile_extensions或者进行Symbian C++的混合编程。
5.为啥明明代码没有问题,效果就是出不来呢?
答:如果你确定代码没有问题,那只能说是Qt的Bug,目前Qt for Symbian的Bug还是非常的多的:
开发前最好先看看Bug列表,否则你调试N小时也找不出问题所在会让你怀疑自己的能力的。
如果你发现了Bug,可以向下面的网站提交Bug:
http://bugreports.qt.nokia.com/secure/Dashboard.jspa
6.为啥delete了对象,内存还是没有释放?
答:Bug呗,比如QtWebkit,所以官方会让你把堆空间的大小改大,官方推荐设置最大堆空间32M,可是很多Symbian机器连15M RAM都没有,在这些机器上程序要么跑不起来,要么跑一会就自动关闭了。。。这个只能等待官方的修复咯。
7.Qt内几种编译选项的说明
答:
Maemo: 诺基亚搞出来的不同于Symbian的另一个系统,是Meego的前身,效果类似于第二个选项Qt Simulator。
Qt Simulator:Qt自带的模拟器,目前功能还很低端,唯一好处是速度比SDK带的模拟器快,可以用vs2008编译器或者MinGW,但是千万不要被它欺骗了哦,一些VC特有的东西在手里都能编译通过,可是无法编译成sis文件,因为真机根本没有这个API。。。还有一个问题就是显示差异的问题,在它上面看到的是完美的效果,可是Bug的存在,在真机上又是另外一个完全不同的效果,所以除非是学习,不然就不要用这个模拟器,否则。。。(我是过来人,被它骗了不少时间,鄙视一下)
Symbian Device:这个选项可以编译出sis文件来,也可以通过数据线在真机上调试。
Symbian Emulator:这个才是我们真实开发要用到的,是N97 SDK所带的模拟器,效果与真机基本一样,用的是gcce编译器,编译很慢,启动也很慢。
后记:
目前Qt for Symbian还不够完善,主要有:
1.Bug不少。
2.内存占用较多,而Symbian系统的机器一般又比其他系统的可用内存少,并且不少组件还内存泄露,这更是雪上加霜了。
3.CPU占用大,你可以看看上面的Bug列表,Qt常常因为CPU的占用导致ViewSvr等后台程序的崩溃,而诺基亚总是喜欢使用德州仪器的低端CPU,这就更。。。
4.部署麻烦,几个库加起来就有近20M。
5.目前能完善支持的机型还不多。
6.。。。。。。
这情形就如同当年的.net framework,就是不知道Qt能不能像它一样迅猛发展,以此挽救诺基亚智能机的市场份额。希望Qt不要再一味加功能了,先把N个版本都存在的一堆Bug修复掉。。。
文章转载自 http://luzj.me/symbian-developer-qt-for-symbian-setup.html