symbian 2to3手记

第三版本与第二版的区别:


==================以前的loc相当与现在现在的rls


==================MMP的变化
1,在第三版的mmp中TARGET和TARGETTYPE的值只能是.exe不在是.app

3,新增加了SECUREID          0xa000018f(开发者可以自签名但可调用的服务会受限制以A开头)
     EPOCSTACKSIZE      0x5000(0-20K可用栈由自己定义)(疑问TBuf居然可以分配30K的空间,在模拟器上)
4,
遇到:
TARGETPATH \system\Apps
RESOURCE <appname>.rss
改为:
START RESOURCE <appname>.rss
HEADER
TARGETPATH \resource\Apps
END
5,新增了应用程序注册:
START RESOURCE <appname>_reg.rss
TARGETPATH \private\10003a3f\apps
END
6.icon和bmp都不在mmp中生成了
7,新增了
VENDORID            0
CAPABILITY            ReadUserData
8 mbm的制作方法依然不变(在移植过程中将大大减少开发者的工作量)
START BITMAP SendPictrue.mbm
  TARGETPATH                              \resource\apps
  HEADER                                  
  SOURCEPATH                              ..\bitmaps
  SOURCE                                  c12 1Player_mask.bmp
  SOURCE                                  c12 tick.bmp
  SOURCE                                  c12 tick_mask.bmp
  SOURCE                                  c12 NEW.BMP
  SOURCE                                  c12 OPEN.BMP
  SOURCE                                  c12 media.bmp
  SOURCE                                  c12 music.bmp
  SOURCE                                  c12 model.bmp
  SOURCE                                  c12 back.bmp

END
9应用程序的图标
在使用MK没有成功的情况下我选择使用MBM创建方法同上,




====================RSS的转变
1,以前的AIF文件夹里的RSS并入到DATA下的RSS里面
#include <appinfo.rh>

RESOURCE LOCALISABLE_APP_INFO r_<appname>_localisable_app_info
{
short_caption = rls_app_short_caption_string;
caption_and_icon =
CAPTION_AND_ICON_INFO
{
caption = rls_app_caption_string;
number_of_icons = 2;//这里的2使用MBM
icon_file = "\\resource\\apps\\<appname>.mbm"; 如果是

用MK生成的那number_of_icons=1;icon_file = "\\resource\\apps\\<appname>.mif";
};
}
MK代码如下:
# Copyright (c) 2005, Nokia. All rights reserved #

ifeq (WINS,$(findstring WINS, $(PLATFORM)))
ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z
else
ZDIR=$(EPOCROOT)epoc32\data\z
endif

TARGETDIR=$(ZDIR)\RESOURCE\APPS

#HEADERDIR=\epoc32\include#

ICONTARGETFILENAME=$(TARGETDIR)\SendPictrue.mif

#HEADERFILENAME=$(HEADERDIR)\MyApp.MBG#

do_nothing :
    @rem do_nothing

MAKMAKE : do_nothing

BLD : do_nothing

CLEAN : do_nothing

LIB : do_nothing

CLEANLIB : do_nothing

RESOURCE :
   
    mifconv $(ICONTARGETFILENAME) \
    /c12,1 ..\aif\context_pane_icon.bmp /c12,1 ..\aif\list_icon.bmp

FREEZE : do_nothing

SAVESPACE : do_nothing

RELEASABLES :
    @echo $(HEADERFILENAME)&& \
    @echo $(ICONTARGETFILENAME)

FINAL : do_nothing





2,凡是出现过avkon.mbm的都以"\\resource\\apps\\avkon2.mbm"代替


=======================用户自定义的图片放在bld.info中,当然还是倾向于放在MBM中
PRJ_PLATFORMS

PRJ_EXPORTS                            程序的UID
..\..\pictures\cloud.jpg        ..\release\wins\udeb\z\private\A000021E\cloud.jpg
..\..\pictures\snow.jpg         ..\release\wins\udeb\z\private\A000021E\snow.jpg
..\..\pictures\snowy_tree.gif   ..\release\wins\udeb\z\private\A000021E\snowy_tree.gif
..\..\pictures\snowy_ground.jpg ..\release\wins\udeb\z\private\A000021E\snowy_ground.jpg

..\..\pictures\cloud.jpg        ..\release\winscw\udeb\z\private\A000021E\cloud.jpg
..\..\pictures\snow.jpg         ..\release\winscw\udeb\z\private\A000021E\snow.jpg
..\..\pictures\snowy_tree.gif   ..\release\winscw\udeb\z\private\A000021E\snowy_tree.gif
..\..\pictures\snowy_ground.jpg ..\release\winscw\udeb\z\private\A000021E\snowy_ground.jpg

PRJ_MMPFILES
gnumakefile icons_scalable_dc.mk
Snow.mmp
======================关于中文字符显示的问题
在工具中change language chinese,其他与第二版相同



===============================第三版命令行

bldmake bldfiles
abld build winscw or
abld build gcce urel
这个恐怕和BLD文件中的prj_platforms参数有关,prj_platforms可以设置BLDMAKE BLDFILES命令生成哪几种类型的.MAKE文件。如果BLD文件中没有prj_platforms参数,也就是缺省条件下,在S60 
2 .x会默认生成WINS、WINSCW、ARMI、ARM4、THUMB等几乎所有平台的.MAKE文件,所以这时ABLD MAKEFILE VC6不会有问题,因为其中包含了WINS平台的VC6.MAKE。

但在基于Symbian OS v9.1的S60 
3 .0中如果BLD文件中没有prj_platforms参数则只会默认生成WINSCW、 GCCXML、ARMV5、CW_IDE平台的.MAKE文件,这样就不会有VC6.MAKE;或者有prj_platforms参数项但其中没有定义 WINS平台,同样也不会有VC6.MAKE;两者都会造成ABLD MAKEFILE VC6无法运行。

所以对于S60 
3 .0必须在BLD文件中加入prj_platforms参数,或在prj_platforms参数项中增加定义WINS,也就是BLD.INF中必须有:
PRJ_PLATFORMS
 WINS 
这样才能通过BLDMAKE BLDFILES或BLDMAKE BLDFILES WINS生成VC6.MAKE,之后ABLD MAKEFILE VC6会生成VC
++   6 .0所需的.dsw和.dsp文件。


你可能感兴趣的:(Symbian)