在brew上创建helloworld
时间:2010-06-17 来源:dolinux
安装BREW SDK完成后,就可以开发BREW应用了。
开始创建工程:
在Visual C++ 6.0中,点击“File->New…”,打开新建对话框,选中“Project”选项卡,如图一所示。
(图一)
如果使用Visual Studio .NET,则点击“File->New Solution…”,如图二所示。
(图二)
选择“BREW Application Wizard”,在Location一栏中输入建立工程的目录(这里设置为C:\BREW\,其后的helloworld是根据Project name中的输入自动添加的),在Project name一栏输入工程名(这里为helloworld),由于手机只支持小写的文件名,使用大写或大小写混合的文件名可能无法运行或出错,因此工程名建议只使用小写的文件名。输入工程名后,点击“OK”进入图三。
(图三)
点击“Next”进入下一个对话框。如果已经熟悉BREW应用开发过程,可以直接点击“Finish”开始编码。
(图四)
点击中间的“MIF Editor”,启动BREW MIF编辑器,如图五所示。
(图五)
点击“Applets”选项卡中的,设置应用的ClassID。
(图六)
ClassID可以从高通网站获得,也可以本地生成,或者从已有的BID文件中获得。在开发阶段用本地生成方式就可以了,输入指定的八位十六进制的 ClassID和Class Name。不同的应用要使用不同的ClassID,这里输入01009FF0,Class Name则为helloworld。然后点击“OK”,按提示把文件保存为C:\BREW\helloworld\helloworld.bid。
(图七)
“Applet Information”需要填写的内容:
Name:输入要显示的应用名称,如“Hello World”、“我的第一个应用”等等。
Applet Type:设置应用的类型,本样例应用可以选择Game或Tools。
Graphics:设置三种规格的图标,Small为16X16,Medium为26X26,Large为65X42。如不设置,BREW将采用默认的图标。
点击“Privileges”选项卡,设置应用程序的权限。
(图八)
File:如果需要对文件进行读写操作,则设置此项。
Network:如果有网络操作,则设置此项。
其余类推。由于本样例应用没有相关操作,故无需设置任何权限。
点击“General”选项卡,输入作者、版权信息、应用版本号。
点击“保存”,把文件保存为C:\BREW\helloworld\helloworld.mfx。
点击“Build->Compile”,编译结果文件为C:\BREW\helloworld\helloworld.mif。
(图九)
工程到此创建完毕,下一步开始编程。
注:在C:\BREW\helloword目录下应具有如下文件:
helloworld.bid
helloworld.c
helloworld.mfx
helloworld.mif
其中,为了使应用能运行,helloworld.mif必须复制到C:\BREW目录下。
开始编写程序:
通过“BREW Application Wizard”创建的工程,实际生成的源代码文件只有一个:helloworld.c。AEEAppGen.c和AEEModGen.c是BREW SDK自带的文件。
(图十一)
源代码文件helloworld.c包括应用的数据结构,创建函数、初始化函数、销毁函数和事件响应函数。通常我们需要修改应用的数据结构、初始化函数、销毁函数和事件响应函数。
应用的数据结构如图十二:
(图十二)
在数据结构中,第一个成员必须是AEEApplet a,不可以用其他成员代替该成员。应用的其他成员应在AEEApplet a之后,除此之外,无其他限制。helloworld暂时不需要其他成员数据。
创建函数:
(图十三)
应用的入口函数,由BREW系统调用,相当于普通C程序的main()函数,通常不需要改动此函数。此函数会对应用进行必要的创建和初始化工作。
初始化函数:
(图十四)
通常由创建函数调用,完成应用的初始化工作。
销毁函数:
(图十五)
应用退出时,由BREW系统调用,把应用在初始化和运行中所使用的内存和其他资源进行释放处理。
事件响应处理函数:
(图十六)
在事件处理函数中, 一般处理的事件有:
EVT_APP_START ---------- 应用开始启动时发送这个事件
EVT_APP_STOP ------- -----应用结束时发送这个事件
EVT_APP_SUSPEND ------应用需要挂起时,比如来电,发送该事件
EVT_APP_RESUME--------挂起结束,比如用户结束通话,发送该事件
EVT_KEY---------------------接收必要的用户按键事件.
用户也可以扩展自己的事件, 比如:
#define EVT_TIMER (EVT_USER+1)
EVT_USER 是为用户扩展事件而定义的, 跟Windows 编程中的WM_USER 性质一样。
使用方法:
ISHELL_PostEvent(pIShell,AEECLSID_HELLO, EVT_TIMER, 0,0);
ISHELL_SendEvent(pIShell,AEECLSID_HELLO, EVT_TIMER, 0,0);
不同之处在于 PostEvent 只是将事件放入事件队列,等待合适的时机去执行,而SendEvent则马上处理,只有该事件处理完毕该接口调用才算结束。 与Windows编程中的SendMessage和PostMessage用法相似。
如果应用已经处理了事件,应该返回TRUE,否则返回FALSE
一个应用创建后,通常收到的第一个事件是EVT_APP_START,应用从这里开始运行。我们第一个应用helloworld就在这里响应事件,在屏幕上显示“Hello World!”。
(图十七)
红色为添加的代码。编译并在模拟器运行,效果如下:
(图十八)
在模拟器中运行你的程序:
helloworld要在模拟器下能运行,首先要把程序编译成helloworld.dll。如果是用“BREW Application Wizard”创建的应用,则helloworld.dll在C:\BREW\helloworld目录下,此为正确的位置。如果不是用“BREW Application Wizard”创建的,可能不在正确的目录下,则需要调整编译的输出目录。设置方法为点击“Project->Properties”,设置“Output Directory”为空即可。
生成helloworld.dll文件后,点击“BREW Simulator”运行模拟器。
(图十九)
(图二十)
点击“File->Load Device”选择所需的终端模拟器。
点击“File->Change Applet Dir”改变应用的所在目录,在这里改为C:\BRREW。
在模拟器上选择对应的应用,按“OK”键运行。屏幕上应显示“Hello World!”字样。
如果应用在运行中出错,可以在开发环境Visual C++或Visusal Studio .Net中执行“调试”功能对应用进行调试。如果是第一次调试,会有如下提示,输入完整的模拟器路径名和文件名,点击“OK”后,可按普通的Windows应用调试方式来进行调试。
(图二十一)
-----------------------------------我的黄金分割线-------------------------------
我的问题:
1.在图四的过程中直接点击MIF EDITOR发现无法启动mif editor,这时你可以选择 开始->所有程序->brew sdk tools ->mif editor启动mif editor was disabled to save space.Would you like to restore it now?
2.启动brew模拟器出现 the app disabled to save space。
这个是因为你的文件目录没有设置好。
在A文件夹下放test.mif和test文件夹,test文件夹下放test.dll,也就是
..\A
..\A\test.mif
..\A\test
..\A\test\test.dll
然后把Applet Directory设置为..\A
默认情况下dll是在debug文件夹下的,可以通过更改工程的属性把它改到..\A\test\test.dll