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