完整版本,欢迎下载word文档 http://www.cppblog.com/Files/franksunny/Symbian%205th%20To%20Symbian%20%5E3.rar
Symbian 5th程序如何搬迁到Symbian ^3平台
做为Symbian开源的新平台,Symbian ^3发布已经有一阵子了,N8和C7推向市场也有些日子,但是目前诺基亚基于这个平台的SDK才出到了0.9,可以说还没有出正式版本啊,不过看到好多人都在用新的SDK了,我也小小尝下鲜,因为Symbian ^3也是支持触摸屏操作,所以就把公司的一个基于3版本已经搬迁到5版本的产品再移植到Symbian ^3平台上来。
以下具体罗列下步骤,由于SDK的安装,与之前3rd和5th是类似的,为此SDK的安装就不多说了。
修改工程文件(mmp)和打包文件(pkg)
参考网上《从S60 5th移植程序到Symbian^3》文档的说明,由于新的SDK将很多头文件路径进行了更改,所以我们必须对我们程序中的所有工程文件添加宏定义APP_LAYER_SYSTEMINCLUDE以包含新的SYSTEMINCLUDE路径。你的工程中用几个mmp文件,就在里面增加这个宏就可以了,否则编译会有大堆的错误哦。
PKG文件,我们只要添加上对Symbian ^3的支持就可以了,具体如下
;Supports Symbian^3
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
代码修改
由于Symbian ^3修改了一些头文件定义以及API和库,所以在按照如上修改后,进行编译时,假如遇到这些更改的东西,那么就会有编译错误,需要对代码进行修改,以下是我在编译我们工程代码时做的一些代码。
因为我们的代码中有涉及到2nd、3rd和5th几个不同版本的API,而^3目前不知道用什么专有的平台宏,而且不像5th版本一样,它有__S60_50__宏外还向上包含了__SERIES60_3X__宏,所以在不修改代码的情况下,最好的方法就是在mmp中增加__S60_50__和__SERIES60_3X__两个宏定义。否则涉及到这些平台差异但是^3支持的代码,其它好的改法我也没有想到。
由于KLogMaxDirectionLength常量值的定义由之前的在logwrap.h声明改到的定义logwraplimits.h头文件,所以必须在相关的代码文件中包含logwraplimits.h头文件,即#include <es_enum_partner.h>
由于TConnectionInfoV2类由之前的在es_enum.h中声明改为在头文件es_enum_partner.h中声明,所以必须在相关代码文件中添加对es_enum_partner.h的包含,即#include <es_enum_partner.h>
由于KClipboardUidTypePlainText常量值定义由之前的txtetext.h头文件更改到txtclipboard.h中声明,所以在相关代码中必须将头文件txtclipboard.h包含进来。
让模拟器支持中文
经过上述修改,版本编译成功,打算跑一下模拟器,但是由于程序是中文的,显示都是白板,区别于Symbian 5th和3rd SDK的程序自带一个一键切换语言版本的操作(具体如下图),Symbian ^3目前提供的版本没有这个简单操作。
那么如何支持中文呢?
原来模拟器打开后,在模拟器的“Tools”、“PreFerences”的对话框的General Settings栏有一个更简单的操作,直接可以选择中文、韩语、E文,具体见下图。
目前遗留问题
经过上面更改,程序在模拟器能正常显示中文了,不过需要联网时老连不上,后来咨询了下现在诺基亚工作的大神,据说现在获知的信息情况来看0.9版本的SDK模拟器无法使用网络资源,所以我们目前的程序无法在模拟器上进行联网调试,呜呼哀哉,由于手头没有N8或C7手机,虽然编译真机版sis成功了,但是也没得试验一下,只能就此打住了。
另外附上从诺基亚论坛搜刮来的wiki资料,粘贴于下,下面内容就纯粹是转载了,希望不算侵权。
Symbian^3 Home Page
From Forum Nokia Wiki
Symbian^3平台N8手机
本文主要介绍Symbian^3的一些新特性以及Symbian^3开发资源,此页面会不断更新最新内容,开发者可以从本文获得最新的Symbian^3的相关信息。Symbian^3的SDK可以在诺基亚论坛网站下载。第一款使用Symbian^3的诺基亚手机是N8。对于一些没有N8手机的开发者来说,一方面可以在Emulator上进行一些测试,也可以使用诺基亚论坛提供的远程终端访问服务 。该服务的视屏介绍可以参考远程终端访问服务在线介绍。Symbian Open source 源码可以在网址查看。
个人开发者今后可以在Ovi Store上提交自己的应用,并享受免费签名优惠政策,如有疑问,欢迎与mailto:publishtoovi.support@nokia.com联系。更多信息可参阅打包及签名。
[edit] 界面以及操控性的提升
Symbian^3支持多页主页,多个天气预报、新闻、社交网络账号以及多个电子邮件帐户和Widget其他应用可以同时出现在主屏幕上。Symbian^3还将全面采用电容式屏幕,并首次在诺基亚手机上实现了多点触控功能。使用多点触控功能,可以使得用户很方便地放大图片,旋转图片等。
[edit] 高效内存管理,支持多任务处理
Symbian^3对内存管理进行了全面优化,支持用户开启多个应用程序的同时,保持流畅的程序运行和切换。如同正在PC上普及的Windows 7操作系统一样,Symbian^3首次支持多任务缩略图预览,在手机操作系统上,Palm的Web OS有着类似的功能。
[edit] 加速2D/3D图形游戏和应用
Symbian^3平台支持图形硬件加速,并将软硬件配置统一。通过优化对2D/3D图形游戏和应用进行提速,并提高视觉效果。Symbian^3使用ScreenPlay技术,增加半透明多层叠加的效果,让高分辨率的画面或者动画内容融合在界面当中。令人欣慰的是,这种处理手段不但增加了视觉感受,还能有效的控制电量消耗,从而提升电量效能。在Symbian^3平台上,由于显示的高效性,DSA(Direct Screen Access)并不鼓励使用。
[edit] 全新的无线网络结构
通过FreeWay网络结构组件,Symbian^3拥有超高速网络连接和顺畅的无缝切换能力,用户可以在WiFi、HSPA、LTE 4G等无线网络中方便切换,网络连接不再繁琐,并做好了支持将来4G网络的准备。
[edit] 支持HDMI高清视频输出
Symbian^3使得诺基亚手机首次实现了高清视频输出能力,HDMI接口的出现使得手机可以代替高清播放器,支持1080p高清视频的输出,这是Symbian^3系统的重要特征之一。
[edit] 整合音乐商店乐随享(Music Store)
Symbian^3将音乐商店Music Store进行整合,并植入收音机,在界面上添加了“Buy Now”按钮,供用户直接线上购买喜欢的音乐。
[edit] 运行Qt应用
在Symbian^3的平台上,用户可以直接安装并运行Qt应用。Qt 4.6库已经被预置到Symbian^3的手机中,而不用另外安装Qt库。关于在Symbian^3手机中开发Qt应用,开发者可以参阅Qt Symbian 开发环境安装及Nokia Qt SDK开发环境使用。更多Qt的开发信息,可以查看Qt Home Page
[edit] Symbian^3开发环境配置
Symban^3开发环境配置与早期S60 SDK开发环境配置并无区别,本章节主要为了指导初次接触Symbian开发的开发者进行Symbian^3开发环境配置。
[edit] Symbian^3模拟器快捷键
快捷键可以大大增加操作模拟器的效率,Symbian^3模拟器快捷键说明请参考:Symbian^3模拟器快捷键。
[edit] 在Carbide C++中开发Symbian^3应用
开发Symbian程序主要使用的IDE是Carbide C++,在Carbide C++中开发Symbian^3应用介绍了使用Carbide C++开发Symbian程序的基本步骤。
[edit] 使用Carbide C++进行联机调试
联机调试(On Device Debugging)是开发者在开发过程中经常用到的技术,本文详细介绍了联机调试的具体步骤。
[edit] 相关链接
[edit] 横屏下的新布局方式
在Symbian^3中,横屏布局有所变化,增加了主面板的大小,增加了应用可使用的空间。
横屏下的布局方式
[edit] Kinetic Scrolling
在Symbian^3中,支持了Kinetic scrolling的功能,并且在Avkon中无需改变代码。在列表中加入Kinetic scrolling功能,使得用户在滚动列表时,有弹簧的效果。
Kinetic Scrolling
[edit] Single tap
在Symbian^3中,增加了single tap功能,使操作更流畅,提升了用户体验。
Single Tap on Symbian^3
[edit] One Click Connectivity
在Symbian^3中,增加了管理接入点的API,使得程序逻辑控制更加简单,并且增加了系统的反馈信息。这个API的使用也使得应用在不同的接入点中进行漫游(根据接入点的优先级而定)
One Click Connectivity。测试例程:File:IapMobilityExample.zip。
[edit] 多点触摸
在Symbian^3中,增加了多点触摸的功能。
Advanced Pointer Event API
[edit] Calendar API
在Symbian^3中,扩充了Calendar API,使得操作Calendar更加方便。
Calendar API
[edit] 从S60 5th到Symbian^3的应用移植
从S60 5th的程序向Symbian^3移植,请参考下面的链接。
Porting from S60 5th, 平台及设备UID。
[edit] Symbian^3/N8 API和功能的改变
Symbian^3中和之前版本比较,变化的API和功能,请参考一下连接。
Symbian^3/N8 API和功能的改变
[edit] 诺基亚开发者在线及线下帮助库
Developer's library,下载
[edit] Widget在Symbian^3平台上的开发
Web Runtime widgets in Nokia Symbian^3 devices。Symbian^3手机的布局变化可以在网址Symbian^3 横屏布局查看。
[edit] Symbian应用签名
如何签名一个Symbian应用
[edit] Symbian预置应用
如何预装Symbian应用
[edit] 诺基亚手机主题
如何制作一个诺基亚手机的主题
[edit] S60 3rd Edition 应用开发
S60 3rd Edition 应用开发
[edit] Symbian中文开发讨论区
Symbian中文开发讨论区
[edit] Symbian 例程
Symbian 开发例程
Symbian^3开发环境配置
From Forum Nokia Wiki
确保自己的Windows文件系统是NFTS而不是FAT32。
[edit] Windows 7(Ultimate edition) 注意事项
1、对于后缀为exe的安装文件,必须“右键”单击文件,选择“以管理员身份运行”;
2、ActivePerl安装文件为*.msi,右键菜单中并没有“以管理员身份运行”的选项,需要按照下面的方法在命令行安装:
2.1 创建一个具有管理员权限的账户,假设账户名为:administrator;
2.2 “开始菜单->所有程序->附件->命令行提示符”打开命令行提示窗口;
2.3 假设ActivePerl安装文件在C盘根目录下。在命令行窗口输入下列文字并回车:
runas /noprofile /user:administrator "msiexec /i c:\ActivePerl-5.6.1.635-MSWin32-x86.msi"
然后输入管理员账户密码,回车,即可开始安装ActivePerl;
3、检查环境变量PATH,若Perl\bin\不在环境变量中,需要手动添加;
4、检查环境变量PATH,若CSL Arm Toolchain\bin不在环境变量中,需要手动添加。
[edit] 基本工具安装
基本工具包括JRE(Java Runtime Enviroment) 和 ActivePerl,Symbian SDK的运行以及程序的编译、打包依赖于JRE和ActivePerl。
[edit] JRE
Symbian^3 SDK需要Java Runtime Version 1.5.0 以上版本,可以从Oracle网站下载最新JRE安装。
注意:许多开发者可能会安装多个S60 SDK,有些SDK可能要求使用低版本的JRE。有这种需求的开发者可以在一台机器上安装多个版本JRE。
[edit] ActivePerl
ActivePerl需要安装5.6.1版本,下载地址在这里。更新版本下载。
注意:不要安装版本太高的ActivePerl,否则在开发过程中会造成一些奇怪的错误。
[edit] 安装Ovi Suite
请在如下的地址下载最新的Ovi 套件来支持最新的N8及Symbian^3手机。以前的PC 套件的某些版本可能不支持N8手机。以后所有的套件都将是Ovi Suite而不再有PC 套件。下载地址为:[www.ovi.com/suite]
[edit] Symban^3 SDK安装
Symbian^3 SDK可以从Forum Nokia网站下载。下载解压后,直接运行setup.exe即可。
同意许可协议后,一直选择"Nex"t即可:
路径默认在C盘,最好不要修改安装路径:
安装完成后,会看到“Select default device”窗口,在这里选择你想设置的默认SDK即可:
单击“Finish”结束安装:
[edit] 安装Carbide C++
Carbide C++是开发Symbian程序所用的IDE,最新版的Carbide可以在这里下载。当我们安装完 Carbide.C++ 2.3 版本后,记得按以下的方法进行更新,否则,它对Symbian^3的SDK不能进行有效的支持。升级后的Carbide.C++ 的版本为 2.6。
注意:安装完Carbide.C++后需要运行一个脚本来配置一些环境变量,以便可以在命令行模式下编译Symbian程序。执行路径:Start(开始)->Program(程序)->Nokia->Carbide.c++->Configure environment for WINSCW commands
[edit] 验证SDK是否正确安装
进入命令行模式,进入\Nokia_Symbian3_SDK_v0.8\examples\symbian\gui\helloworldbasic\group\ 目录
执行 bldmake bldfiles 命令,然后执行 abld build winscw udeb,如果编译没错,说明SDK安装没有问题:
编译完成后,键入‘epoc‘回车,可以看到模拟器被启动:
[edit] 安装TRK在线调试工具
对于想要进行在线调试的开发者来说,可以在连接下载最新的TRK调试器。对于Symbian^3 平台的开发者来说,可以下载s60_tb_9_2_app_trk_3_2_7.sisx
Retrieved from "http://wiki.forum.nokia.com/index.php/Symbian%5E3_Home_Page"
从S60 5th移植程序到Symbian^3
From Forum Nokia Wiki
Symbian^3平台N8手机
本文中将介绍从S60 5th移植程序到Symbian^3平台上的时候,需要修改的地方和需要注意的问题。随着系统的不断完善,我会以Q/A的方式来维护该文章,如果开发者也发现了不同的问题,也希望共同维护该文章。
[edit] MMP文件中的修改
Q: MMP文件中需要什么样的修改?
A: 由于资源的构造代码有了变化,所以在MMP文件中要增加代码:
Q: 这行代码中 APP_LAYER_SYSTEMINCLUDE 是一个宏定义,那么这个宏定义具体是什么内容呢?
A: 这个宏定义展开后的代码是:
SYSTEMINCLUDE \epoc32\include\mw
SYSTEMINCLUDE \epoc32\include\app
SYSTEMINCLUDE \epoc32\include\platform
SYSTEMINCLUDE \epoc32\include\platform\app
SYSTEMINCLUDE \epoc32\include\platform\mw
也就是说如果将宏定义APP_LAYER_SYSTEMINCLUDE改成上面的代码,也是完全可以的。
[edit] 支持Single Tap
Q: 什么是Single Tap?
A: 在S60 5th版本中介绍了,为了兼容之前已经存在的S60 3.X应用,在S60 5th版本中支持double-click。double-click意思是第一次的click使得UI获得焦点,然后再一个click激活该事件。
那么在Symbian^3中,支持了Single Tap来提升可用性,Single Tap中没有焦点的概念,第一次的click就会激活该UI事件。
Single tap提升了触摸的互动效果。
Q: 那么如何修改程序来支持Single Tap?
A: 参考该链接:Single tap on symbian^3
[edit] Symbian^3平台UID
Q: Symbian^3系统升级了,那么是不是平台的UID也有变化?
A: 是的,如果之前的程序在pkg文件中不修改平台UID,在安装的过程中会有提示。
你也可以对pkg文件中的平台UID进行修改:
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
如果你想你的应用在多平台上都可以安装,那么一下的平台UID供参考。 平台及设备UID。
;Supports S60 3.0
[0x101F7961], 0, 0, 0, {"Series60ProductID"}
;Supports S60 5th Edition
[0x1028315F], 0, 0, 0, {"Series60ProductID"}
;Supports Symbian^3
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
[edit] Display Mode的改变
Q:Symbian系统是否改变了默认的display mode?如果有在程序中要怎么修改?
A:Symbian C++的程序要增加对EColor16MA和EColor16MAP的处理,具体内容参考链接:Display mode with alpha channel on Symbian devices
[edit] 对S60 5th应用是否需要重新编译和签名
Q:在移植的时候,S60 5th的应用需要重新编译吗?S60 5th的应用需要重新签名吗?
A:大部分S60 5th的应用可以直接在Symbian^3手机上进行安装使用,不需要重新编译和签名。除了以下几种情况:
1.为了提升用户体验,应用向使用Single Tap,那么需要按照上面Single Tap的链接来修改程序。
2.在Symbian^3中有些API被移除、修改(该内容会在之后公开)了,那么需要修改代码,并且重新编译。
3.如果需要重新编译的时候,原来的代码在Symbian^3下编译不过的,需要修改MMP文件,本文中上面已经说明。
4.如果单单是为了修改平台UID是没有必要的,该问题不会对安装使用应用造成而且影响。
对于签名问题,由于在Symbian^3中的签名和之前的没有变化,所以单说签名的话,是不需要修改的。
[edit] 在Symbian^3上开发Qt应用
Q:在Symbian^3上开发Qt应用需要Symbian签名吗?
A:实质上,Qt应用在Symbian平台上也是Symbian应用。所有的Qt应用都是需要进行Symbian签名的。
Single tap on symbian^3
From Forum Nokia Wiki
In S60 5th 中,可以通过 single tap,long tap,double tap 来处理列表或菜单,到了Symbian^3只要single tap就可以实现以前的功能,更方便也更人性化,下面我们移植一个应用,在Forum Nokia下载CalendarAPIexample,这是个S60 5th程序,在S60 5th SDK下可以编译运行。技术文档可以下载。
在Symbian^3 SDK中,需要做如下修改:
.pkg文件中增加Symbian^3 支持
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
CalendarAPIexample.mmp 文件增加
SYSTEMINCLUDE \epoc32\include\mw SYSTEMINCLUDE \epoc32\include\platform\mw 支持symbian 3 的 .h 文件
CAPABILITY ReadUserData WriteUserData WriteDeviceData 能力增加WriteDeviceData,这个是和以前有区别的,没有这项在真机运行会报错
CalendarAPIexampleAppUi.cpp 文件的 ConstructL() 函数做如下修改:
BaseConstructL(EAknEnableSkin | EAknEnableMSK);
==>
BaseConstructL(EAknEnableSkin | EAknTouchCompatible | EAknSingleClickCompatible);
EAknEnableMSK 纯触屏手机不会有这个键 EAknTouchCompatible 区别Touch和非Touch事件 EAknSingleClickCompatible 让我们的应用可以处理 Single Tap
在CalendarAPIexampleSearchContainer.cpp和CalendarAPIexampleEntriesContainer.cpp两个文件中都有函数HandleListBoxEventL,修改如下:
if (aEventType == EEventEnterKeyPressed || aEventType == EEventItemDoubleClicked)
==>
if (aEventType == EEventEnterKeyPressed || aEventType == EEventItemSingleClicked)
不再处理 double tap,只处理 single tap事件。
至此,可以编译运行,并在真机看看效果,已经可以处理 single tap事件了。
但是在选项菜单中,还有相对应的菜单项,symbian^3 提供了两个标识EEikMenuItemAction, EEikMenuItemSpecific这些菜单项
修改文件CalendarAPIexample.rss
RESOURCE MENU_PANE r_calendarapiexample_search_menu
{
items =
{
MENU_ITEM { command = ECalendarAPIexampleCmdSearch; txt = qtn_options_search; <span style="color:##ff0000"> flags = EEikMenuItemAction;</span> },
MENU_ITEM { command = ECalendarAPIexampleCmdAdd; txt = qtn_options_add; },
MENU_ITEM { command = EAknCmdExit; txt = qtn_options_exit; }
};
}
RESOURCE MENU_PANE r_calendarapiexample_entries_menu
{
items =
{
MENU_ITEM { command = ECalendarAPIexampleCmdEdit; txt = qtn_options_edit; <span style="color:##ff0000">flags = EEikMenuItemAction;</span> },
MENU_ITEM { command = ECalendarAPIexampleCmdDelete; txt = qtn_options_delete; <span style="color:##ff0000">flags = EEikMenuItemSpecific;</span> }
};
}
增加红色的代码
可以看出前后的变化
这是EEikMenuItemSpecific的操作过程:button down -> hold -> pop up menu。
而EEikMenuItemAction 的操作时:button down -> button release -> action。
在菜单中EEikMenuItemAction项就是该项需要执行的操作,所以只有一个,而EEikMenuItemSpecific是可以选择的,可以有多项,都会出现在popup菜单中
Symbian^3/N8 API和功能的改变
From Forum Nokia Wiki
本篇文章描述了Symbian^3系统和之前Symbian S60系统的不同之处,以及已经知道的问题。下面列出了详细文档的链接和已知问题的相关文章链接。本文会在之后继续更新。
[edit] 新的图形架构
Symbian^3引进了一种新的图形架构而且使用DSA的应用会有二进制不兼容问题,所以强烈建议该应用使用Symbian^3 SDK重新编译并且在N8上进行测试。
[edit] 有alpha通道的显示模式
Symbian C++应用应该也要处理EColor16MA和EColor16MAP显示模式(TDisplayMode)。
详细信息请查看:http://wiki.forum.nokia.com/index.php/TSS001523_-_Display_mode_with_alpha_channel_on_Symbian_devices
[edit] DevSound缓冲长度
在N8中,增加了DevSound的缓冲长度。访问audio system的开发者应该了解该变化,在运行的时候获取该缓冲长度,然后进行相应的逻辑处理。详细信息请查看:http://wiki.forum.nokia.com/index.php/KIS001595_-_Increased_CMMFDevSound_playback_buffer_size_in_Nokia_N8
[edit] 运行时调整音量大小
第三方应用在假设最大音量值为10的时候会失败。建议开发者不要对音量值进行假设,而是在运行时进行最大音量的查询,并且调整大小。详细信息请查看:http://wiki.forum.nokia.com/index.php/TSS001596_-_Volume_level_range_in_Nokia_N8
[edit] 播放很短的音调序列
当播放很短的音调序列或者DTMF的时候,开发者应该使用WAV文件和Audio Streaming API作为音调产生器。详细信息请查看:http://wiki.forum.nokia.com/index.php/KIS001594_-_Audio_tone_player_fails_to_generate_short_tones
[edit] Comms架构的改变
对于使用Comms架构中的低级别组件(如IpHook API)的开发者,MBuf API已经改变了,而且不再兼容。所以这些开发者需要重新在Symbian^3 SDK进行编译这些应用。相应的改变有:类:TCommsBufBase、TCommsBuf、RCommsBuf、RMBufAsyncRequest 函数:RCommsBufPond::StartRequest、RCommsBufPond::CancelRequest、RMBufAsyncRequest::iLength、RMBufAsyncRequest::iMBufs、RMBufAsyncRequest::iChain、RMBufAsyncRequest::iStatusPtr、RMBufAsyncRequest::iThread、RMBufAsyncRequest::iLink 库:mbufmgr.dll、commsbufs.dll 头文件:mbufasyncrequest.h、commsbufpond.h、mbufasyncrequest.h、comms-infras\commsbuf.h
[edit] 用户界面和硬件按键的改变
S60 5th和Symbian^3之间除了用户界面的改变(查看移植信息:http://library.forum.nokia.com/topic/Nokia_Symbian3_Developers_Library/GUID-021E8B9C-4A1B-4C6D-B69E-4337A766C39A.html ),还有设备特定的按键和屏幕配置。例如,在N8上面没有“send”和“end”按键,建议应用不要对该按键进行监听。
[edit] AppArc架构的改变
由于AppArc架构的改变,使用TApaAppEntry对象的应用不能在Symbian^3系统的设备上运行。详细信息请查看:http://wiki.forum.nokia.com/index.php/TSS001593_-_Changes_in_AppArc_framework
[edit] 本文来源
本文摘自:API and functionality changes in Symbian^3 / Nokia N8
Retrieved from "http://wiki.forum.nokia.com/index.php/%E4%BB%8ES60_5th%E7%A7%BB%E6%A4%8D%E7%A8%8B%E5%BA%8F%E5%88%B0Symbian%5E3"
posted on 2010-11-04 15:33
frank.sunny 阅读(2066)
评论(0) 编辑 收藏 引用