Symbian OS介绍 陈永华 2008.5.30 2018/12/30.

Slides:



Advertisements
Similar presentations
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Advertisements

第四章 类、对象和接口.
项目7 面向对象高级.
第1章 Java语言概述.
第21章 .NET报表设计 (时间:1.5次课,3学时).
硕士论文开题报告 煤炭企业物流信息系统的 研究与设计 指导老师: 学生姓名: 学 号:
C语言程序设计 主讲教师 :张群燕 电话:
人 工 智 慧 報 告 五子棋AI設計 報告者 : 潘輝銘.
第四章 電腦軟體 課前指引 實體的電腦裝置,我們稱之為「硬體」(Hardware),至於軟體則是個抽象的概念,軟體是經由人類以各種不同的程式語言撰寫而成,以達到控制硬體、進行各種工作的抽象化(例如文書處理)等動作。有些讀者經常迫不及買了一台新電腦,就以為可以開始使用!事實不然,一部配備齊全的電腦,如果沒有合適的軟體來控制與搭配,絕對也是英雄無用武之地。一般來說,我們將軟體分「系統軟體」(System.
四資二甲 第三週作業 物件導向程式設計.
北京科技大学天津学院 信息工程系 面 向 对 象 程 序 设 计 第1讲 Java初探 主讲:于静.
手持裝置應用系統之設計 與未來發展 黃有評 大同大學 資訊工程系.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
系统结构 第一部分.
第二章 JAVA语言基础.
類別與物件 Class & Object.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
第5章 异常处理 王德俊 上海交通大学继续教育学院.
工具链 介绍部分 1b.
Symbian OS介绍 概述 第一部分.
淺談Visual C# 程式設計 國立台灣師大附中 李啟龍 Jason.
第十一章 面向对象设计 第十二章 面向对象实现
Java基础 JavaSE异常.
.NET 簡介.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
Microsoft Project 2003 Gibson New Microsoft Enterprise Project
.NET 簡介.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第1章 .NET与C# 为什么要设计一门新的编程语言? C#在微软的.Net平台中占据什么样的地位?
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
資訊平方有限公司 執行總監/台灣微軟資深顧問
异常退出和清除栈.
 活动对象(Active Object).
描述符 第一部分.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
异常及处理.
Java程序设计 第2章 基本数据类型及操作.
P2P聊天工具.
指導老師:楊子青 老師 專題組員:朱盈慈、曾孟涵、范珮錡、林佳臻
第三章 C# 基础知识.
Network Application Programming(3rd Edition)
JAVA 编 程 技 术 主编 贾振华 2010年1月.
补充:c#语言基础.
C#程序设计基础 $3 成员、变量和常量.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
C++程序设计 吉林大学计算机科学与技术(软件)学院.
第二章 类型、对象、运算符和表达式.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
客户端-服务器框架 第一部分.
第2章 Java语言基础.
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
安裝 Visual C Express Edition
第二章 Java基础语法 北京传智播客教育
游振昌 Gibson 資訊平方有限公司 執行總監 台灣微軟資深顧問
动态数组.
Presentation transcript:

Symbian OS介绍 陈永华 2008.5.30 2018/12/30

主要介绍内容: 一、基本简介; 二、OS60版本分类; 三、开发环境搭建; 四、基本数据类型; 五、命名规则; 六、内存管理机制---异常退出和清除栈; 七、描述符; 八、真机移植 2018/12/30

一、基本简介 Symbian是当前和未来的最重要的主流智能手机操作系统之一。 Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、以及3G等技术。Symbian主要用于高端的智能手机,其开发语言为C++。Symbian 是真正的微核操作系统,所谓“微核”,就是说操作系统只有很小的一部分是运行在最高优先级的,其他的功能都是以Client-Server的方式提供。 2018/12/30

二、OS60版本分类 Series 60 第一版OS 6.1 Series 60 第二版OS 7.0s Series 60 第二版Pack 1 OS 7.0、8.0a、8.1a; Series 60 第三版OS 9.1 、9.2、9.3、9.5 2018/12/30

开发包支持的集成开发环境工具有很多种,主要如下: 1、Microsoft Visual Studio 6 / Visual C++ 6 2、Microsoft Visual Studio .NET [2003] / Visual C++ 7 3、Microsoft Visual Studio .NET [2005] / Visual C++ 8 3、Borland C++ Builder 6 4、Borland C++ Builder X 1.0 5、Metrowerks CodeWarrior Studio for Symbian Personal/Professional 2.0/2.5 特别注意:版本不同,应用功能不同,每个版本严格对它的操作系统与SDK,版本应用向前不完全兼容性,移植时特别注意。第三版是现在的主流,更是将来的主流,现在我们用的是主流版第三版OS9.2 ,开发环境: VC2003。 2018/12/30

三、开发环境搭建 准备工作: 1)安装好microsoft office frontpage 2)XP组件中的IIS项中的frontpage扩展; 3)准备下列软件: ⑴ ActivePerl ⑵ J2RE ⑶ Series 60 SDK(即S60 3rd Edition FP1) ⑷ Microsoft Visual Studio.Net 2003 ⑸ Carbide.vs 注:由于开发需要,建议同时安装S60 2rd Edition pack2 FP2 2018/12/30

1)安装Microsoft Visual Studio.Net 2003。建议安装在C盘下program files,选择默认安装; 安装工作: 做好准备工作后,开始环境安装,一共需要安装下列软件,且按如下安装顺序: 1)安装Microsoft Visual Studio.Net 2003。建议安装在C盘下program files,选择默认安装; 2)安装ActivePerl 。建议安装在C:\symbian目录下; 3)安装J2RE。建议安装在C盘,选择默认安装 4)安装S60 2rd Edition pack2 FP2。建议安装在C盘,选择默认安装 5) 安装S60 3rd Edition FP1。建议安装在C盘,选择默认安装 6) 安装Carbide.vs。建议安装在C盘,选择默认安装 2018/12/30

① 打开VS.NET,新建symbian项目:命名为TestHello,确定 进入symbian project页面, 测试安装成功与否: ① 打开VS.NET,新建symbian项目:命名为TestHello,确定  进入symbian project页面, project type选:symbian 9 ----第三版工程;  Classic ------第二版工程;  project template选:S60 3rd Ed.Hello World Application, Select SDKs中选定打勾,finish  说明:WINSCW为在PC机上版本,GCCE为手机用版但可以都选择 编译、执行。 具体测试如下图所示: 2018/12/30

2018/12/30

2018/12/30

2018/12/30

2018/12/30

2018/12/30

四、基本数据类型 Symbian OS 使用的是面向对象的C++, 但是又和标准的C++有一些区别。 比如:Symbian OS没有标准的异常处理(Exception), 因为设计Symbian OS的时候C++还没有把异常处理标准化。 所以Symbian设计了自己得异常处理机制: TRAP, leave. 另外就是今天要讲的基本类型。 Symbian 基本上不使用任何标准的C++基本类型,不同的C++编辑器对int, unsigned int的长度理解不同, Symbian OS中使用TInt8,TInt16,TInt32。 如果没有某一特定的长度时,要使用Tint。其他很多类型也遵守这个原则。 比如TBuf8, TBuf16没有特定长度时最好用Tbuf。 2018/12/30

TText8 字符相当于 unsigned char TText16 字符相当于 unsigned short int 基本数据类型及描述 基本数据类型 描述 TInt8, TUint8 8位 整数 TInt16, TUint16 16位 整数 TInt32, TUint32 32位 整数 TInt, TUint 32位 整数 TReal32, TReal64 实数 TText8 字符相当于 unsigned char TText16 字符相当于 unsigned short int TBool 布尔 ETrue (= 1) EFalse (= 0) Tany 相当于void 2018/12/30

Symbian OS 使用很多代码规范,使用他们可以增强Symbain 代码的可读性, 有些规范甚至是需要严格遵守的, 比如类的命名: T 类 1、拥有 ’T’ 前缀,可以象C++中基本类型一样使用; 2、他们通常很小,一般分配在栈空间,但也可以在堆上建立,当存在潜在的异常退出(Leave)的可能时,指向类对象的指针应当首先压入清除栈中,然后再调用相关代码。 3、在发生异常退出后,T类对象的内存空间被收回,但是没有调用析构函数。如:TInt i,j; 2018/12/30

1、拥有 ’C’ 前缀, C类总是从 CBase 类上继承而来,C代表他们从CBase类继承而来,在e32base.h中定义; 1)安全的构造和析构,两阶段构造: 允许在构造的时候进行安全初始化 (例如, 内存分配) ,因为在构造时可能引起潜在的异常退出和内存泄露 两阶段构造是一种模式,其特点是所有的构造函数都是private或者protected类型,提供了静态工厂函数,通常称为NewL() 或者 NewLC(); 2.)成员数据零初始化 3、C类通常很大,包含的成员数据在创建阶段的初始化时可能会失败,例如分配内存空间或者打开一个资源句柄 如:CExample *example = new (Eleave) CExample; 2018/12/30

1、拥有 ’R’ 前缀,R代表资源(Resource) ; 如:Open(),Connect() , Initialize() , Close() 经常犯的错误就是忘记调用Close()方法 ,这可能导致严重的内存泄露 如:RTimer timer; timer.CreateLocal( );//创建本地时钟 … timer.Close(); 2018/12/30

1、也叫混合类,拥有 ’M’ 前缀,创建M类的目的是 — 定义一个接口 2、特点1)永远不含任何成员数据; 2)永远不含构造函数、析构函数或重载描述符,M类不可以实例化; 3)声明的是纯虚函数,用作抽象接口。 3、一个从M类派生的具体类通常是从CBase类继承而来的,从一个或者多个混合类派生,并实现其接口函数,正确的类继承顺序是,总是把CBase类放在最前面: class CCat : public CBase, public MDomesticAnimal{...}; 而不能: class CCat : public MDomesticAnimal, public CBase{...}; 4、举例:class MVideoPlayerUtilityOberver //视频播放类 { public: virtual void MvpuoOpenComplete(TInt aError) = 0;//设备打开 virtual void MvpuoPlayComplete(TInt aError) = 0;//准备播放 } 2018/12/30

五、命名规则----symbian命名很重要 作用:这样易于检查特定的清除相关的规则。 1、成员变量:定义时一般以i开头。如TInt iValue; 2、枚举变量:定义时起开名称以T开头,各成员以 E开头,如 enum TMonth {EJanuary = 1, EFebruary = 2, ..., EDecember = 12} 3、常 量 :以 K开头。如KMaxFileName; 4、函数形参:定义时以 a开头。如aDevice, Ax; 5、函数命名:第一个字母大写,后缀D表示对对象进行删除,后缀L表示有可能Leave,后缀C表示函数中有变量需要旋转于清理栈中;函数名称暗示了他们是做什么的。对于返回内部成员变量的函数,他的名称一般使用去掉首字母i的该变量名称。如: inline RWindow& Window() const { return iWindow; }; 6、自由变量:无明确前缘,但要求以小写字母开头等。 2018/12/30

六、内存管理机制---异常退出和清除栈 1、Symbian OS 被设计为可以在只有有限内存的设备上良好运行的系统,它使用清除栈来保证在错误发生时不会发生内存泄漏,如果一个函数可能会异常退出,它的名字结尾必须以“L”为后缀,这点非常重要。 2、Symbian OS 的两个最基本的编程模式是: 1)异常退出(Leave)轻量级的异常; User::Leave() 或 User::LeaveIfError(),近似于 C++ 中的 throw指令 TRAP宏,可以看作 try 和 catch 组合,每一个 TRAP对执行规模和执行速度有影响,TRAPS 的数量应尽可能减少 2)清除栈(Cleanup Stack),它是用来管理发生异常退出事件时的内存资源和其他资源的。 2018/12/30

典型的异常退出的例子 1.使用重载 new 操作符来分配内存 2.将一些对象压入清除栈顶端 3.调用一个可能异常退出方法 TInt UseCat(CCat* aCat); CCat* InitializeCatL() { CCat* cat = new(ELeave) CCat(); // (1) CleanupStack::PushL(cat); // (2) cat->InitializeL(); // (3) User::LeaveIfError(UseCat(cat)); // (4) CleanupStack::Pop(cat); return (cat); } 1.使用重载 new 操作符来分配内存 2.将一些对象压入清除栈顶端 3.调用一个可能异常退出方法 4.调用会返回错误码的非异常退出函数,该函数被一个会产生异常退出的系统函数所包裹 2018/12/30

清除栈 1、使用清除栈使代码成为异常退出安全, 这样在异常退出事件中不会发生内存泄漏 2、常用方法: CleanupStack::PushL() CleanupStack::Pop() CleanupStack::PopAndDestroy() 使用 __UHEAP_MARK 和 __UHEAP_MARKEND 宏来发现内存是否泄漏 2018/12/30

/*static*/ CFoo* CFoo::NewLC(TInt aVal) { 3、举例: /*static*/ CFoo* CFoo::NewLC(TInt aVal) { CFoo*self = new(ELeave) CFoo(aVal); // 第一阶段构造 CleanupStack::PushL(self); self->ConstructL(aVal); // 第二阶段构造 return self; } /*static*/ CFoo* CFoo::NewL(TInt aVal) { CFoo* self = CFoo::NewLC(aVal); CleanupStack::Pop(this); return self; } 2018/12/30

1、Symbian OS 的字符串被称为描述符; 八、描述符 1、Symbian OS 的字符串被称为描述符; 2、Symbian OS描述符不同于标准C++的字符串,Java的字符串或者MFC的Cstring,也不同于C的字符串; 3、它们的内存分配和释放必须由程序员来管理。 4、 Symbian OS的描述符可以包括文本和二进制数据 5、不能自动动态的扩展它们所引用的数据区,如果调用 某个方法使得要存储的数据大于可用空间就会导致系统 错误(panic) 2018/12/30

6、可以是窄(8位)的, 宽 (16bit)的或者为字符宽度无关的 (即16位,Symbian OS设置基于Unicode构建的) 7、被构建成支持unicode字符集,即缺省使用宽(16-bit) 字符 描述符类的字符宽度可以从名称中识别出来, 类名以8 结尾的描述符 (例如TPtr8)使用窄 (8位) 字符串 类名以16 结尾的描述符(例如TPtr16)处理16位字符串 8、TDesC 是所有描述符的基类,目前有六个描述符派生类 (TPtrC, TPtr, TBufC, TBuf, HBufC 和 RBuf) 9、描述符有两种基本结构 指针描述符 – 描述符拥有一个指针,该指针指向了其他某处存储字符串的地址 缓冲区描述符 – 字符串构成了描述符的一部分 2018/12/30

示例 2018/12/30

八、真机移植 Symbian OS 模拟器 1、Symbian 模拟器具有进程和线程调度,它跟真的Symbian OS手机硬件上的工作几乎是相同的 2、但是,也有一些区别 例如: 真机的内存模型与模拟器上的就有区别 底层硬件是不同的 不可能在模拟器和真机上使用相同的设备驱动器和硬件抽象层代码 因为这个原因 模拟器不能用于低级编程,例如编写设备驱动器 2018/12/30

移植到手机 1、为了构建Symbian OS程序,需要文件: 组件描述文件 (bld.inf) ——位于group文件夹 项目定义文件 (projectname.mmp) ) ——位于group文件夹 打包文件projectname.pkg ) ——位于sis文件夹 2、在模拟环境下设置编译方式带GCCE功能; 3、在模拟环境下修改group文件夹下bld.inf; /*注释部分,不被执行*/ PRJ_PLATFORMS ;平台说明 WINSCW GCCE PRJ_EXPORTS ; 列举一系列要从项目目录复制到另一个目录的文件 ;通常是 \epoc32 下面的目录 PRJ_MMPFILES ; 说明有哪些定义文件(MMP文件) project.mmp 2018/12/30

4、检查sis文件夹下打包文件(.pkg)路径是否正确 ; 移植到手机 4、检查sis文件夹下打包文件(.pkg)路径是否正确 ; ; helloworldbasic_gcce.pkg "..\..\..\epoc32\release\gcce\urel\HelloWorldBasic.exe" -"!:\sys\bin\HelloWorldBasic.exe" { "..\..\..\epoc32\data\z\resource\apps\HelloWorldBasic.rsc" "..\..\..\epoc32\data\z\resource\apps\HelloWorldBasic.r09" "..\..\..\epoc32\data\z\resource\apps\HelloWorldBasic.r31" "..\..\..\epoc32\data\z\resource\apps\HelloWorldBasic.r32" } 2018/12/30

5、编译、连连,重新生成打包文件*.pkg ; 6、在DOS下输入打包命令,主要如下: …>group>bldmake bldfiles …>group>abld build gcce urel …>group>cd. …>cd sis …>sis>makesis project.pkg 结果生成 project.sis (SIS 文件包含Symbian OS软件安装器安装一个应用程序到手机上所需要的所有信息) 7 、数字签名 symbian 第三版严格要求移植到手机的安装文件需要认证签名,需求不同,签名规格不同,签名后安装文件project.sis名称变为project.sisx 8、签名后的安装文件project.sisx拷贝到手机,直接安装即可运行。 2018/12/30

Thank you! 2018/12/30