symbian C++开发经验

### Symbian C++开发经验####一、前言近段时间,笔者通过Symbian C++成功开发了一款手机应用程序。初次接触Symbian C++时遇到了不少挑战,但通过不懈努力最终得以攻克难关。在此基础上,本文旨在整理并分享一系列关于Symbian C++开发的经验教训,希望能帮助更多开发者更顺畅地掌握这一技能。鉴于本项目主要面向的是Nokia S60第三版手机平台,因此以下内容将侧重于该版本的特点。 ####二、Symbian C++简介为了更好地理解Symbian C++,我们先简要介绍一下它的背景。Symbian OS是一款专门为移动电话设备设计的操作系统,目前在全球范围内拥有广泛的市场占有率。值得一提的是,Symbian公司的最大股东正是Nokia,因此对于想要深入了解Symbian C++的开发者来说,访问Symbian官方网站或参与Nokia论坛的讨论将是十分有益的选择。 Symbian C++是Symbian OS的基础编程语言,“基础”这个词在这里蕴含着双重意义:一方面,它代表着更加纯粹的功能实现;另一方面,则意味着更为高效的性能表现。接下来,我们将从以下几个方面深入探讨Symbian C++的特性和开发环境搭建: 1. **开发环境搭建**:介绍如何构建适合Symbian C++开发的环境。 2. **Symbian C++的独特机制**:包括命名规则、数据类型、异常处理等。 3. **S60第三版程序框架**:解析Symbian C++应用程序的基本结构。 4. **程序安装**:说明如何制作安装包及安装过程中可能出现的问题。 5. **有效的学习方法**:推荐一些有助于学习Symbian C++的方法和资源。 ####三、Symbian C++开发环境搭建##### 1. Nokia的Carbide Nokia提供了Carbide这一集成开发环境(IDE),支持多种开发需求,包括但不限于Java和Symbian C++。 - **针对JAVA的Carbide开发工具**:此版本主要用于Java应用的开发。 - **针对Symbian OS C++的Carbide开发工具**:专门用于Symbian C++的开发工作。 - **实现用户界面个性化和定制化的Carbide工具**:支持用户界面的设计与定制功能。 ##### 2.基于Microsoft Visual Studio IDE的开发环境搭建对于偏好使用Microsoft Visual Studio的开发者而言,可以通过安装特定插件来支持Symbian C++的开发。 - **安装Carbide.vs 3.0的必要条件**:确保计算机上已安装.NET Framework 2.0或更高版本,以及Visual Studio 2005。 - **安装Visual Studio 2005**:这是构建Symbian C++应用程序的基本前提之一。 - **安装JRE和ActivePerl**:虽然不是必须,但安装Java Runtime Environment (JRE)和ActivePerl可以增强开发体验。 - **选择安装SDK**:根据项目需求选择合适的Symbian OS SDK版本。 - **安装Carbide.vs**:通过下载并安装Carbide.vs插件,可以在Visual Studio环境中无缝进行Symbian C++的开发。 - **安装完成**:完成上述步骤后,即可开始使用集成的开发环境。 ##### 3.基于Eclipse IDE的开发环境搭建对于习惯使用Eclipse的开发者,也可以通过安装特定插件来进行Symbian C++的开发。 ####四、Symbian C++独特机制##### 1.命名惯例- **命名总则**:Symbian C++有一套严格的命名规则,用于提高代码的可读性和一致性。 - **命名前缀与命名后缀**:例如,类名通常以大写字母开头,而局部变量则以小写字母开头。 ##### 2.基本类型Symbian C++定义了一系列基本数据类型,这些类型被广泛应用于各类应用中,如`TInt`表示整型,`TReal`表示浮点型等。 ##### 3.类的划分- **C-Class**:堆分配类,适用于生命周期较长的对象。 - **R-Class**:资源类,通常用于管理系统资源,如文件句柄。 - **T-Class**:值类,用于存储简单的数据值。 - **M-Class**:接口类,定义了类的行为而不包含其实现。 - **静态类**:提供全局函数的封装,通常不包含实例化对象。 - **D-Class**:动态类,其概念较为抽象,在实际开发中并不常用。 ##### 4.异常处理- **TRAP和TRAPD**:Symbian C++提供了两种类型的异常捕获机制,TRAP用于捕获非致命异常,而TRAPD则用于调试目的。 - **异常抛出函数**:通过使用`User::Leave`等函数抛出异常。 - **可能异常退出的操作符**:如`new(ELeave)`,这是一种特殊的新运算符,当内存分配失败时会抛出异常。 - **可能异常退出的函数**:某些函数调用可能会导致异常发生,需要通过适当的机制来处理。 - **引入清除栈(CleanupStack)机制**:这是一种用于资源管理的重要机制,确保在异常发生时释放已分配的资源。 ##### 5.清除栈- **清除栈成员要求**:任何可能抛出异常的资源都应该加入到清除栈中。 - **清除栈的操作**:使用`CleanupStack::PushL`等函数将对象加入清除栈。 - **清除栈弹出操作的debug版本**:在调试模式下,可以使用`CleanupStack::PopAndPrintL`来打印栈内信息,有助于定位问题。 - **使用清除栈的注意事项**:合理利用清除栈可以有效避免内存泄漏等问题。 ##### 6.两阶段构造- **引入原因**:Symbian C++中的对象构造分为两个阶段,第一阶段主要是初始化对象的状态,第二阶段则完成其余构造任务。 - **具体措施**:通过构造函数和`ConstructL`方法来实现。 - **总结**:两阶段构造有助于确保对象状态的一致性,并简化构造逻辑。 ####五、S60第三版程序框架##### 1.框架概述Symbian C++应用程序遵循一个固定的框架结构,主要包括以下几个部分:主函数`E32Main()`、应用类、文档类、UI类、视图类和引擎类等。 ##### 2.框架详解- **E32Main()函数**:程序的入口点,用于创建应用类的实例。 - **应用类**:负责应用程序的初始化和管理文档类实例。 - **文档类**:作为应用程序的核心组件,负责创建UI类的实例。 - **UI类**:负责程序的主要用户界面交互。 - **视图类**:展示给用户的图形界面。 - **引擎类**:执行后台计算或数据处理任务。 ##### 3.一些特殊的文件- **inf文件**:用于描述程序的基本信息,如名称、版本号等。 - **mmp文件**:Makefile宏文件,定义了编译选项和依赖关系。 - **pkg文件**:包含程序的安装信息,如依赖的库文件等。 - **rss文件**:资源文件,用于存储字符串和其他资源。 - **rls文件**:资源列表文件,用于组织和引用资源。 - **hrh文件**:头文件资源,用于定义资源ID等信息。 - **pan文件**:面板文件,定义用户界面布局。 ####六、Symbian C++程序安装- **在Carbide.C++v1.2下制作安装包**:通过Carbide提供的工具可以方便地制作Symbian C++应用程序的安装包。 - **安装过程中出现的错误提示**:可能会遇到诸如签名问题或兼容性问题等错误提示,需要根据提示信息进行相应的调整。 ####七、Symbian C++有效的学习方法- **读程序**:阅读现有项目的源代码是提高编程技巧的有效途径。 - **看文档**:官方文档和教程是获取权威信息的重要渠道。 - **逛论坛**:参与在线社区和论坛讨论可以帮助解决实际问题。 - **我经常访问的网站**:如Symbian官方论坛、Nokia Developer等。通过以上几个方面的详细介绍,相信读者对Symbian C++有了更深入的理解。虽然Symbian OS的市场份额逐渐减少,但在某些特定领域和老机型上仍然有着不可替代的地位。希望这些经验和建议能帮助到正在学习Symbian C++的朋友们。
pdf 文件大小:400.03KB