简单认识一下S60系统

本来打算买个Windows Mobile的手机来学习一下开发(因为用Vs2005用得多了),谁知阴差阳错地搞了台Symbian S60手机,还好,可以用VC来开发,以前也学过,重新温习一下也能将就!不过,还是先认识一下S60系统再说吧

 

1、Symbian系统所支持的文件格式

Symbian系统所支持的有:

  *.sis(标准的Symbian OS操作系统的安装文件)

  *.app(一般都为解密文件)

  *.jar(一般为Kjava的软件或游戏)

  *.exe(最多的是注册器,只要输入自己手机的IMEI号码,就会生成一串数字,把它输入到手机里,那个软件就是完全版的了)

  *.jad(安装路径文件,现在一般都没有

  *.txt(多为软件介绍和使用方法,E文的)

  *.html(多为软件介绍和使用方法,还有其软件的主页链接)

  *.pdf(多为软件介绍和使用方法,E文的)

  *.nfo(一般是解密者的介绍,可用手写版打开,有时里面会包涵软件的注册码)

  *.bk1(软件备份数据,里面会包涵软件的注册信息)

  *.rsc(操作系统的程序资源文件,现在一般是汉化文件,利用SeleQ或FileMan把此文件将源文件覆盖,即可完成汉化)

  现在最常见的软件格式是SIS和JAR,首先SIS,在安装过程中,系统吧它装在C(E):\system\apps\中(这相当于电脑的 “Program Files”),并在c(e):\system\install\里生成一个反安装文件,而且在“程序管理”中见到它的反安装程序图标是橙色的,点选查看属性能看到是“Symbian OS”格式。而JAR文件的解压缩后并不直接安装在C(E):\system\apps\中,而是先安装在C(E):\system\MIDlets\ 中,然后再在C(E):\system\apps\Registry\中(相当于电脑的开始菜单文件)创建一个相应的启动图标,而且在”程序管理“中见到是蓝色的,点选查看详情能看到“Kjava”格式。

  手机装软件或者游戏不过是很简单的解压缩并拷贝文件到相应目录的过程。一般都先将安装文件传输到手机(或存贮卡)里,然后在手机里执行安装程序。但是 Symbian系统装这些程序时是要先把文件压解到手机的存贮空间,然后再将解压出来的文件拷贝到你设置的安装路径,一般最常见的问题就出现在这里:在安装游戏或者软件时系统总是提示存贮空间不足,可是查看一下自己手机上的MMC卡使用情况,却明明还有很多可用空间。这令许多新手百思不得其解。因为在压解过程中,如果你的手机机身存贮空间不足,就会导致解压过程无法正常完成,系统会跳出“空间不足”的警告。就算你的MMC卡里还有上百兆甚至上G的空间也没有用。

 

 

2、C盘文件详解

C:\system\Apps
C:\system\Apps\Applnst\Appinst.ini 这个文件是用来记录安装软件的信息,随着软件安装的增多而增大
C:\syste m\Apps\PhotoAlbum\PhotoAlbum.ini 图片浏览器的初始化文件
C:\system\Apps\profileApp\dbProfile.db手机的数据库文件,用来记录安装软件的信息,随着软件安装的增多而增大。
C:\system\Apps\SystemExplorer 这个文件夹就是SeleQ软件的安装文件夹
C:\system\bootdata\ 手机导入数据文件夹。文件夹中的CommonData.D00 FirstBoot.dat HALData.dat LocaleData.D01 SIMLanguage.dat这5个文件大小固定不变的,分别为17b、0b、16b、70b、4b。其中SIMLanguage.dat是记录SIM 卡语言种类的。
C:\system\Data这个文件夹记录程序初始化或运行时的数据的
C:\System\Date\AHLE互联网
C:\system\Data\cbs 这个文件夹下有两个dat文件,其中cbs0.dat的大小不变,为71b
C:\System\Date\midp2未知意义,每次开机后都有小许的增大。重命删除,开机自动会生成回
C:\system\Data\saveddecks 这个文件夹默认为空,作用与手机服务商的网络有关。
C:\system\Data\wapstore 这个文件夹主要用来存储用WAP上网时的一些设定和网页缓存
C:\system\Data\Applications.dat程序数据记录
C:\system\Data\backgroundimage.mbm保存在系统中的墙纸图片文件。
C:\system\Data\Bookmarks.db 书签数据文件,用来记录WAP地址。
C:\system\Data\CACerts.dat 安装各种软件的证书文件
C:\system\Data\Calcsoft自带的计算器
C:\system\Data\Calendar 手机自带的日历
C:\system\Data\CLOCKAPP.dat 时钟设定存档文件
C:\system\Data\CntModel.ini 电话本初始化文件
C:\system\Data\Contacts.cdb 电话本数据文件,随着电话本记录的增多而增大。
C:\system\Data\Logdbu.dat手机的通讯数据文件,包括来电,去电,通话时间,GPRS流量等等。
C:\system\Data\medialPlayer.dat多媒体播放器RealOne播放机。
C:\system\Data\mms_seting.Dat彩信设置
C:\System\Date\music.db 音乐播放器
C:\system\Data\Notepad.dat记事本
C:\system\Data\Pinboard 捷径
C:\system\Data\SavedDecks.db 手机服务商的网络数据文件
C:\system\Data\smsreast.dat smssegst.dat手机的短信设定存档文件
C:\system\Data\Template.n01手机短信信模版文件
C:\system\Data\UnitConverter.int手机自带的单位转换器初始化文件
C:\system\Data\VoCoSModelData.db 和媒体声音有关的数据文件
C:\system\Data\wapreast.dat WAP设定存档文件,初始化大小为59b。
C:\system\favourites 收藏夹,初始化为空。
C:\system\favourites\xx.lnk 快捷键增加的文件位置及名称
C:\system\install\文件夹中还会有你安装的软件的sis记录文件,
C:\system\install\install.log 在手机中安装软件的日志文件。
C:\System\libs 软件连接文件和库文件,DLL文件
C:\system\Mail 短信息存储文件夹。
C:\System\MIDIets JAVA程序文件
C:\system\Mtm\信息设置目录
C:\System\recogs 存放关联方式文件的目录
C:\system\Schedules\Schedules.dat 待办事宜数据文件。
C:\system\Shareddata手机功能设定文件,包括手机设备设置、通话设置、连接设置、时间设置、网络设置等。更改Tools-Settings里面的设置后,这个文件夹里的文件就会发生变化。
C:\System\SKINS手机主题
C:\System\Temp\ 存储临时文件的文件夹,初始化为空。
C:\System\System.ini 系统初始化配置文件。
C:\Sytstem\Backup.xml 备份数据

 

 3、Symbian开发入门

    Symbian是一个操作系统,是以Nokai为首的各手机厂商合伙攒的一个操作系统,主要用于高端的智能手机。其开发语言为C++,可以使用Microsoft Visual C++ 6.0作为集成化的开发环境,看来虽然Symbian的目标是跟微软的SmartPhone较劲,在采取的手段和方法上却也是不拘一格,微软更是暗暗叫苦,谁让当时vc6设计的这么开放,结果被敌人拿去做武器了。   本文只是为了Symbian的开发入门,所以应该是非常简单的事,因为毕竟Symbian的开发语言是C++,并不会因为是用于手机的操作系统就复杂了多少,就象很多人一直挂在嘴边的J2ME也毕竟是Java语言,并不会因为用在手机上就高深了多少一样,只能是更简单。5小时是我从对Symbian一无所知到完成本文化在Symbian上的所有时间。
  因为是用于手机的操作系统,所以我们研究 Symbian的话,先选定一款手机再说。Nokai的60系列平台是一个很不错的开始,Nokai根据手机的屏幕大小和价格高低把手机分成了多个系列, 60系列目前有两款手机:7650和3650。60系列采用Symbian os 6.1,然后又根据手机屏幕的特点对UI做了一些修改,这个被修改了的Symbian就被称为诺记的60系列平台。
所以入门的第一步就是要下载S60的SDK
可以从Nokai的开发论坛上下载:http://www.asia.forum.诺记.com/chinese/sch/main/series60.html
看Nokai网站上最新的是1.0,不过下面又有个0.9 中文版,所以自然要下载这个0.9版了。100多兆吧,不想下的话,可以跟Nokai要光盘,估计他们应该很高兴给吧。这个0.9中文版的模拟器是中文版的,而且有支持GBK和UNICODE转换的类,不知道1.0的英文版有没有。
  下载完了自然就是安装,选一个目录装就是了,不过最好装在C盘上,可能是考虑到Windows平台和Unix平台都能用的缘故,这套SDK在处理盘符和目录时比较弱智,我当时SDK装到C盘,自己的程序放到 D盘用vc6生成新项目就有问题,经观察是盘符的问题。所以保险起见的话,最好装在C盘,有兴趣的可以替Nokai测试一下。另外,还需要Java的运行库和Perl,SDK里也都带了,不过他自带的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,则会生成vc6的dsw文件,位置在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构造,分配地址时的操作符new()也变成了new(ELeave)。上述内容可以看一下Symbian编程基础中的内存管理一节。
  Symbian自己定义了一堆的数据类型,如果不想找麻烦的话,还是乖乖的用这些类型的好。简单说一下,整型有TInt和TUint,其中又分为8位的,16位的和32位的,如TInt8,TInt16, TInt32;文本类型是TText,又细分为TText8和TText16,但内部都是Unicode的,所以实际上内部引用应该都是TText16; bool型是TBool,对应的值有ETrue和EFalse;浮点型是TReal,但又分为TReal32和TReal64;还有一个引用类型 TRefByvalue,是以模板类的形式提供的。
  因为Symbian是冲着更面向对象设计的,所以在我们常见的字符串这块变化比较大,在Symbian里叫descriptor。最底层的是两个抽象类TDesC和TDes,实际上TDes也是继承的 TDesC,TDesC中的C字母是常量constant的意思。即带C字母结束的都是定义的常量,是不可以修改的,而不带C的都有一个最大长度的限制,是可以修改的,下面也是同样的道理。指针描述符是TPtrC和TPtr,类似于C++中的char *;缓冲区描述符(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格式的才可。

 

posted @ 2008-07-19 12:34  元宝  阅读(847)  评论(0编辑  收藏  举报
我最爱的地质软件?!……