移植S602ND到3RD

S60第一版和第二版编译器使用的是gcc for ARM,而第三版版本使用的编译器是支持ABI标准的RVCT 所以造成了第二版和第三版二进制格式不兼容,另外第三版(symbian9.0)采用了新的安全模型导致应用程序的目录结构也有所变化.所以在s60软件 从第二版移植到第三版过程中程序的编译及部署需要做一些改变((幸运的是这种变化并不大,你的代码几乎不需要做改变)).本文记录了从s60第一版、第二 版移植到第三版的需要做的一些变化及步骤。 步骤一:移植的准备工作 在你的项目group目录下分别创建不同平台的组目录,不同的平台放置单独的项目定义文件,拷贝当前的项目定义文(.mmp,.blf )件到不同的组目录。 如果你的项目定义文件以前是在group目录下。在新的目录结构中不用忘记修改项目定义文件中的相对路径,通常情况下修改 '../' 为 '../../'。 为了实现不同版本之间的移植,推荐通过一个头文件存放各个版本的环境变量参数方便我们控制在不同版本之间的编译。生成不同的版本只需要修改头文件即可。 创建一个名为projectenv.h的头文件分别拷贝至各个项目组目录。 #ifndef PROJECTENV_H_#define PROJECTENV_H_ //#define __S60__ 200 #define __S60__ 300 #ifdef __S60__ //do something #else //do somthing #endif #endif /*PROJECTENV_H_*/ 此时你的group目录结构应该和下面的结构类似: │├─s60_2nd│ bld.inf│ YourProject.mmp│ projectenv.h│├─s60_3rd│ bld.inf│ YourProject.mmp│ projectenv.h 此时两个组目录都是s60第二版下项目定义文件的副本,剩下的工作就是在此基础上进行修改始本项目能够顺利在s60第二版和第三版顺利编译。 步骤二 :修改应用程序框架入口 S60第二版的以前应用程序都是以多态DLL的形式存在的,第三版应用程序则变成独立的可执行程序。所以从代码方面最大的变化就是应用程序的入口发生了变化。找到你程序框架的入口源文件,通常是YourProjectApp.cpp 修改后的示例如下: ...#ifdef EKA2#include LOCAL_C CApaApplication* NewApplication() { return new CYourProjectApp(); } GLDEF_C TInt E32Main() { return EikStart::RunApplication(NewApplication); } #else EXPORT_C CApaApplication* NewApplication() { return new CYourProjectApp; } GLDEF_C TInt E32Dll( TDllReason ) { return KErrNone; } #endif 步骤三:编写生成应用程序图标的makefile 第三版提供了新的加载图标的API,支持普通的位图图标和可缩放图标,位图文件(.bmp)编译成mbm文件,矢量图形(.svg)编译成.mif 文件。位图从老的MBM文件中加载,可缩放图标从MIF文件中加载。 第三版中使用MIFCONV工具对位图和矢量图进行编译,目前此工具不能整合在在项目编译的makefile中被调用,我们需要一单独的makefile 来调用MIFCONV工具来编译图形资源,这个makefile加入到bld.inf文件中被gnumakefile工具调用。 编辑icons_aif.mk拷贝至s60_3rd目录。这里给出icons_aif.mk文件的示例 # ==============================================================================# Name : icons_aif.mk# Part of :# Description : This is file for creating .mbm file # Version : ## ============================================================================== ifeq (WINS,$(findstring WINS, $(PLATFORM)))ZDIR=$(EPOCROOT)epoc32/release/$(PLATFORM)/$(CFG)/ZelseZDIR=$(EPOCROOT)epoc32/data/zendif TARGETDIR=$(ZDIR)/RESOURCE/APPSICONTARGETFILENAME=$(TARGETDIR)/YourProject.mbm do_nothing : @rem do_nothing MAKMAKE : do_nothing BLD : do_nothing CLEAN : do_nothing LIB : do_nothing CLEANLIB : do_nothing RESOURCE : mifconv $(ICONTARGETFILENAME) /c24,1 ../aif/list_icon.bmp /c24,1 ../aif/context_pane_icon.bmp FREEZE : do_nothing SAVESPACE : do_nothing RELEASABLES : @echo $(ICONTARGETFILENAME) FINAL : do_nothing 步骤四:编辑bld.inf文件第二版 //导入环境变量头文件PRJ_EXPORTSprojectenv.h PRJ_MMPFILES YourProject.mmp 第三版 //导入环境变量头文件PRJ_EXPORTSprojectenv.h PRJ_MMPFILES//编译图像资源gnumakefile icons_aif.mkYourProject.mmp 步骤五:修改资源文件修改主资源文件 在第三版中应用程序的主资源文件基本上没有大的变化,唯一的不同是你需要加入一个实现应用程序本地话的结构LOCALISABLE_APP_INFO。解决方案如下: 资源文件的头部加入以下代码: ...//我们定义的环境变量头文件#include // Added for SVG-T icon support.#if (__S60__ >= 203)#include #endif 资源文件的尾部加入以下代码: #if (__S60__ >= 300) RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info{short_caption = qtn_app_caption_string;caption_and_icon = CAPTION_AND_ICON_INFO { caption = qtn_app_caption_string; number_of_icons = 2; icon_file = "//resource//apps//YourProject.mbm"; };} #endif 增加应用程序注册资源文件 第三版不再支持AIF文件,你必须创建一个名字为 _reg.rss的文件(以_reg.rss为后缀 )用来注册应用程序,包括应用程序的UID、启动选项、图标、标题等参数选项。 编辑yourproject_reg.rss 其内容如下 #include "YourProject.hrh"#include #include UID2 KUidAppRegistrationResourceFileUID3 0x0E9930B5 RESOURCE APP_REGISTRATION_INFO { app_file="yourproject"; //可执行应用程序的名称 localisable_resource_file = "//resource//apps//yourproject"; localisable_resource_id = R_LOCALISABLE_APP_INFO; embeddability=KAppNotEmbeddable; newfile=KAppDoesNotSupportNewFile; } 步骤六:修改项目定义文件 (.mmp) 以下列出第二版和第三版的几个必要的改变。 目标文件类型第二版 TARGET YourProject.app TARGETTYPE app UID 0x100039CE 0x0E9930B5 TARGETPATH /system/apps/YourProject 第三版 TARGET YourProject.exe TARGETTYPE exe UID 0x100039CE 0xE4DC9E88TARGETPATH /system/apps/YourProject 在这里除了生成的目标类型有变化外,UID的范围也有变化。更多的UID信息 请参考 http://www.symbiansigned.com. 资源文件 第二版 RESOURCE YourProject.rss RESOURCE YourProject_caption.rss 第三版 START RESOURCE YourProject.rssHEADERTARGET YourProject.rscTARGETPATH resource/appsEND //RESOURCE START RESOURCE yourproject_reg.rssTARGET project_reg.rscTARGETPATH /private/10003a3f/appsEND //RESOURCE 应用程序信息文件 第三版不再支持aif文件,在.mmp文件中把 Aif直接去掉即可。 第二版 AIF YourProject.aif ../aif projectaif.rss c24 context_pane_icon.bmp context_pane_icon_mask.bmp list_icon.bmp list_icon_mask.bmp 第三版 AIF YourProject.aif ../aif projectaif.rss c24 context_pane_icon.bmp context_pane_icon_mask.bmp list_icon.bmp list_icon_mask.bmp 除此之外还有一些可选项,比如CAPABILITY,SECUREID,VENDORID,EPOCSTACKSIZE等,通常情况下不用对这些选项做额外的设置。 编译运行 完成以上的步骤以后我们就可以进入到不同的项目定义文件组通过命令行或者用 vs.2003,carbide等ide 导入项目定义文件 编译和生成目标平台代码了。没有啥意外的话应该可以顺利通过编译,如果希望你的应用程序顺利的在第三版的设备上运行可能还需要一些细微的调试工作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
天籁传音手机音乐播放器是一款无需注册且有着漂亮清晰图形化系统界面的歌曲播放器,集在线/本地播放、下载,歌词、彩铃订制模式、等众多功能于一身、操作简捷、功能强大。同时拥有强大的本地音乐播放管理和在线音乐功能。 『软件功能』: 1、出色的本地音乐播放和管理,全面支持MP3、WMA、AAC、MPACE等标准音乐格式; 2、新增的彩铃功能,精品彩铃一键轻松定购,免费试听;彩铃、铃声、MP3整曲一网打尽。同时支持下载铃声、MP3整曲。 3、强大的在线音乐功能,海量正版歌曲,尽情搜索下载。最新最流行最经典的歌曲,全部搜罗 4、提供各种强大榜单,囊括最新、最热等各种流行歌曲; 5、提供在线播放、下载、在线播放并下载3种使用方式满足各种用户需求 6、歌词同步显示; 7、音乐电台推送最新歌曲 ; 8、随时进行音乐编辑; 9、好友交互,可以点歌送给你的好朋友;把喜欢的音乐与好友分享; 10、听歌、明星照、音乐资讯,一个都不少 11、支持多重下载,实现断点续传 12、即时在线搜索,实时编码在线播放; 〓〓〓〓〓〓〓〓〓 天籁传音S60 V2.5新增: 彩铃功能,精品彩铃一键轻松定购,免费试听;彩铃、铃声、MP3整曲。 同时支持下载铃声、MP3整曲。 〓〓〓〓〓〓〓〓〓 软件语言:简体中文 软件格式:SIS 大小:348 K 运行环境:symbin S60 2nd 适应机型: 【NOKIA】Symbin S60 2nd系统 N72/N70/6630m/6680/3230/6630/7610/6681/6670/6260/6600等机型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值