(1)模拟器 里面测试的程序如何删除?
for s60 2nd平台:
删除/epoc32/release/wins/udeb/z/system/apps/myapp的目录即可
for s60 3rd平台:
a、删除/epoc32/release/winscw/udeb/myapp.exe
b、删除/epoc32/release/winscw/udeb/z/private/10003a3f/appmyapp_reg.rsc
c、删除/epoc32/release/winscw/udeb/z/resource/apps/myapp_aif.mif
d、删除/epoc32/data/z/resource/apps/myapp.rsc
(2)生成log文件 的方法
for s60 2nd/3rd都是一样的方法,使用RFileLogger类,这个类与nokia无关,是
symbian os提供的记录log的方法。
在需要打印log的cpp文件中添加:
#include <flogger.h>
在mmp文件中添加
LIBRARY flogger.lib
在手机 的存储中创建目录C:/Logs/目录,然后把自己想要的subfolder目录也创建
出来,对于s60 2nd平台,直接用fexplorer或者system explorer在手机上创建
即可,对于s60 3rd平台,就没那么简单了,内置浏览器 看不到,需要装y-browser
才能看到,至于目录,可以用BaflUtils类来判断一下是否存在。
使用方法:
RFileLogger flog ;
// 连接那个RFs 
flog.Connect() ;
// 创建log,将保存在c:/Logs/subfolder/mylog.log(这个subfolder需要手工创建)
flog.CreateLog(_L("subfolder", _L("mylog.log", EFileLoggingModeOverwrite) ;  
// 具体使用查一下文档
flog.Write(xxxx) ; 
// 类似TBuf的FormatL的语法
flog.WriteFormat(xxxx) ;
// 剩下的就是关闭方面的动作了 
flog.CloseLog() ;
flog.Close() ; 
(3)s60 2nd/3rd模拟器联网问题
s60 2nd比较麻烦,需要下载 prnesock.lib和prnesock.dll,这两个都需要拷贝到目录
/epoc32/release/wins/udeb/
(我上传了这两个文件,就在下面)
下面,然后在mmp文件中添加如下条件编译代码:
#if defined(WINS)
LIBRARY prnesock.lib
#else
LIBRARY esock.lib
#endif
在自己的实际代码中,涉及到接入点以及RConnection操作的都要用
#ifndef __WINS__ 或者 #ifndef __WINSCW__
#endif
给括起来,直接调用iSocketServ.Connect()即可实现在模拟器上利用win32的socket
连网和单步调试。

(4)s60 2nd程序中查找全局变量的方法
在mmp文件中添加:
OPTION  GCC  -save-temps
就会看到很多.S和.ii的文件,在里面查找是否含有.bss就可以知道你在哪里使用了
全局变量,.bss段的变量名称,就是全局变量的名称。
(5)s60 3rd模拟器启动以后总是NCNList KERN-EXEC 3 panic解决
这是s60 3rd fp1 sdk的emulator的bug,这个ncnlist是由于
New Message Notification API包不支持导致的。可以通过打上nokia的补丁解决。
这个API主要是为MTM编写者使用的(恰好影响到偶的开发),常规的application开发者

(6)s60 3rd得到自签名cert的生成方法
makekeys -cert -password yourpassword -len 512 -dname "CN=yourname OR=yourname" yourkey.key yourcert.cer
使用的时候,可以用如下命令:
signsis xxxx.sis xxxx.sisx yourcert.cer youkey.key yourpassword
这种方法得到的签名只能够具有basic capabilities:
LocalServices, UserEnvironment, NetworkServices, ReadUserData,
WriteUserData
(7)s60 3rd使用publisher id以后的cert可以得到的capabilities
Basic Cap:
LocalServices, UserEnvironment, NetworkServices, ReadUserData,
WriteUserData
Extended Cap:
Location, SwEvent, SurroundingsDD, ProtServ, PowerMgmt, ReadDeviceData
WriteDeviceData, TrustedUI, NetworkControl, MultimediaDD, CommDD, 
得不到的有(其实也能得到,但是需要进一步跟设备厂商联系):
AllFiles, DRM, TCB, DiskAdmin
(8)s60 3rd修改stack和heap默认大小的方法
在project的mmp文件中添加下面的定义即可:
EPOCSTACKSIZE 0x2800
EPOCHEAPSIZE 0x1000 0x32000
前一个值是heap的最小值,后一个是最大值。
或者可以在代码中动态修改堆的大小,在projectname.cpp文件中找到E32Main函数
GLDEF_C TInt E32Main()
{
RHeap * heap = UserHeap::ChunkHeap(NULL,0x200000,0x300000) ;
User::SwitchHeap(heap);
return EikStart::RunApplication( NewApplication );
}
使用User::SwitchHeap()函数来获得相对大一些的系统 堆大小。
(9)s60 2nd/3rd的结构体字节对齐问题
注意,在这里由于symbian os用的是gcce的修改版,所以标准c++的那一套
#pragama pack([n])
这种在win mobile上面工作良好的编译预处理,在armi或gcce版本中会被编译器忽略。
解决方案是在头文件中添加:
#if defined(__WINS__)
#define PACKED
#else
#define PACKED __attribute__((packed, aligned(1)))
#endif
在结构体定义中添加:
typedef struct _AABBCC_ {
    TUint  a ; 
    TUint8 b ; 
} PACKED AABBCC ; 
而且,如果决定要处理字节对齐的话,最好所有的结构体都采用字节对齐的定义方式。
(10)关于Carbide C++的快捷键问题
编辑相关
Ctrl+ ↓ Ctrl+↑ 在编辑区上下滚动(滚动滑块)
Ctrl+ ← Ctrl + → 向前向后移动一个单词
Ctrl+ Shift + ↓ Ctrl+ Shift + ↑ 向上向下移动一个段落(可以方便的在函数方法中滚动)
Ctrl+G 搜索工作区中的声明
Ctrl+ Shift +G 搜索所有引用
Ctrl+ Shift +S 保存所有文档
Ctrl+F 查找替换
Ctrl + J 增量查找(根据动态键盘输入进行动态匹配)
Ctrl + k 查找替换下一个
Ctrl + L 转到指定的行号
Ctrl+ Shift + F4 关闭所有编辑窗口
Ctrl + SHIFT + P 匹配对应的括号
CTRL+SHIFT+X 将选中的小写转换为大写
CTRL+SHIFT+Y 将选中的大写转换为小写
Ctrl+M 将当前窗口在最小化和最大化之间切换
Ctrl+Q 定义最后编辑的地方
Ctrl+O 快速显示 OutLine
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表
Ctrl+` 在c/c++中非常有用的功能 打开相关的源文件或头文件
Ctrl+D 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交换位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交换位置(同上)
编译、运行
Ctrl+B - 重新编译所有项目.
F11 - 调试(Debug)当前项目.
Ctrl+F11 - 运行当前项目.
Ctrl+. and Ctrl., - 转到下一个/前一个提示项目。当编译器为我们生成了很多编译警告等信息的时候,这个功能将发挥区大的作用。
Ctrl+Shift+B - 切换当前行的断点状态。注意,该快捷键仅仅在调试界面下是可用的,在Symbian开发界面下是不可用的。
Ctrl+Alt+B 程序编辑目标项目
调试
F5 - 进入当前行函数.
F6 - 执行当前行.
F8 - 继续执行.
Ctrl+R - 执行到当前行.
重构相关
Alt + shift + r - 变量名函数名重构
阅读源码
F3 - 查看变量的声明
F4 - 查看某类的继承层次关系
Ctrl + T 快速查看类的继承关系
导航相关
F2 - 使编辑视图获得焦点
ALT+SHIFT+W 当焦点在编辑区的时候显示源文件的导航视图(Outline,Navigator,C++ project)
Ctrl+F6 ,Ctrl+ SHIFT+ F6 在编辑视图中对打开的文档进行进行切换(类似于WINDOWS的 ALT+TLB和 ALT+SHIFT+TBL)
Ctrl+F7,Ctrl+ SHIFT+ F7 对全局视图进行切换
Ctrl+F8 ,Ctrl+ SHIFT + F8 - 界面组的切换 ,这个快捷键可以切换Symbian界面组和调试(Debug)界面组。
在Carbide.c++中我们可以设置菜单的Window | Preferences | General | Keys选项中,修改当前的快捷键配置。加入你熟悉了其他IDE工具的快捷键配置,那么修改Eclipse/Carbide.c++的当前设置可能会是十分有帮助的。(我本人就是这样,钟情于emacs)可以这样修改Carbide C++环境:
Window->Preferences->General->Keys->Modify->Scheme->Emacs
这样就行了,用起来很爽的说。
(11)关于symbian中进行unix环境下的Universal Time和TTime转换的方法
_LIT(KDateString1,"%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%J%:1%T%:2%S%.%*C4%:3%+B"); // 定义显示的格式是 年/月/日 时:分:秒.000000
TTime tm; 
// 这里传入的1207823088就是unix下面UTC时间的十进制表示
TTimeIntervalSeconds tm_seconds(1207823088) ; 
// local是TLocale的对象,这个对象比较大,最好不要在栈上创建,
// 可以做为类的成员变量或者在堆上创建
TTimeIntervalSeconds tm_offset(local.UniversalTimeOffset()) ; 
// 基准时间根据UTC的标准设定为1970/01/01,0点0分0秒。
tm.Set(_L("19700000:000000.000000")) ; 
tm.FormatL(iTmpBuf, KDateString1) ; 
PrintBuf(iTmpBuf) ; 
// 根据unix UTC时间的定义,需要在基准时间里面加入距离基准时间的秒数,还要加入时区
// 的偏移,我们是东八区,正好需要加入8个小时
tm += tm_seconds ; 
tm += tm_offset ; 
tm.FormatL(iTmpBuf, KDateString1) ; 
PrintBuf(iTmpBuf) ; 
// 此时的tm里面就是我们所需要的symbian下的时间了。
(12)关于symbian 3rd sdk安装中遇到的一些问题
如果不能成功安装SDK,建议 其参阅诺基亚 论坛 网站的讨论区的帖子:
Can't install S60 3rd SDK:
http://discussion.forum.nokia.co ... ghlight=s60_3rd.xml
这个帖子提供了解决这一问题的迂回方案。开发者需要创建一个空文“S60_3rd.xml”,并将其置于3rd Edition SDK安装包被解压缩到的那个安装目录中,然后再进行安装。
如果多次安装并卸载S60 3rd edition maintenance release SDK,安装文件目录的名字将不断改变,如“/Symbian/9.1/S60_3rd_MR_1”或“/Symbian/9.1/S60_3rd_MR_2”为去除安装序列号“1” 或“2”,开发者需要于安装前从Windows注册表中删除下列键值:HKEY_LOCAL_MACHINE/SOFTWARE/Nokia/com.nokia.s60。
Under HKEY_LOCAL_MACHINE/SOFTWARE/Nokia look for a key called "com.nokia.s60" ( or "S60_3rd_FP1" for S60 3rd SDK FP1). After uninstalling the SDK delete this key from the registry (alternatively you can modify the value of the "Instances" string under thiskey) and on the next install the counter starts again from 0.
(13)关于symbian 3rd中对于Open C库的支持
根据我的实验,目前最新版的Open C库是s60_openc_plugin_MR.zip,
需要配合配套的symbian 3rd sdk MR版本的才好用。
(14)在symbian中根据文件名得到该文件的路径 
TFileName full_fname;
full_fname =iEikonEnv->EikAppUi()->Application()->AppFullName();
TFileName full_path;
TParse parse;
parse.Set(full_fname,NULL,NULL);
full_path.Copy(parse.DriveAndPath());
(15)在symbian 2nd, 3rd移植的时候,显示不出来about文本消息
这个问题主要是3rd的Ui类中的ConstructL()函数引起的,尽管在2nd和3rd的平台上都可以直接使用BaseConstructL()无参数和有参数的版本。但是,在需要显示about dialog文本的时候,而且是在为3rd开发的时候,最好加上BaseConstructL(EAknEnableSkin)这个带参数的调用。这样才不会在显示的时候出现问题。 
(16)在symbian 3rd的sdk中调试exe程序的方法
如果采用vs2005+carbide.vs插件来调试exe的话,按下F5启动模拟器以后,会莫名奇妙地打开一个白色的命令行窗口,这个窗口叫做“eshell”。这时候,需要开发人员手工启动这个exe程序(当然需要现在程序中设置好断点了)。
具体操作如下:
(a)cd private [回车]
(b)myappname [回车]
这里的myappname就是你需要调试的exe的名字了。这种方法的优点在于,如果exe有屏幕绘图或者按键截获操作,也就是跟CWsSession有些关系的话,就可以用这个方式,既启动了模拟器的Windows Server又可以通过eshell手工启动你的exe。缺点是epoc启动速度太慢,需要等一段时间。
还有一种更迅速的方法,就是修改配置文件,例如:
C:/Symbian/9.2/S60_3rd_FP1/Epoc32/Data/epoc.ini
在 该文件的第一行加入一句textshell,然后保存关闭。当运行epoc启动模拟器的时候,随之启动的还有一个蓝色的console输出窗口。然后的过 程就跟上面一样,首先单击一下模拟器,让它获得焦点,然后用键盘输入上面的(a),(b)两句即可。这种做法的好处在于模拟器启动相当快,直接进入 textshell模式,缺点是没有开启windows server对于有ui操作的exe来说,只能用第一种方案了。最后调试完毕后,不要忘记把epoc.ini文件恢复原状。
(17)手工读取手机的相关信息
*#06#   : 读取手机的imei
*#0000# :读取手机固件(firmware)版本号
*#2820#:读取手机蓝牙 设备的Mac地址

symbian 模拟器 相关相关推荐

  1. Symbian模拟器启动流程

    1)启动epoc.exe 加载euser.dll 加载emulator.dll 阶段1: 如果手机采用的是NAND Flash, 那么NAND核心载入器会载入并启动Bootstrap程序.如果是NOR ...

  2. 关于Symbian 模拟器一闪就没的解决办法(Eclipse+MTJ+symbian模拟器)

    这几天被分到了一个symbian系统上的java应用的开发,在搭建环境过程中遇到了很多的问题,现总结如下: 1."Jar file could not be initialized" ...

  3. 删除Symbian模拟器中测试程序的方法

    删除Symbian模拟器(功能表->安装)里面测试程序的方法: For S60 2nd平台: 删除/epoc32/release/wins/udeb/z/system/apps/myapp的目录 ...

  4. 删除Symbian模拟器(功能表-安装)里面测试程序的方法

    转自:http://www.devdiv.net/action-blogdetail-uid-11451-id-284 删除Symbian模拟器(功能表->安装)里面测试程序的方法: For S ...

  5. symbian 模拟器乱码

    字符串编码中文表示常用的有:GB2312,GBK,Unicode,UTF-8 其中GBK是GB2312的超集,也就是涵盖了GB2312编码的所有内容,UTF-8是Unicode的在网络传输中的一种编码 ...

  6. symbian模拟器的修正

    装好了symbian的开发环境,却发现模拟器却存在问题.虽然不影响整体开发,但是觉得闹心.现将总结如下: 1.Application closed: ncnlist KERN-EXEC 3 错误. 解 ...

  7. Symbian模拟器“Cannot start ECMT Manager”错误提示解决方案

    Symbian的epoc模拟器默认情况下只分配32M的内存,因此启动模拟器会很慢,这个值是可以设置的.,打开Tools > Preferences在General标签页下可以进行调节.但是出现了 ...

  8. 【转】配置Symbian模拟器支持模拟MMC存储卡

    原文:http://hi.baidu.com/beibei245/blog/item/7d0329c4827c01a18226ac39.html 我按照网上二版配置的方法,试了半天还是不行,最后只好啃 ...

  9. Xcode模拟器相关操作

    1.用命令行打开指定模拟器 xcrun instruments -s // 查看可用模拟器名称 xcrun instruments -w 'iPhone X (11.4)' // iPhone X ( ...

最新文章

  1. DINO:目标检测benchmark COCO屠榜的正确姿势
  2. MySQL双机热备部署
  3. xmake新增对WDK驱动编译环境支持
  4. iOS - 手动添加新的字体
  5. js调用php函数兵每秒刷新,深入理解JavaScript立即调用函数表达式(IIFE)
  6. .NET错误:未找到类型或命名空间名称
  7. Second easyui框架学习
  8. Django 【第十四篇】信号
  9. 利用DMRMAN备份时出现“管道连接失败”的错误信息的解决方法
  10. 抽样:理论与应用(第二版) 金勇进 课程笔记 1~4章
  11. CentOS7.4通过ssh连接到服务器的时候特别慢
  12. 各种说明方法的答题格式_说明文方法答题格式
  13. Python爬虫实战案例讲解——爬虫爬取地铁线路图
  14. Requirement already satisfied
  15. 【科普】1分钟帮你搞懂机械硬盘和固态硬盘
  16. python输出26个大写字母_python 一句话输出26个英文字母
  17. C语言 IO多路复用——poll函数
  18. 设置图片跟随鼠标移动
  19. 思维导图到底是什么-图说思维导图定义
  20. 顺丰和百度外卖绯闻内幕披露

热门文章

  1. wordpress实现文章阅读次数
  2. python星星排列代码怎么写_【读码】python中的小星星*用法示例
  3. [转载] 信息系统项目管理师视频教程——25 战略管理
  4. win10 安装 CH340驱动
  5. pscp上传下载文件
  6. 白话数字化-1:什么是数字化?
  7. openlayers地图切换
  8. String split()
  9. 第二类换元法之三角代换习题
  10. docker数据卷容器挂载不上