symbian开发入门:五小时Symbian开发入门



Symbian是以Nokai为首各手机厂商合伙开发个操作系统主要用于高端智能手机其开发语言为C可以使用Microsoft Visual C 6.0作为集成化开发环境看来虽然Symbian目标是跟微软SmartPhone较劲在采取手段和方法上却也是不拘微软更是暗暗叫苦谁让当时vc6设计这么开放结果被敌人拿去做武器了

本文主要针对是Symbian开发入门所以应该是非常简单毕竟Symbian开发语言是C并不会是用于手机操作系统就复杂了多少就象很多人直挂在嘴边J2ME也毕竟是Java语言并不会用在手机上就高深了多少5小时是我从对Symbian无所知到完成本文花在Symbian上所有时间

是用于手机操作系统所以我们研究Symbian先选定款手机再说Nokia60系列平台是个很不错选择Nokia根据手�钠聊淮笮『图鄹窀叩桶咽只�殖闪硕喔鱿盗校?0系列目前有两款手机:7650和365060系列采用Symbian os 6.1然后又根据手机屏幕特点对UI做了些修改这个被修改了Symbian就被称为Nokia60系列平台

所以入门步就是要下载S60SDK可以从Nokia开发论坛上下载:http://www.asia.forum.nokia.com/chinese/sch//series60.html看Nokia网站上最新是1.0不过下面又有个0.9中文版所以自然要下载这个0.9版了100多兆吧不想下可以跟Nokia要光盘估计他们应该很高兴给这个0.9中文版模拟器是中文版而且有支持GBK和UNICODE转换不知道1.0英文版有没有

下载完了就是安装个目录装就是了不过最好装在C盘上可能是考虑到Windows平台和Unix平台都能用缘故这套SDK在处理盘符和目录时比较弱智我当时SDK装到C盘自己放到D盘用vc6生成新项目就有问题经观察是盘符问题所以保险起见最好装在C盘有兴趣可以替Nokia测试另外还需要Java运行库和PerlSDK里也都带了不过他自带Perl在我XP下装有问题我下载了个最新ActivePerl才最终算是安装完毕从SDK安装来看这帮搞手机搞软件好像确实不太专业

刚才说了Symbian安装到了C盘在C盘Symbian目录下个6.1目录6.1目录下有两个目录:Series60和Shared还好从名字上能看出大体意思定注意Series60目录下Epoc32\BUILD目录这个目录以后要反复用到

接下来任务就是要编译下HelloWorld然后再运行下看看了首先得确认你系统装VC6了(最好能装sp3以上否则将来用到vc6时会报警)而且得把 C:\Program Files\Microsoft Visual Studio\VC98\Bin
 


放到你PATH里主要是用nmake.exe所以如果你有nmake不装vc6也可以看helloworld

找到helloword例子目录在我这里是 C:\Symbian\6.1\Series60\Series60Ex\HelloWorld\group
 


Symbian里个Project通常是按inc,src,group等目录组织group目录里通常放是项目文件所以编译时要先到这里用命令提示符模式进入刚才说那个目录下然后执行 bldmake bldfiles
 


这个命令会在group目录下生成个abld.bat批处理文件并且会在C:\Symbian\6.1\Series60\Epoc32\BUILD下生成C:\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\SERIES60\SERIES60EX\HELLOWORLD\GROUP这个深个目录并在最底层目录下生成堆.make文件(实在理解不了为什么要这么搞?他们是生产手机?)

虽然它生成了这么多东西但是我们不要管继续输入 abld build wins udeb
 


这个命令会编译我们最后在 C:\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB
 


目录下生成我们helloworld然后我们可以从开始菜单里运行模拟器debug版打开other目录就可以运行helloworld了

如果要在VC6里编译和运行HelloWorld在运行完bldmake bldfiles后运行abld makefile vc6则会生成vc6dsw文件位置在 C:\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\SERIES60 \SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS


看Symbian把这点事搞得这么麻烦也真是不容易

如果要直接在vc6里创建新项目要把 C:\Symbian\6.1\Series60\Series60Tools
 


目录下文件拷贝到vc6模板目录下才可以

折腾到这里可能得花2个多小时吧剩下两个多小时得看看文档了

先看看HelloWorld帮助文档理解下Symbian体系结构Symbian也是按照VC文档视图结构来组织有Application类CAknApplication有document.CAkndocument.有Frame类CAknAppUi有视图类CCoeControl等跟vc结构好像是差不多但感觉上它document.好像是做样子我还没看到这关于这些类之间关系在HelloWorld文档里有个顺序图非常好看便知

在看Symbian代码时感觉最不适应可能就是经常看到PushL和Pop还有就是很多都有L或LC后缀其实这是Symbian例外处理机制比如说我们定义了个指针给它分配了空间可是在使用它时候突然间出现了致命中止了那这个指针占用地址空间我们肯定是收不回来了在PC上编程这点可能问题不大内存那么多而且用不了多长时间就重启动了但是Symbian设计者可能认为这在手机上是不行所以对这点做了很多设计Symbian有个Clean up stack在使用指针时用PushL把指针压入栈中使用完后在用Pop弹出栈如果在中间可能导致崩溃时果真出现了问题那么Clean up stack可以通过该指针析构回收占用空间这些可能导致崩溃在Symbian里被称为可能Leave所以就在这些尾部加了个L而加LC后缀表明该已经在内部把指针用PushL压入clean up stack了时无需再用PushL直接完用Pop既可Clean up stack还提供了个PopAndDestroy就是弹出栈后再销毁指针顺便提正式有了Clean up stack机制所以Symbian在有些地方看起来跟VC不太比如说很多类构造都不用用NewL或NewLC构造分配地址时操作符也变成了(ELeave)上述内容可以看下Symbian编程基础中内存管理

Symbian自己定义了数据类型如果不想找麻烦还是乖乖用这些类型简单说整型有TInt和TU,其中又分为8位16位和32位如TInt8,TInt16,TInt32;文本类型是TText又细分为TText8和TText16但内部都是Unicode所以实际上内部引用应该都是TText16;bool型是TBool对应值有ETrue和EFalse;浮点型是TReal但又分为TReal32和TReal64;还有个引用类型TRefByvalue<T>是以模板类形式提供

Symbian是冲着更面向对象设计所以在我们常见串这块变化比较大在Symbian里叫descriptor最底层是两个抽象类TDesC和TDes,实际上TDes也是继承TDesCTDesC中C字母是常量constant意思即带C字母结束都是定义常量是不可以修改而不带C都有个最大长度限制是可以修改下面也是同样道理指针描述符是TPtrC和TPtr类似于Cchar *;缓冲区描述符(Buffer descriptor)是TBufC和TBuf类似于char ;堆描述符是HBufC类似于(char *)malloc(length+1)用法具体用时上述类型又分为8位和16位举个例子:

TBuf<64> buf;
CEikonEnv::Static->ReadResource( buf, R_EXAMPLE_VIEW_TITLE );
 


先定义了个最大长度是64缓冲区然后读入名为R_EXAMPLE_VIEW_TITLE资源

再例如:

TText8 *str = (TText8*)"示范窗口标题";
TPtrC8 source( str );
iInfoText = HBufC::NewL( source.Length );
TPtr16 ptr = iInfoText->Des;
 


定义个8位串str然后构造个指针常量source根据source长度再定义个16位指针步我这里没写但明显着应该是把gbk转换为unicode了

Symbian资源文件般是以rss为扩展名没有专门资源文件编辑器用户必须用记事本打开rss文件手工编写rss文件这个都有规则和方法参考例子不难编写自己资源文件需要注意点是如果资源文件里包含中文那么必须把文件另存为utf-8格式才可

入门相对来说是比较简单但精通就需要大量实践了



Tags:  symbian开发平台 symbian开发 symbian入门 symbian开发入门

延伸阅读

最新评论

发表评论