Symbian入门指南第一章:Symbian系统简介

来源:百度文库 编辑:神马文学网 时间:2024/04/29 20:43:54
Symbian入门指南第一章:Symbian系统简介2005.06.30  来自:移动技术网  martyn
第一篇:SymbianOS 简介
1.1 SymbianOS的六大特性
看到这里,大家一定会有所思,这难道又是一篇垃圾文?请大家不
要急着唾弃我先,看看再说哦。
1、操作系统是运行在ROM上的
2、系统是运行在电池驱动的设备上的
3、完全是面向对象的
4、基于组件的设计
5、被设计成确保用户的数据不会丢失
6、简单的UI系统
Symbian 是真正的微核操作系统,所谓“微核”,就是说操作系统
只有很小的一部分是运行在最高优先级的,其他的功能都是以Client-
Server的方式提供。下面是Symbian系统的内部结构图:
应用层:Shell, OPL, 及其他应用程序
=================================================================
系统层:Dialogs, Menu, Toolbar, Icons, Resources, JavaVM,
Grid, Rich Text, Edit Control, List Control, Application Framework,
Jave Class Libraries.
=================================================================
服务层:Window Server, Process Server, Socket Server, Sound Server,
Wireless Server, Database Server, File Server, Alarm Server, Comms
Server, 以及无线协议
=================================================================
内核:euser.dll, ekern.exe, 服务控制(supervisor server),
HAL(设备抽象层)
=================================================================
驱动程序层:包括音频驱动,显示驱动,MMC驱动,键盘驱动,串并口驱动
,DSP驱动,时钟控制器驱动等等
1.2 Symbian UI系统命名
使用过Symbian UI系统的同志们一定都听说过一些奇怪的名字,比如:
Eikon, Cone, Apparc, Avkon等等,这么多kon字辈的东东到底有什么关系呢?
首先,大家要明白,在kon字辈的同志们中,Cone和Apparc是老大,其他kon们
都是从这两个kon继承来的。
先说说Cone。Cone就是Control Environment(控制环境)的缩写。Cone是Client
端的控制环境。这个东东定义了Graphic UI中一些基础的东西,没什么代码,
但是是一种Design pattern(俺也用用这洋词儿)。
Apparc是Application Architecture的缩写。Application architecture定义了
Symbian应用程序的框架。主要是定义了CApaApplication, 以及CApaDocument
这两个类,也就是d&v结构。然后还定义了程序启动以及数据控制流等等。
kon们其实就是控件组,关于控件的用法以后再说。Series60用的是Avkon,
Series90用的是Ckon,大家可以理解为不同的kon是专为不同屏幕大小的手机设
计的不同的控件库。
以Series60为例:
Avkon
=====
Eikon
=====
Uikon
============
Cone + Apparc
Symbian入门指南第二章:Symbian开发环境的建立以及目录结构的说明2005.06.30  来自:移动技术网  martyn
第一篇:Symbian开发环境的建立
这里我不介绍《正确建立Symbian开发环境的方法Nokia版》这贴中的
部分,我想说说为什么我要强调大家都使用Nokia建立Symbian开发环
境的道理。
1.1 为什么要建立虚拟分区
我希望大家结合着《正确建立》一文读这篇文章。上文中强调大家一
定要写一个bat文件,其中包括这么几行:
@echo off
subst z: d:\SymbianDev\S90\v11
subst y: d:\SymbianDev\S90\v12
subst x: d:\SymbianDev\S60\v21
subst 是一个Windows命令,就是要把一个硬盘的目录映射成一个虚拟
分区。这样做的好处是可以方便的实现多个开发环境并存,并且是设
定变得与开发环境的物理存储无关。这里我又要提到另一个问题,有
的人,甚至书上说,EPOCROOT应该这样设定:
EPOCROOT =
d:\SymbianDev\S90\v11;d:\SymbianDev\S90\v12;d:\SymbianDev\S60\v21
大家这么做了,好像也没什么问题。也可以进行开发。其实错了,这样
的设定说明你根本不懂Symbian开发环境的基础知识,这样的书大家也
可以不必看了,烂!
正确的设法是:
EPOCROOT = \
大家知道 \ 的含义是一个分区的根目录。具体那个分区呢?我们现在
不指定等到真正运行和编译的时候,系统会自动和你当前的SDK分区匹
配的。例如:如果你在S60的分区下编译,EPOCROOT就会被解释为x:\;
如果在S90的分区下编译,系统会把 \ 解释成y:\或z:\
对了,大家是怎么指定调试时候的模拟器的?记得那个
Please specify the executable file for the debug session么?
你添的是什么?难道还是:
d:\SymbianDev\S60\v21\epoc32\release\wins\udeb\epoc.exe么?错!
所有的模拟器的位置只有一个,那就是直接填入:
\epoc32\release\wins\udeb\epoc.exe
同样的用法还可以用在很多方面,比如作package等等。
第二篇:Symbian SDK的目录结构和含义
最后简要介绍一下目录的结构。Symbian SDK的目录的特点就是一个字,
多!
大家首先要熟悉的是BUILD目录,这个目录是专门为存放各种不同平台的
工程文件的。大家执行了abld makefile vc6或者abld makefile cw_ide
之后就会相应的在这个目录下生成ms vc6或者cw的工程文件,注意,cw的
工程文件是一个xml。要在cw里面通过import...导入。
第二个目录是data目录。这个目录存储编译之后UI程序的资源文件rss。
Series 90 SDK一般把rss拷贝到\epoc32\data\z\system\apps\工程目录名
中。大家如果想使用MMC卡测试你开发好的程序,应该从上述目录中拷贝
*.rss与你的*.app一同放到MMC卡中的\system\apps\工程目录名 中。
第三个目录是gcc这个目录就不多说了。
第四个目录是include这个目录大家一定再熟悉不过了,不知道大家有没
有发现,系统在build UI程序的时候会把xxx.rsg文件放到这个目录下,
这个文件中的东东大家用UE看一下就知道了。还有一个子目录就是
include 下面的libc。这里面封装了标准C的兼容函数库。想使用qsort么?
想使用strcmp么?快到\include\libc来吧!!
第五个目录是release。这个目录如果你还不知道的话,那就。。。。。
这个目录主要存放各个平台相关的模拟器和库。Windows下模拟器的位置:
\epoc32\release\wins\udeb\epoc.exe
以及
\epoc32\release\wins\urel\epoc.exe
同时编译之后的可执行文件也会被存放在armi,thumb的目录下。
第六个目录是wins这个目录不知道大家有没有感觉,我是经常光顾的。 这个
目录下面一般只有c一个目录。这个目录表示手机的存储器。S90 的 MMC 卡
目录是d。可是你就算建了个d目录,你的S90 模拟器也认不出来,你还需要
改data目录下的一个epoc.ini文件。加入下面这行:
_epoc_drive_d \epoc32\wins\d
然后S90的模拟器就可以认出d盘,也就是MMC卡了。
Symbian入门指南第三章:深入介绍Helloworld例程2005.06.30  来自:移动技术网  Martyn
第一篇:Symbian UI 程序框架
Symbian UI 程序的框架基本上是统一的。大家只要学习
一种简单的框架就可以进行大部分的Symbian开发了。我
这里先介绍一个概念。
1.1 MVC 架构
Symbian 基本上使用MVC架构来搭建控件。Symbian UI程
序设计主要讲究的也是如何使用控件。而Nokia没有做好
的一个方面就是有关UI Control的帮助太少了。SDK提供
的帮助里面根本就没有资源文件的写法。这一张里面我会
介绍一些控件例如Dialog,Text Listbox等等资源文件的
写法。同时也会告诉大家应该到SDK的哪里才能找到这些
资源的描述。
但是首先,我先介绍一下MVC架构。MVC并不是个新东西。
他是Model - View - Control的缩写。在以前smalltalk
中就已经开始用了。其主要的想法是在构造类的时候把
显示,控制以及模型分开。Symbian对其作了小的改动。
在Nokia提供的Series 90控件组(就是CKON,以后我再提
CKON的时候大家要知道指得是S90的控件)中Model主要
用来存储数据,以及封装对数据的操作。也就是对于对象
实体的操作。View当然是负责显示。Control被抽象成一个
或多个纯虚类(Mixin)其它对象通过重写虚函数来得到
对象内部的状态以及控制对象。Series 90的Text Listbox
类CEikTextListBox很好的说明了这个构架。比如你可以
调用CEikTestListBox中的Model()函数得到一个Model的指针,
然后你就可以访问其中的CDesArrayFlat数组了。
1.2 Symbian的工程文件
1.2.1工程引导文件bld.inf
这个东东其实就是一个脚本,它告诉Build环境在做
Build之前需要准备或知道一些什么东西。最普通的
一种写法是:
PRJ_MMPFILES
project.mmp
这是告诉Build环境:你马上要处理的工程文件名字
叫project.mmp。大家如果做比较复杂的程序可能
需要同时Build所有的库,那么就在这里把你所有需要
Build的工程都列出来:
PRJ_MMPFILES
project.mmp
project_lib1.mmp
project_lib2.mmp
另外的一个常用的标记是PRJ_PLATFORMS这个东东
告诉编译环境,以下的这些平台(Targets)是需要
编译的。你可以在这个标记的下一行列出需要的平台
例如:
PRJ_PLATFORMS
WINS ARMI WINSCW
或者直接用
PRJ_PLATFORMS
DEFAULT
注意,如果你不作PRJ_PLATFORMS这个标记其效果
等于PRJ_PLATFORMS DEFAULT,所以这个不是必须
的。
第三个常用标记是PRJ_EXPORTS这个东西告诉编译环境
在编译之前需要把哪些文件先拷贝到指定位置。我举个
简单的例子大家就知道什么意思了。比如你的工程中
需要include一个第三方的*.inl的文件,那么如果编译之
前这个文件不存在就会编译不过。你可以这么写:
PRJ_EXPORTS
.\nk_set.inl \epoc32\include
那么在你编译的时候,一个Perl脚本会先把你工程目录下
的nk_set.inl文件拷贝到\epoc32\include目录下,然后再
编译工程。
大多数工程只要用这三个标记就可以了。还有一点小技巧
这个bld.inf文件中是可以写#if #else 等等东西的。
比如:
#if defined(WINS)
..... 注意没有{}
#else
.....
#endif