通常我们写console程序,要不就是只有一个CConsoleBase类的console输出,要不干脆就是后台程序连这个都不要,所以基本上也就不会有什么资源文件了。从Carbide的project wizard创建的console程序就是这样的“裸体”状态(通常咱就是这样干的不是吗?)。
裸体的console程序用IDE从模拟器启动倒没什么问题,但是我们却不能在模拟器里面找到启动它的图标,更别说简单打好包安装在手机上了。譬如说出现这么一个场景:我们的console程序是一个服务器(后台)程序,另外我们又写了一个客户端程序(标准的Symbian C/S架构)。我们需要在服务器程序正在运行的情况下调试咱的客户端程序……不行了吧?
这时候我们需要把我们的console程序披上一件有icon的外衣(很简单的改动):
1.拷贝一个.mif 文件作图标。这个可以自己用mif编辑器画,或者在SDK的一个目录(/Epoc32/Data/z/resource/apps)找个现成的备份一个改成自己要的名字,还是放在哪个目录里面。
2. 在project中加上两个.rss文件。
第一个说明程序要用什么图标,要用什么名字做显示。
例如:(文件名:UITest.rss)
第二个注册用,将程序和要用的图标名字联系起来。
例如:(文件名:UITest_reg.rss)
3. 在mmp中加入对这两个资源文件:
SOURCEPATH ../data
START RESOURCE UITest.rss
HEADER
TARGET UITest
TARGETPATH resource/apps
END //RESOURCE
START RESOURCE UITest_reg.rss
TARGET UITest_reg
TARGETPATH /private/10003a3f/apps
END //RESOURCE
4. 上一步完成并编译后,模拟器里面已经可以找到这个程序的图标并正常启动了。如果需要打成sis包装在手机上,还需要一步。
在工程的.pkg文件中加入:
"$(EPOCROOT)Epoc32/data/z/resource/apps/UITest.rsc" -"!:/resource/apps/UITest.rsc"
"$(EPOCROOT)Epoc32/data/z/private/10003a3f/apps/UITest_reg.rsc" -"!:/private/10003a3f/import/apps/UITest_reg.rsc"
"$(EPOCROOT)Epoc32/data/z/resource/apps/UITest.mif" -"!:/resource/apps/UITest.mif"
如果使用命令行编译,其中的EPOCROOT需要正确的设置为所使用的SDK路径(包含epoc32文件夹的那个文件夹)。
这样,不管是在模拟器还是真机上,我们都能通过图标启动我们的console程序了!