《深入BREW开发》——第五章 BREW简介

第五章 BREW简介
       在移动通讯领域,不可变化的应用程序抑制了消费者的使用兴趣,亟需一种可以实现类似Windows的图形化系统,在这个系统上,可以容易的开发应用程序,同时支持应用程序的安装和管理等功能。当然,少不了的要求是系统不能过于庞大,小巧似乎是移动通讯设备永恒的主题,对于软件也不例外。在这样的背景下,美国高通公司凭借其在CDMA2000平台上的霸主地位,开发出了BREW,并率先在CDMA2000的平台上使用。随着CDMA在中国的使用,BREW也走进了国人的视线,于2002年进入中国。在3G时代即将到来之时,BREW也被应用到了高通的WCDMA系统中,可以说BREW已经成为了高通平台图形化界面开发的主力军,不但现在再用,将来也还会用。
使用BREW官方的说法:BREW是由美国高通公司开发的、应用于无线通讯设备的、进行无线动态应用程序的下载和管理的跨平台的集成开发环境。这句话充分的说明了BREW的定位、功能和特性。BREW定位于无线通讯设备,简洁高效是无线通讯设备的必备特点;功能就是实现无线动态应用程序的下载和管理,这是它的主要功能,当然现在BREW的一个用途就是做为用户界面开发的平台,而且这个功能大有愈发流行之趋势;特性就是跨平台,由于BREW是使用C语言开发的,因此理论上在任何平台上都可以运行。最后的,BREW是一个集成开发环境,其中包含了PK(Porting Kit,BREW移植包)和SDK两部分,PK是集成在移动通讯设备代码映像里的,SDK是基于Windows的开发工具包。
       在这一章里,将主要介绍BREW SDK的安装及其使用等内容,关于PK部分在后续的章节中会有所介绍。
5.1 BREW是什么?
       BREW是Binary Runtime Environment for Wireless(无线二进制运行时环境)几个英文单词的缩写,从这几个单词中我们可以看到BREW的基本特性:
       1、二进制(Binary):BREW的API是一组二进制的库和组件的集合,生成的目标程序是可以直接在二进制环境下执行的CPU指令。这代表了BREW的应用程序是高效的,无须经过任何中间层的转换。
       2、运行时(Runtime):BREW的应用程序及扩展是在运行时发现,并根据需要载入运行的,区别于传统的“大映像”模式的程序方法。这不但代表提供了一个运行时的支持,同时也说明BREW采用了按需载入的方式,最节约系统资源。
       3、环境(Environment):一个开放灵活的针对无线通讯设备的客户/服务器环境。正是这样的一个结构,才彻底改变了手持设备上单一应用程序的尴尬局面。同时也正是因为BREW提供了一整套的解决方案,才培育出BREW应用程序的生存环境。
       4、无线(Wireless):特别针对无线通讯设备而设计的。这代表了他的要求是简洁高效,而且可以随时随地与网络联系,方便快捷。
5.1.1 BREW系统的组成
       整个BREW系统由开发平台、运行平台和服务器三个要素组成。开发平台就是我们所使用的BREW SDK,用来在PC端开发可以在运行平台运行的程序。运行平台就是指可以运行BREW应用程序的移动通讯设备上的BREW运行环境,它的核心是BREW的Porting Kit。服务器是连接开发和运行平台的一个“连接器”,开发平台所开发出的BREW应用程序放在服务器上,以便于运行平台的用户通过无线通讯网络下载应用程序,其核心是ADS(Application Download Server)服务器,ADS和其他的辅助工具合起来统称为BDS(BREW Distribution System)系统。在整个BREW系统中这三个要素缺一不可,没有了哪一个都会让BREW显得不完整。它们之间的关系如下图:

图5.1 BREW三要素之间的关系
       在图5.1中,Mobile Shop是BREW设备上管理应用程序下载部分的程序,意思是像一个商店一样可以买程序。Application Manager是管理下载应用的程序。这两个部分都属于BREW运行平台的一部分,而且是两个特殊的BREW应用程序。基本的流程就是使用BREW SDK开发的程序交给BDS,BDS经过内部处理后,会根据应用程序所支持的BREW设备,放在该设备的可下载程序列表中。BREW设备的使用者通过Mobile Shop来获得可下载列表,通过网络下载感兴趣的应用程序,同时支付相关的费用。
       BREW的三要素分别对应了BREW产业链里的三个主体,开发平台对应了BREW应用程序的开发者,服务器代表了运营商,运行平台代表了BREW设备的使用者也就是用户。用户通过BREW下载自己喜欢的程序,获得使用应用程序的乐趣,同时支付报酬。运营商通过对用户应用程序的下载获得收入,而开发者则从运营商的用户下载收入中获得报酬。
BREW设备制造商也是这个产业链中的的重要一环,为什么我的设备上要支持BREW呢?其实,原因就是我可以通过支持BREW提升设备的价值,从而提升利润空间。而且BREW还可以担当一个设备的用户界面开发平台的角色,可以简化设备用户界面的开发时间,从而减少开发成本。这是一个多赢的产业链,以此可以获得各方的支持。
5.1.2 BDS系统
       BREW三要素之间,BDS处于中心地位,而且也承担了许多关于BREW的幕后工作。BDS主要是由运营商主导的一个BREW下载的控制中心,其主要的任务是维持整个BREW产业生态链的生存环境。虽然BDS对于BREW技术本身没有多大的意义,但是,它确是BREW产业生存的核心内容。通过对它的了解,我们可以知道BREW的地位和用途,这样也可以反过来影响我们对BREW的理解。现在我们就来看看BDS系统的内部结构,如图5.2:

图5.2 BDS系统
       图中虚线左半部分属于由高通公司统一控制的部分,右半部分属于运营商控制部分。通常应用程序的开发者提交应用程序给高通公司,然后进入整个BDS系统的处理流程。首先应用程序进入测试系统,需要通过一个叫做True BREW的测试,之后进入认证系统进行应用程序的注册,然后将应用程序放置到BREW应用程序的管理系统中。最后,应用程序的开发者将通过BREW的计费系统,根据应用程序的下载次数获得报酬。在BREW设备的用户端,通过与运营商的ADS服务器联系,获得应用程序,同时支付相关的下载费用。系统会通过运营商事务处理系统和BREW事务处理系统的联系支付相关的下载费用给应用程序的开发者。这样就完成了整个BREW价值链之间的连接,BREW的整个生态环境通过BDS系统得以维持。
5.1.3 BREW设备系统架构
       BREW设备是整个BREW产业链中的终点,为整个产业输送资金血液,整个产业的生存都取决于BREW设备。BREW设备是BREW的运行平台,这个平台的核心是BREW Porting Kit,也就是支持BREW应用程序运行的软件库和资源的集合,是BREW赖以生存的土壤。BREW设备的系统架构如图5.3所示:

图5.3 BREW设备系统架构
       在BREW内部,分为OEM和AEE层。AEE层是BREW的接口层和内核所在的位置,应用程序就是通过一定的方法来调用AEE层的方法,来调用BREW函数库中的函数。OEM层是提供给BREW设备制造商用来实现BREW底层接口的层次,也就是说,一个平台上如果需要支持BREW,那么就需要将在这个平台上实现BREW OEM层的函数,通常这个平台与某种专用集成芯片极其操作系统有关,例如基于X86芯片架构的Windows操作系统和基于高通公司CDMA系列芯片的RTOS实时操作系统。OEM层的接口函数分为两种,一种是MIL(Mobile Interface Layer),另一种是CHIL(Chip Interface Layer)。MIL层对应的是专用芯片组外围设备的驱动,典型的设备是LCD显示屏。CHIL层对应的是芯片组功能函数,典型的功能如TAPI(呼叫处理)、SMS、Socket网络接口等。
       BREW的软件架构就是在这样的分层结构中,一层一层的封装,完成了AEE层提供给应用程序的一组API函数,应用程序位于这个层次的最顶层。如果您问我为什么BREW要分层的话,那么我会告诉您,这个原因和您写程序时要分函数的道理是一样的,就是因为程序变得多了,我们才将它们横向分成不同的层次,纵向分成不同的模块,每个模块又分成了好多的函数。软件的难点就在于这些层次的划分,模块的划分,函数和API的定义和划分。当然,现在我这样的介绍BREW的架构,目的是让您能够有一个总体的概念。您不必现在就细细的研究,可以在您已经对BREW有了一定的认识之后再体会这些架构的意义。
5.2 BREW SDK的安装
       BREW SDK运行于Windows2000/XP及其以后的操作系统中,BREWSDK的安装十分简单,就像是安装其他的Windows应用程序一样。我们可以免费的从高通公司的网站上获得BREW SDK,它目前采用的是在线安装方式,需要我们连接到高通的网站上才能下载安装,要求使用Internet Explorer 5.5及其以上的版本。高通公司的网址如下:
       https://brewx.qualcomm.com/brew/sdk/download.jsp?page=dx/zh/
       如果您不能进入这个页面,证明您还没有注册。这个注册十分的简单,只需要输入您的E-mail地址就可以了。注册页面可以通过如下连接方式进入:
       http://www.qualcomm.com
       安装完成后会增加BREW的环境变量和安装程序组,在这个程序组里面就是BREW SDK中的内容了,接下来我们就来看看BREW SDK的组成。
5.3 BREW SDK的组成
       BREW SDK中包含了一组工具和组件,应用程序开发者可以通过这些工具和组件高效、快速的开发出多种多样的应用程序,这些工具和组件包括:
       1、BREW AEE。BREW AEE是一个可扩展的面向对象的应用程序开发和执行环境,它提供了一个使用C/C++开发应用程序和共享模块的平台,同时它采用了类似Windows等操作系统的事件驱动程序运行方式。
       2、BREW模拟器(Emulator)。BREW模拟器是一个用来载入并测试我们所开发应用程序的前端图形用户界面(GUI)。模拟器中可以预载入很多设备的模拟文件,同时也可以自己定制相应的模拟设备,如屏幕大小,按键数量等。模拟器是对BREW AEE在设备上运行环境的一个模拟。
       3、设备配置器(Device Configurator)。从BREW3.0开始设备配置器从BREW标准的SDK中提取出来了,变成了一个独立的单元,如果需要使用这个功能的话,必须从高通网站上下载安装。通过它我们可以创建在BREW模拟器中使用的设备文件。
       4、资源文件编辑器(Resource Editor)。BREW应用程序中使用的字符串、图片等数据都是从资源文件中获取的,这个工具就是用来完成BREW资源文件编辑的。而且,由这个工具生成的资源文件,在Windows模拟器中与在BREW设备中的事一样的。
       5、MIF文件编辑器(MIF Editor)。BREW的每一个Applet都需要有一个MIF(Module Information File)文件,这个文件中包含了载入当前模块的必要信息。
       6、BREW头文件。这些头文件中定义了BREW的接口、使用的常量以及结构体类型等。这些头文件与在BREW设备上运行的PK中的头文件是一致的,否则在SDK中开发的应用程序就不能在BREW设备上运行了。
       7、Visual Studio插件。这些插件是用来建立BREW应用程序项目时,在Visual Studio中的向导,通过这些向导可以很容易的构建BREW应用程序的框架。从BREW3.0开始,Visual Studio向导已经不是BREW SDK安装包中的一部分,需要单独下载安装。在安装之前需要在系统中装有Visual Studio6.0或更新的系统。
       通过上面的这些工具之间交互使用,我们就可以方便的构建一个BREW的应用程序。它们之间的交互关系请看图5.4:

图5.4 BREW组件之间的交互
       从图中可以看出,BREW SDK中处于核心地位的是BREW模拟器,其他工具都是为它服务的。在这里需要特别说明的是,在BREW3.0之后的BREW SDK版本的软件中,设备配置器单独的从SDK中提取出来了,成为了一个叫做BREW Device Configurator的单独需要安装的应用程序。资源文件编辑器、MIF文件编辑器等实用工具也从BREW SDK中提取出来了,变为了一个叫做BREW SDK Tools的一个独立的安装包。除了BREW模拟器仍然在SDK中的安装包之内以外,其他的都需要独立的下载安装。这些内容在BREW2.x时代是全部都集成在BREW SDK安装包之内的。
       除此之外,还有一个叫做BREW Tools Suite的一个BREW工具集,这些工具属于BREW设备上的BREW辅助工具。如BREW Logger是与设备连接获取应用程序调试信息的,BREW Application Loader是用来将BREW应用程序从PC端下载到BREW设备上的。这些工具是在使用BREW设备时必不可少的。这个工具集也有一个单独的安装包,不过只有BREW授权用户才可以下载安装。
5.4 BREW SDK的目录结构
       安装完成后的BREW目录根目录SDK下主要包含以下几个文件夹:
       1、bin。在此目录下包含了BREW在Windows环境下运行的可执行文件和数据文件。在子目录“bin/DataFiles”下,包含了BREW模拟器使用的声音文件和声调数据库。在“bin/en”目录下包含了BREW系统本身在英文模式下所使用的资源文件,我们还可以指定其他语言的资源文件。这些资源文件根据所模拟的实际BREW设备的不同,而有不同的图片颜色,这就是目录下的“256Color”、“4Grey”和“mono”的含义。在“bin/Modules”目录下,包含了几个BREW模拟器使用的扩展DLL文件。在“bin/priv”目录下,存储了BREW 模拟器运行时,由每个应用程序产生的配置信息。根目录下就是BREW模拟器及其相关文件的所在了。
       2、bitmaps。在此目录中包含了BREW模拟器中所使用的图片。
       3、Devices。此目录中包含了BREW模拟器使用的设备模拟文件,其中可以包含多种设备文件。通常这些设备文件由各个BREW设备的OEM厂商提供,也可以自己使用设备文件编辑器自己创建,并在BREW模拟器中指定需要使用的设备文件。通常在BREW模拟器中运行的设备文件效果如图5.5。

图5.5 BREW模拟器中设备文件效果图
4、Docs。此目录中包含了BREW SDK的文档,我们可以从这里获得详细的BREW API的说明,基本的编程方法等内容。
5、examples。此目录下包含了SDK中附带的几个事例应用程序供开发者参考,其中涉及了通常开发BREW应用程序时的大部分问题,各位读者可以仔细研究一下每一个事例。
6、inc。此目录中包含了BREW的头文件,这些头文件中包含了BREW的接口定义,数据类型定义等。BREW应用程序就是通过使用这些接口定义来使用接口的。
7、src。此目录下包含了BREW应用程序通用的C语言函数,这些函数与模块的创建和应用程序的入口有关。在里面还有一些包含实用助手函数的源文件,通过这些函数可以简化一些接口的使用。
在BREW模拟器中运行时的目录结构与在实际BREW设备上的相同,而且对于文件名和路径的使用规则也相同。但是路径加文件名的长度则不同,在我们需要在实际设备上测试应用程序的时候,请查看BREW设备的数据文件(此文件随同BREW设备一起提供),确定长度是否符合规格的要求。在BREW环境中,使用的都是小写的字母做为路径和文件名,不能够使用大写或大小写混合的模式。
5.5 BREW环境
       BREW是一个可扩展的、面向对象的应用程序开发和执行环境,它使用C/C++语言进行开发。同时,BREW还被设计成了一个所见即所得开发系统。BREW支持应用程序和共享模块,应用程序和模块做为独立的DLL开发,运行时由模拟器载入。共享模块中可以包含功能模块,例如开发游戏时,可以将增强功能的图形接口进行重新封装,做为应用开发中的接口使用,这些扩展接口可以同BREW标准接口一样在应用程序中使用。
BREW提供了多组不同功能对象(接口)和功能,这些对象和功能统称为服务,这些服务包括:
       1、提供支持简单的基于事件的处理方式的应用程序服务
       2、提供访问文件系统、网络服务、内存和显示的核心服务
       3、提供增强的图形功能、多媒体、声音和GPS定位等增强服务
       4、提供诸如支持浏览器开发的综合服务
       在这些不同功能和级别的服务中包含了BREW的多种类型的接口,如IShell接口负责应用程序的控制和管理等功能;IDisplay负责显示的控制和屏幕刷新等功能。BREW的每一个接口使用一个32位的接口ID表示,这个接口ID叫做Class ID。这些Class ID都是由高通公司统一管理的,如果需要公开自己开发的接口,那么必须使用高通的注册网页申请一个ID,申请后这个ID就会保留下来给我们自己,不会再分配给其他的人。如果我们的接口只是做为本地测试使用,那么我们可以使用自己定义的接口Class ID,需要注意的就是不要与现有接口的ID相同就可以了。每一个BREW接口都是继承自一个叫做IBase的接口。
       在使用一个接口之前,必须首先使用ISHELL_CreateInstance()接口函数创建接口实例。IShell的接口指针是通过调用ISHELL_CreateInstance()接口的当前应用程序,或接口的入口函数传递进来的,不需要创建。创建实例后,这个接口实例的指针将通过ISHELL_CreateInstance()方法传递回来。对于一些特定的接口不是通过这个方法创建的,而是通过其他方法直接返回的,如IImage接口就是通过ISHELL_LoadImage()方法获得的。
       BREW的应用程序也是使用一个32位的ID来表示的,这个ID也叫做Class ID,它与接口的Class ID没有什么区别,而且是统一分配的。如果希望我们的应用程序能够分发给用户下载,除了要经过测试以外,您还必须申请全球唯一的Class ID,就像公开接口一样。要获得这样的ID,我们必须成为一个授权的开发者。关于如何成为一个授权的开发者请到高通的网站上察看详细的内容。
5.6 BREW的优缺点
       BREW平台从问世之初,就由于它是由国际技术巨头高通公司的推出而备受瞩目,那么,是不是这种“血缘”关系才让它如此的引人注意呢?答案当然是否定的,除了血缘关系之外,BREW也有很多自身的优点:
       1、BREW提供了一种高效的RAM内存和固定存储器的管理方式,采用了按需载入的方式,所需资源最少。
       2、BREW应用程序的开发支持类似Windows的基于事件的处理机制,使得应用程序的开发更加容易。
       3、BREW提供了资源文件的方式,可以容易的进行多语言版本应用程序的开发。
       4、所有的文本采用宽字符方式,每一个字符占用两个字节。同时还支持由OEM指定的文本格式。
       5、由于在BREW和底层设备驱动和数据结构之间进行了良好的封装,因此,BREW应用程序的开发者不必关心底层平台的数据结构和设备驱动。
       6、BREW应用程序的每个模块可以独立开发,最小化了开发时间并且避免了集成问题。
       7、模块在二进制层次继承,简化了增加模块到BREW平台的任务。
       8、BREW应用程序支持直接接收特定短消息,利用它可以开发出交互性的应用程序。
       9、BREW应用程序可以控制全部核心接口和资源,如显示、声音等。
       当然了,任何系统有优点,同时也会有缺点,BREW平台也是一样的。
       1、BREW平台的接口实现方式决定了它处理异常的能力先天不足,如果使用了一个已经被释放的接口指针,则系统很容易崩溃。
       2、当前的BREW接口封装的不够完善,有些功能使用现有的BREW接口无法进行控制,有些状态也无法获取。例如,对于具有翻盖外观的通信设备来讲,BREW的API中没有可以获得当前状态的方法。
       3、部分数据类型封装不够严谨。例如当前关于通话事件中各种通话装态仍然在使用底层的定义,而没有在OEM层封装成BREW所有的IPhone事件。
       人无完人,期望BREW平台可以在今后的版本中更加完善。
5.7 小结
       在本章中概述了BREW系统的组成以及BREW产业链的三要素:开发平台、运行平台、服务器。以及它们所对应的关切者开发者、用户和运营商。接下来介绍了BREW的基本层次结构,这样的层次结构使得BREW出色的完成了对底层平台的封装,并且最小化了移植BREW平台的工作量。还介绍了BREW SDK的目录结构,运行环境等内容。同时,也在本章中第一次见识了BREW模拟器的样子。最后介绍了BREW的优缺点。总之,本章的目的就是让我们能够对BREW有一个初始的概念。
思考题
1、BREW三要素是什么?哪一个处于中心地位?
2、BREW SDK有哪几个组件?它们都有什么作用?

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Gemsea/archive/2007/02/25/1513655.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值