5.29k likes | 5.59k Views
Symbian OS/C++ 移动应用 开发讲义. 何 锐 张锦锋 牛建伟 Niujianwei@buaa.edu.cn 北京航空航天大学计算机学院 • 分布与移动计算实验室. 主要内容. Symbian OS 概述 (1 上 ) Symbian SDK 及其开发环境 (1 上 ) Symbian 软件开发概述 (1 上 ) 内存管理 (1 下 ) Descriptors (2 上 ) 动态数组 (2 上 ) 活动对象 (2 下 ). 主要内容(续). 简单 GUI 编程 (3 上 ) 资源的使用 (3 上 )
E N D
Symbian OS/C++移动应用开发讲义 何 锐 张锦锋 牛建伟 Niujianwei@buaa.edu.cn 北京航空航天大学计算机学院•分布与移动计算实验室
主要内容 • Symbian OS 概述 (1上) • Symbian SDK及其开发环境 (1上) • Symbian软件开发概述 (1上) • 内存管理 (1下) • Descriptors (2上) • 动态数组 (2上) • 活动对象 (2下) 北航分布与移动计算实验室
主要内容(续) • 简单GUI编程 (3上) • 资源的使用 (3上) • 对话框 (3下) • 视图及控件 (3下) • 中文化 (4上) • 多视图 (4上) • 文件及流操作(4下) • MMF入门 (5上) • 总结与考试 ( 5下 ) 北航分布与移动计算实验室
Symbian OS 概述 北航分布与移动计算实验室
内容 • Symbian OS演变历史 • 关键特点 • 其它相关操作系统特点 • 基础概念 • 组件结构 北航分布与移动计算实验室
Symbian OS 北航分布与移动计算实验室
Symbian OS • 针对PDA及智能手机的,能够提供良好的软实时的操作系统 • 与之竞争的有Windows Mobile、PalmOS以及Linux,Brew • Symbian OS针对如下特点进行了优化 • 低功耗(电池供电) • 小型设备 • 长久运行、关键应用 • Symbian OS解决的问题 • 嵌入式软件 • 移动计算 • 电话 • 其他基于ROM的应用程序 北航分布与移动计算实验室
关键特点 • 主要特点: • 基于ROM • 针对电池供电 • 健壮性好 • 抢先式多任务微内核 • 基于组件 • 完全面向对象 • 因此: • 可靠性好 • 不会丢失用户数据 北航分布与移动计算实验室
通用技术 北航分布与移动计算实验室
当前的产品(S60平台) Nokia N-Gage Nokia 6630 Nokia 6670 Nokia 7650 Siemens Sx1 Panasonic X700 Nokia 7610 Nokia 6600 北航分布与移动计算实验室
当前的产品(S80和S90) Nokia 9500/9300 communicators Nokia 92xx communicators Nokia 7710 Nokia 7700 北航分布与移动计算实验室
当前的产品(UIQ) P908 P910 Motolora A1000 北航分布与移动计算实验室
竞争者 • 平台 • Palm • Windows Mobile • RIM (BlackBerry) • Linux • 移动技术 • MIDP(J2ME) • WAP • Linux • Sim Toolkit • .NET (C#) 北航分布与移动计算实验室
Windows Mobile • 最初是为比较大的设备设计的操作系统 • 优点:配置高,功能强 • 缺点:耗电大,硬件成本高 • 针对不同的设备族 • Pocket PC • Smart Phone • 封闭的环境 • MS提倡私有开发标准 • 很多的开发人员 • 易于使用 • 用户界面友好 北航分布与移动计算实验室
PalmOS • 比SymbianOS还要普及一些 • 尤其是美国 • 市场表现在退步(Pocket PC) • 目前PalmOS销量不好 • 16/32位操作系统 • 第三方软件多 • 较多的开发人员 北航分布与移动计算实验室
Linux • Linux在C/S模式下表现很好 • 为Intel架构的个人电脑设计 • 性能和健壮性优于Windows • 在服务器端有良好表现 • 比Symbian OS更开放 • 很容易定制 • 可以直接得到RTOS Linux • 大量专家级的开发者 • 免费使用 北航分布与移动计算实验室
GEOS • GEOS是Nokia等公司内部使用的一个中低端手机操作系统,目前没有被广泛使用 • Nokia准备从GEOS过渡到Symbian平台 北航分布与移动计算实验室
Symbian OS发展历史 • 1984 第一个版本-Psion Organizer II • 8位OS • 支持汇编语言和OPL(Organizer Programming Language) • 1991 Psion Series 3 • 16位Organizer(SIBO) • OS内核为EPOC • 应用程序和引擎分离 • X86 • 销售了1.5M SIBO机器 北航分布与移动计算实验室
Symbian OS发展历史(续) • 1994发展称为32位可移植的操作系统 • 1996 成立了“Psion软件”公司 • 1997 第一个发布了Symbian OS版本 • 1998 Symbian公司成立: • Ericsson,Motorola,Nokia,Psion • 1999 Panasonic公司成为股东 • 销售2M Symbian平台设备 北航分布与移动计算实验室
Symbian OS发展历史(续) • 2000 • Symbian OS授权Sony和Sanyo • 发布了世界上第一款Symbian智能手机, Ericsson R380 • 2001 • 许可证授权Siemens和Fujitsu • 发布Nokia 92xx • 第一款Series 60 手机 7650 • Symbian OS v6.1 北航分布与移动计算实验室
Symbian OS发展历史(续) • 2002 • Siemens和Sony Ericsson变为新股东 • 许可证授权Samsung • Symbian OS v7.0发布 • Sony Ericsson发布P800 • 2003 • Symbian OS v7.0s发布 • Series 90, UIQ设备P908发布 • Samsung变为股东 • 2003前3季度销售 ~4M Symbian手机 北航分布与移动计算实验室
Symbian OS发展历史(续) • 2004 • 发展势头迅猛,前景看好 • Nokia 9500发布 • LG和 Arima获得许可证 • Nokia购买了Psion 的股权 • Symbian OS v8.0发布 • 多个新新设备发布 • Motorola • Panasonic 北航分布与移动计算实验室
Symbian OS授权使用者 北航分布与移动计算实验室
Symbian OS股份分配 北航分布与移动计算实验室
基础概念 • 线程 • 一个线程是执行的单元。同一个进程的线程共享地址空间。调度器(schceduler)负责对线程(而不是进程)进行调度 • 进程 • 内存保护的单元。一个进程不能访问其他进程的内存空间。一个进程有一个或多个线程 • 抢先式多任务 • 线程根据它们的优先级进行调度。优先级高的线程能够抢先优先级低的线程的CPU资源 北航分布与移动计算实验室
内存地址空间分配图 北航分布与移动计算实验室
基础概念 • 上下文切换 • 当调度器在不同的线程之间进行切换时,就需要进行上下文切换。 • 将导致内存表、寄存器内容改变 • 根据线程是否属于同一个进程而耗时不同 • 活动对象 • Symbian OS用来处理异步方法调用的特殊对象 • 使得进行合作的多个线程能够更加有效的利用资源 • 堆/栈 • 线程使用的内存空间 • 堆必须显式的申请和释放 • 栈空间由OS负责管理 北航分布与移动计算实验室
基础概念 • Leave • Symbian OS的错误处理机制 • 与Trap Harness一起使用 • 与标准C++中的catch/throw机制类似 • Panic • 致命错误 • 退出应用程序 • Panics要么由OS触发,要么由一个出现了严重错误的用户线程触发,如栈溢出 北航分布与移动计算实验室
Symbian OS体系结构 Symbian OS 北航分布与移动计算实验室
组件构架 北航分布与移动计算实验室
应用程序UI • 对于用户而言,Symbian OS就是一系列的视图 • Symbian应用程序UI包括: • 一个App UI对象,用户处理用户交互命令; • 由各种图形UI元素(Controls)组成的应用程序视图 (View); • 与设备无关的视图,负责将应用程序数据显示在控件中或打印出来。(可选) 北航分布与移动计算实验室
例子:Agenda视图 S90 UIQ S60 S80 北航分布与移动计算实验室
App UI由GUI控件构造 • GUI系统 • Uikon Core + • Qikon on UIQ, or • Avkon on S60, or • Ckon on S80 and S90 北航分布与移动计算实验室
UI例子 R380s TechView 北航分布与移动计算实验室
控件例子 TechView屏幕快照 北航分布与移动计算实验室
UI与图形 • Qi/Av/Ckon提供了UI参考实现的某些功能 • 标准的EIKON是标准控件的工具集 • CONE: CONtrol Environment • Apparc: Application Architecture Component,定义了应用程序结构 北航分布与移动计算实验室
GUI由图形库支持 • 图形基础 • 图形设备接口(GDI) • 设备无关 • UI图形 • 打印图形 • 所见即所得 • 字体、缩放、24位色 • 图形组件 • BITGDI:快速粘贴、缩放、旋转等 • Window Server共享屏幕 • 键盘与指针 • 保持所有应用程序的轨迹 • 发送重画请求 北航分布与移动计算实验室
数据管理 • 绝大多数的应用程序都具有分离的UI和引擎 • 引擎能够理解程序的核心算法和数据存储 • 而不知道数据的图形显示及UI • Symbian支持相同的引擎与不同的UI配合使用 • 客户/服务器的应用程序模式使得UI和引擎能够更好地分离 北航分布与移动计算实验室
支持库 • 能够被应用程序直接使用的复杂引擎 • Rich Text(ETEXT) • 文件存储工具(STORE) • 数据库工具(DBMS) • 音频 • 基本程序框架库(BAFL) • …… 北航分布与移动计算实验室
Base提供了访问硬件的接口 • Symbian Base主要包含了4个部分 • Symbian Base为其他所有组件提供了基础服务和编程框架 北航分布与移动计算实验室
Symbian Base • 用户可见的部分 • User Library • File Server • Kernel负责管理设备资源:CPU,内存,线程调度 • Device Drivers负责驱动硬件设备 • Device Drivers的代码包括两个部分,主要的部分在内核方,API部分在用户方 北航分布与移动计算实验室
E32映象 • E32是Symbian OS的核心部分 • Kernel Executive和User Library可以看作是一个函数集合(库); • Kernel Executive运行在特权态(privileged processor state) • Kernel server也是处于特权态的线程 • User Processes是应用程序和系统服务器 北航分布与移动计算实验室
通信 • 通信是Symbian组件联系和消息传递的基础。提供了通信协议中通用的操作接口,如接收数据、发送数据、建立连接、配置网络等。 • Socket是通信的端点,Symbian提供了类似Berkley socket的socket API • Symbian还提供了例如主机名解析、服务解析、协议信息等访问方法 • 可用的协议包括IrDA,PPP,SLIP,GPRS,Bluetooth,TCP/IP以及RS232 • 通常通信是在应用程序引擎层访问的 服务器:C32,ESOCK,ETEL,NETDIAL 北航分布与移动计算实验室
移植到新设备 • 如果将系统应用到同一个系列的其他产品(如同属于S60),几乎不用修改 • 如果移植到不同的系列(S60->UIQ等),则还要修改GUI以及应用程序UI及视图 • 如果新的设备包含了新的硬件,则可能需要修改Base部分 Qikon: UIQ Avkon:S60 Ckon:S80/90 跨系列 北航分布与移动计算实验室
Java • Symbian OS支持MIDP(CLDC1.1,MIDP2.0) • 及PersonalJava 北航分布与移动计算实验室
Java 优缺点 • 在2006年以前所有智能手机都支持 • 广泛运行在各种手机上 • 一次编写,多处运行 • 性能和功能一直在提高 • 性能问题 • 依赖虚拟机 北航分布与移动计算实验室
Java on Symbian OS • 第一个实现,1999,ER5 • JDK 1.1.4 • Personal Java, 2000, Symbian OS v6.0 • 内存占用少 • 提供了Javaphone API • J2ME,MIDP1.0, 2002, Symbian OS v7.0 • J2SE功能的一个子集 • 占用内存较少 • 提供了对MIDlet的支持 • MIDP2.0, Symbian OS V7.0s • UI 功能增强 • 安全 • 蓝牙 • 等等... 北航分布与移动计算实验室
问题 ? 北航分布与移动计算实验室
20 minutes break 北航分布与移动计算实验室