Brew知识简表

原创 2007年09月14日 17:29:00
BREW展示给我们的是从一个上到下的二进制环境。
Brew现在已经成为了高通平台图形化界面开发的主力军。
BREW是由美国高通公司开发的、应用于无线通讯设备的、进行无线动态应用程序的下载和管理的跨平台的集成开发环境:BREW是由美国高通公司开发的、应用于无线通讯设备的、进行无线动态应用程序的下载和管理的跨平台的集成开发环境。
BREW定位于无线通讯设备。
功能就是实现无线动态应用程序的下载和管理,这是它的主要功能,当然现在BREW的一个用途就是做为用户界面开发的平台,而且这个功能大有愈发流行之趋势。
特性就是跨平台,由于BREW是使用C语言开发的,因此理论上在任何平台上都可以运行。
BREW是一个集成开发环境,其中包含了PK(Porting Kit,BREW移植包)和SDK两部分,PK是集成在移动通讯设备代码映像里的,SDK是基于Windows的开发工具包。
Brew是什么,代表什么意思:深入Brew开发5.1。
Brew系统的组成,整个Brew系统由开发平台,运行平台和服务器三个要素组成:深入Brew开发5.1.1。
设备制造商为什么要支持Brew,一个重要的原因是BREW还可以担当一个设备的用户界面开发平台的角色,可以简化设备用户界面的开发时间,从而减少开发成本。
BDS系统,BDS对于BREW技术本身没有多大的意义,但它确是BREW产业生存的核心内容:深入Brew开发5.1.2。
Brew设备系统架构,BREW设备是BREW的运行平台。
软件的难点就在于这些层次的划分,模块的划分,函数和API的定义和划分。
BREW SDK的安装:深入Brew开发5.2。
BREW SDK的组成:深入Brew开赴5.3。
BREW头文件。这些头文件中定义了BREW的接口、使用的常量以及结构体类型等。这些头文件与在BREW设备上运行的PK中的头文件是一致的,否则在SDK中开发的应用程序就不能在BREW设备上运行了。
BREW SDK的目录结构:深入Brew开发5.4。
在BREW环境中,使用的都是小写的字母做为路径和文件名,不能够使用大写或大小写混合的模式。
BREW环境:BREW是一个可扩展的、面向对象的应用程序开发和执行环境。
BREW支持应用程序和共享模块,应用程序和模块做为独立的DLL开发,运行时由模拟器载入,共享模块中可以包含功能模块,例如开发游戏时,可以将增强功能的图形接口进行 重新封装,做为应用开发中的接口使用,这些扩展接口可以同BREW标准接口一样在应用程序中使用。
BREW提供了多组不同功能对象(接口)和功能:
1、提供支持简单的基于事件的处理方式的应用程序服务;
2、提供访问文件系统、网络服务、内存和显示的核心服务;
3、提供增强的图形功能、多媒体、声音和GPS定位等增强服务;
4、提供诸如支持浏览器开发的综合服务;
在这些不同功能和级别的服务中包含了BREW的多种类型的接口,如IShell接口负责应用程序的控制和管理等功能;IDisplay负责显示的控制和屏幕刷新等功能。
Brew 的接口(不是只API,而是代表一组功能):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,我们必须成为一个授权的开发者。
BREW的优缺点:深入Brew开发5.6。
在BREW SDK中,每一个应用程序模块做为一个独立的Windows DLL文件开发。每一个模块中可以包含一个或多个Applet,并且必须有一个与此应用程序模块对应的MIF文件。
MIF文件中,包含了关于这个模块信息,例如支持的类、支持的Applet、Applet的权限和 Applet信息,Applet的标题图标等。在MIF文件中还包含了模块中每一个类和指定给其他应用程序使用的类的唯一Class ID。
一个已经开发的BREW应用程序可以运行在模拟器上(DLL文件),也可以运行在指定的设备上(MOD文件)。如果需要生成MOD文件,必须包含所运行设备CPU类型的专用编译器,如ARM CPU的C/C++编译器。
BREW应用程序使用的资源文件是二进制资源文件,无论应用程序运行在模拟器环境下,还是在设备的BREW环境下,都是使用相同的文件格式,无需在设备和模拟器之间进行不同的处理。
开发一个BREW应用程序所需的组件:
1、BREW AEE随SDK提供的头文件(在SDK中的inc目录下的.h文件);
2、BREW模块创建所需的助手源文件(AEEAppGen.c和AEEModGen.c);
3、Applet源文件和头文件;
4、使用MIF文件编辑器创建MIF文件;
5、Applet资源文件和相应的资源文件头文件,这些文件使用BREW资源文件编辑器创建。
注意,应用程序中使用的源文件,对于Windows环境和指定设备环境下是相同的,使用同样的源文件去建立Windows的DLL二进制文件和设备指定的MOD二进制文件。
在 系统启动的时候(模拟器或BREW设备),BREW枚举所有的MIF文件。对于每一个MIF文件,BREW会获取其中全部支持的类。可以通过 BREW的API(如ISHELL_EnumApplet等)使这些信息在应用程序中使用,应用程序管理器(Application Manager)可以通过这些API列举出当前系统中的全部BREW Applet。
MIF文件的命名要求:深入Brew开发6.1。
在BREW平台中,每一个接口类或Applet都必须有一个唯一的Class ID。
如何获取Class ID:深入Brew开发6.2。
如果我们手动的为我们的应用程序分配Class ID,那么我们必须保证它们是唯一的。如果有两个或两个以上的接口Class ID或Applet Class ID是一样的,那么这些接口和Applet将有可能不能运行:深入Brew开发6.2。
如何创建一个接口实例:深入Brew开发6.3。
所 有的BREW类都是从IBase继承而来的。IBase接口中有两个方法,IBASE_AddRef和IBASE_Release,由于全部的类都是从 IBase继承而来,那么,全部BREW类都支持AddRef和Release方法。这两个方法是用来控制接口实例引用计数的。引用计数也就是指当前的类 实例有多少个指针指向它(也就是引用它)。当增加一个引用的时候,必须调用AddRef方法增加类实例内部的引用计数,当释放一个引用的时候必须调用 Release方法减少引用计数。当内部引用计数为0的时候,就会释放这个类的实例。我们必须严格的遵守这个规则,否则将不能够正确地释放接口实例所占用 的系统资源,如内存等,会引起系统资源的耗尽,从而导致系统崩溃。
在BREW模式下,Applet是一个支持IApplet接口的类,IApplet接口还支持HandleEvent方法。
如何创建和终止一个Applet:深入Brew开发6.4。
处理Applet的事件:深入Brew开发6.5。
任何一个BREW Applet的核心函数都是HandleEvent,因为BREW基于事件驱动的机制就是通过这个函数体现出来的,它是BREW Applet的一个事件入口。Applet的运行也是通过这个函数接收事件而运转的。
挂起和恢复Applet:深入Brew开发6.6。
应用程序堆栈和IAppHistory接口:深入Brew开发6.7。
创建自定义通知:深入Brew开发6.8。
开发Brew应用程序的注意事项:深入Brew开发7.1。
在VC中添加Brew插件:
1.Copy VsAddins/vs60中的BREWAddinsForVS60.dll文件到C:/Program Files/Microsoft Visual Studio/Common/MSDev98/AddIns 以使vc中出现Brew快捷工具栏。
2.Copy VsAddins/vs60中的BREWAddinsForVS60.dll文件到C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Template才能使用Brew应用程序向导。
3.设置系统变量BREWSDKTOOLSDIR为tools目录,才能在向导直接使用Mif Editor。
创建一个Brew应用程序实例:深入Brew开发7.2.1。
AEEClsCreateInstance和***_HandleEvent函数还是每一个动态应用程序 必不可少的。
在BREW 应用程序启动后,会首先向应用程序中发送EVT_APP_START事件,这个事件是应用程序收到的第一个BREW事件。
测试一个Brew应用程序:深入Brew开发7.2.2。
由于我们生成的BREW应用程序是一个单独的DLL文件,因此,在我们第一次运行调试程序的时候,需要在调试运行程序的对话框中输入模拟器文件BREW_Simulator.exe做为运行DLL文件的可执行文件。
注意:通常我们将DLL的输出路径设置在了默认的工程名/debug下面了,我们应该在VC的setting里将目标输出处去掉debug。
注意:设置应用程序路径为我们的应用程序所在文件夹的上一层路径。注意应用程序所在的路径必须与MIF文件名相同。
在设备上运行应用程序:深入Brew开发7.2.3。
在一个真实的硬件环境中运行我们的应用程序是十分重要的,因为这样做可以让我们检测到应用程序在模拟器中没有遇到的错误,尤其是在我们自然不自然的使用Visual Studio库函数的时候。
Brew应用程序是基于事件驱动机制的,也就是说,Brew应用程序通过BREW平台发送过来的事件开始运行的。这些事件不但包含了诸如控件发送过来的用户接口事件,而且还包含了描述应用程序诸如启动和停止等外部行为的事件,例如接收一条短消息或者启动一个应用程序。
因此,我们的应用 程序的中心是一个叫做_HandleEvent的事件捕获函数。应用程序通过这个事件捕获函数获得系统中的事件(更为准确的说法应该是BREW平台通过这 个函数将事件传递给应用程序),并通过这些事件检测系统的运行状态(如按键、启动应用程序等等)。
进一步的,我们的应用程序判断这些传进来的事件,并决定如何处理这些事件(捕获则返回TRUE,不捕获则返回FALSE)。如果我们的应用程序在某个事件中并不希望进行任何处理,通常情况下应首先将它传递给应用程序正在使用的接口(如控件),然后再返回处理结果。
这样可以让应用程序中使用的接口获得处理事件的机会。
注意:由于我们的应用程序实际上是一个BREW接口的实例,并且事件捕获函数不 过是这个接口中的一个方法而已,因此我们必须在应用程序接口中增加一个指向我们的应用程序事件捕获函数的引用。
注意:扩展接口不需要注册事件捕获函数,因此不必调用AEEApplet_New函数了。
一旦我们已经创建了我们应用程序的实例,BREW系统将会调用我们应用程序的事件捕获函数,传递各种BREW事件。    
EVT_APP_SUSPEND事件。在我们的应用程序接收到这个事件的时候,它表示应用程序需要中断执行。这种情况通常发生在我们在当前的应用程序中启 动了另一个应用程序,或者在我们的应用程序运行过程中收到了一个电话等需要打断当前应用程序运行的情况下。在这个事件中,我们需要保存应用程序中的相关状 态数据,用于在应用程序恢复执行时恢复程序的状态。此事件过后,应用程序进入挂起状态。
EVT_APP_RESUME事件。在我们的应用程序从中断执行(挂起)状态返回到运行状态时,将会收到这个事件。在这个事件中我们需要根据在EVT_APP_SUSPEND事件中保存的状态数据恢复应用程序的执行状态。此事件之后,应用程序就处于正常的活动状态了。
※※※非常重要※※※BREW应用程序流程的执行流程:深入Brew开发7.3.1。※※※非常重要※※※。
Brew的事件(系统事件,按键事件,控件事件,对话框事件,Shell事件,设备事件,用户事件):深入Brew开发7.3.1
最简单的一个BREW应用程序是由两个函数组成的: AEEClsCreateInstance和一个对应的事件捕获函数。这两个函数共同组成了应用程序的可执行区域。
BREW平台与其它很多轻量级的应用程序平台一样,都不支持全局变量,那它是怎样来保存数据的呢:深入Brew开发7.3.1。
BREW接口的继承关系:深入Brew开发7.3.2理解Brew接口。
通过Brew接口之间的继承关系,我们可以编写一些针对某基类接口的控制函数,从而可以实现对多种派生接口的控制。
IBase接口:深入Brew开发7.3.2。
IShell接口:深入Brew开发7.3.2。
BREW提供的助手函数:深入Brew开发7.3.2。
请确认我们的应用程序中使用的是BREW助手函数,而不是C语言的库函数,否则可能引起应用程序在BREW设备上的运行错误或者无端的增加程序的大小。
BREW的继承不是在语法上的, 而是在二进制层面的一种继承。
指定语言的资源文件:深入Brew开发7.4。
编译在brew设备上可以运行的Brew应用程序所需要的工具(ADS,Brew Builder,GCC(2.95)):深入Brew开发7.5。
BREW应 用程序由MIF文件(.mif)、资源文件(.bar)、签名文件(.sig)和模块文件(.mod)组成:深入Brew开发7.5.5。
资源文件的命名没有特殊限制,不必和mif文件名相同(除了要要遵守文件系统的约定),而且同一个应用程序中也可以有多个资源文件。
MIF编辑器的使用:深入Brew开发7.6.1。
资源文件编辑器的使用:深入Brew开发7.6.2。
Brew模拟器的使用:深入Brew开发7.6.3。
设备文件编辑器的使用:深入Brew开发7.6.4。
使用应用程序下载器:深入Brew开发7.6.5。
如何使用记录器(Logger)获取调试信息:深入Brew开发7.6.6。
Brew的事件驱动模型:深入Brew开发8.1。
怎样捕获系统事件:深入Brew开发8.1.2。
怎样捕获用户事件:深入Brew开发8.1.3。
创建一个文件浏览器应用程序:深入Brew开发8.2.1。
而在嵌入式系统中通常是将程序烧录在一个Flash芯片中,文件系统在另一个Flash芯片中(也可以二者在同一个芯片中),CPU是直接从程序 Flash芯片中读取指令执行的,没有经过文件系统,我们可以叫这种程序是“一体式”的。
Windows的“分散式”程序体通过文件的形式存在,可以把程 序的不同部分分割成不同的文件,当我们只需要更新一个模块内容的时候,只更新这个文件就可以了。熟悉它的朋友们可能已经知道了,这个文件就是在 Windows操作系统中的DLL文件。这样的方式可以很容易的实现程序分发。
平台的作用:Brew原理1.
Brew是如何实现接口定义与接口实现之间分离的:Brew原理3,4,5。
Brew的资源管理:Brew原理6。
Brew的面向对象特性:Brew原理7。
Brew与Com的比较:Brew原理8。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA报表(jor简表使用)

简表介绍简表(JOR),是一款开源的报表工具,完全java实现,核心代码来自于国内一线报表工具品牌杰表.2008 。 提起开源的报表工具,不能不说说jaspereport,jasperreport作为...

C库函数简表

分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z') 返回非0值,否则返回0 int isalnum(int ch)...

JSP语法简表

HTML 注释  在客户端显示一个注释.  JSP 语法   ] -->  例子 1    在客户端的HTML源代码中产生和上面一样的数据:  ...

国内银行卡BIN号(Bank Identification Number)速查简表

国内银行卡BIN号(Bank Identification Number)速查简表 银行名称 银行卡 卡BIN 中国工商银行 ...

jor(1):简表(JOR)开源的报表工具调研

1,项目介绍参考:我觉得需要说明下,我不是这个公司的员工,也不是做广告,只是调研下这个开源报表软件。简表(JOR),是一款开源的报表工具,完全java实现,核心代码来自于国内一线报表工具品牌杰表.20...

JSP语法简表

HTML 注释 在客户端显示一个注释. JSP 语法 ] --> 例子 1 在客户端的HTML源代码中产生和上面一样的数据: 例子 2 --> ...

Linux 命令简表

  • 2010-12-11 14:10
  • 181KB
  • 下载

mips32汇编指令集简表

  • 2017-01-06 15:39
  • 156KB
  • 下载

国内银行卡BIN号速查简表

国内银行卡BIN号速查简表 国内银行卡BIN号(Bank Identification Number)速查简表 银行名称 银行卡 卡BI...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)