开发工具:ActivePerl5.6.1、S60 3rd、Carbide.C++3.1.
在开发过程中,遇到一个问题,S60 3rd SDK自带的源码在模拟器上能够正确编译、运行,但就是不能打包。而用Carbide.C++生成的工程能够正确打包,也能够运行。后来,通过比较,发现了其中的问题原因。
1、检查工程下的“.cproject”文件
打开“.cproject”文件,找到“<storageModule moduleId="CarbideConfigurationDataProvider">”,如果节点内容为:
<storageModule moduleId="CarbideConfigurationDataProvider">
<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
</storageModule>,修改该节点为:
<storageModule moduleId="CarbideConfigurationDataProvider">
<SIS_BUILDER_DATA_ID CREATESTUBSTORAGE="false" ENABLEDSTORAGE="true" HASSISCHANGES="false" HASSISXCHANGES="false" PKGFILESTORAGE="sis/XXXX.pkg" SIGNINGTYPESTORAGE="1"/>
<ENV_VAR_DATA_ID/>
<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
</storageModule>
XXXX.pkg你工程的pkg文件。
2、检查工程下的pkg文件
一般打包不成功的原因都在pkg文件上。
检查这些代码:
"../../../epoc32/release/gcce/urel/Filelist.exe" -"!:/sys/bin/Filelist.exe"
"../../../epoc32/data/z/resource/apps/Filelist.rsc" -"!:/resource/apps/Filelist.rsc"
"../../../epoc32/data/z/private/10003a3f/import/apps/Filelist_reg.rsc" -"!:/private/10003a3f/import/apps/Filelist_reg.rsc"
"../../../epoc32/data/z/resource/apps/Filelist.mif" -"!:/resource/apps/Filelist.mif"
确保引用的地址正确。“"../../../”表示安装的模拟器地址目录层数。
按照以上步骤修改完毕之后,就可以正确打包应用程序了。