Symbian是一个操作系统,C++是其原生编程语言。它为软件开发人员提供了操作系统的全面功能。当然对C++的熟悉程度直接影响了开发人员对其的使用,因为Symbian OS下的开发会广泛运用C++的高级特征和面向对象设计。我们暂且认为大家对C++都有了相应的了解,而且已经亲身经历了某些项目开发,因此,以后文中如使用到C++范畴中的概念词汇,不会对其做特殊解释说明。
1. 了解Symbian OS
目前,市场上的Symbian Os手机都是基于3种针对C++程序员开发的用户界面:Nokia Series 80、60以及UIQ(当然还有几年之前的当红明星s40)所有这些都支持Java编程,因此,C++也就不显得那么孤单。基于Series 60平台的机器像Nokia 3650、7650,Nokia 9210则使用的是S80平台,这类手机显著的特点就是具有完整的手机键盘,完全可以模拟pc操作;UIQ平台的手机一般屏幕比较大,而且可配备一数字小键盘,在移动时可使用触笔交互,像Sony Ericsson P800。说这么多,其实无论是什么手机平台,关键之处就是了解Symbian下开发的主要特征。以下慢慢逐一道来
2. 准备工作
下载相应的sdk:可以从Nokai的开发论坛上下载http://forum.nokia.com.cn/sch/index.html。
可以根据自己的需要选择下载sdk的版本。
使用Symbian OS还需要两个工具就是Java的运行库和ActivePerl,这两个工具也有版本的区别,需要你在下载之前了解相应的版本需求。
我所使用的如下(下面文中如未加特殊声明都是在此环境下开发)
window 2000 sp4、vc++6.0
------------------------------
Java2Run Time.SE v1.3.1 v1.4.1_02
ActivePerl build 518 5.6.1
Series 60 SDK 2.1 2.2Beta
------------------------------
注意:安装顺序本人一般采用Java runtime/ActivePerl/Series 60sdk,而且需要注意的是ActivePerl这个编译工具最好装在C:/下(一般我采用的就是不论系统盘是什么,所有的都装在C:/下,一来比较容易管理,二来省去了很多不必要的麻烦)!
安装完毕,接着,我们就来熟悉Symbian的各个目录吧。
首先在使用过程中,感觉Symbian OS Sdk处理盘符和目录时实在不便,所以在开发过程中很多麻烦都来源于盘符和目录问题。因为我采用的开发工具是VC++6.0 英文版,所以为了开发方便,可以这么做:将目录../Symbian/7.0s/Series60_v21_C/Series60Tools/appwizard中的文件拷贝到VC的安装目录../Microsoft Visual Studio/Common/MSDev98/Template中,这样做的好处就是在你使用VC时,当使用new命令新建一个项目时,Series 60就会出现在Appwizard对话框的项目栏中。
下面我们来了解一下一个Symbian OS项目的目录结构:
大家首先要熟悉的是BUILD目录,这个目录是专门为存放各种不同平台的 工程文件的。大家执行了abld makefile vc6或者abld makefile cw_ide 之后就会相应的在这个目录下生成ms vc6或者cw的工程文件,注意,cw的 工程文件是一个xml。要在cw里面通过import...导入。
第二个目录是data目录。这个目录存储编译之后UI程序的资源文件rss。 Series 70 SDK一般把rss拷贝到/epoc32/data/z/system/apps/工程目录名 中。大家如果想使用MMC卡测试你开发好的程序,应该从上述目录中拷贝 *.rss与你的*.app一同放到MMC卡中的/system/apps/工程目录名 中。
第三个目录是gcc这个目录下存放的大多都是系统需要的资源,像一些.lib和.h,这个一般我们不需要过多关心。
第四个目录是include这个目录下多数都是系统的头文件,当然,系统在build UI程序的时候会把xxx.rsg文件放到这个目录下, 这个文件中大家用UE看一下就知道了。还有一个子目录就是 include 下面的libc。这里面封装了标准C的兼容函数库。
第五个目录是release。这个目录主要存放各个平台相关的模拟器和库。Windows下模拟器的位置:
/epoc32/release/wins/udeb/epoc.exe
以及
/epoc32/release/wins/urel/epoc.exe
同时编译之后的可执行文件也会被存放在armi,thumb的目录下。
第六个目录是wins下面一般只有c一个目录。这个目录表示手机的存储器。S70 的 MMC 卡 目录是d。可是你就算建了个d目录,你的S90 模拟器也认不出来,你还需要 改data目录下的一个epoc.ini文件。加入下面这行:
_epoc_drive_d /epoc32/wins/d ,然后S70的模拟器就可以认出d盘,也就是MMC卡了。
接下来是工程目录,Symbian OS下工程目录和VC里工程的目录结构不同,看下面的示例及介绍:一般说来项目中一般有如下folder
helloworldbasic
├─group 通常放组件定义文件、项目定义文件,编译时一定来这里
├─inc 工程项目的头文件
├─sis .pkg,用于制作安装包
└─src 工程项目的源文件,.cpp
对Symbian OS下工程的管理一般都是在上述文件夹中完成的。比如:
编译工程:首先在vc里新建一个symbian s60项目,假设是c:/sample,打开命令提示符,进入到目录c:/sample/group中,键入命令
bldmake bldfiles
这个命令会在group目录下生成一个abld.bat的批处理文件,并且会在../Symbian/7.0s/Series60_v21_C/Epoc32/BUILD下生成相应工程的文件夹里面还有很多make文件,接着键入
abld build wins udeb
../Symbian/7.0s/Series60_v21_C/Epoc32/Release/wins/UDEB目录下生成我们的sample,当运行模拟器时,我们的工程就显示出来了。这个命令里wins代表的是windows系统下模拟应用,如果是真实Symbian设备,这个参数还可以是armi或thumb;最后一个udeb代表Unicode-debug版当然urel就是Unicode-release版了。
最后键入命令
abld makefile vc6
这个命令会产生vc6使用的.dsw和.dsp文件,这样我们就可以在vc++6.0下进行编码了。
-----------------------------
说了一堆,感觉要说的实在太多,由于比较零乱,所以大家要自己认真尝试理解。一次也没有办法说完,以后我会陆续添上余下部分。请多多支持!
--风小云原创,转载请标示出处