Brew 安装(适用于win2k,winxp等更高版本的系统):
1):下载brew sdk(现在很多地方都有,基本是brew sdk 2.0.0.35,brew sdk 2.0.1.5或更高级,brew3.0及后续版本目前还没有实际进行开发)
2):安装brew sdk(路径不要有空格,根据提示设置环境;
同时将ARMMakeBREWApp.dll, BREWIntegratedHelp.dll放到vc安装目录如下:
-Microsoft Visual Studio/Common/MSDev98/AddIns下.
设置:tools->customize->add-ins and macro files,将BREWIntegratedHelp.DSAddin.1和ARMMakeBREWApp. DSAddin.1选中,关闭设置,在vc环境中将新生成的浮动工具栏拖到相应的位置)
3):brew相关工具的安装
编译工具--- ARM Developer Suite 基本使用1.2版本
主要用于编译生成mod文件,手机使用;
其他相关使用工具:BrewToolsSuite基本使用2.1.1.3版本等,用来手机的调试及调入删除等功能)
4):arm安装后,启动一下CodeWarrior for ARM Developer Suite ,以后就可正常使用arm.
对应工具的作用:
brew sdk工具:
BREW Compressed Image Authoring Tool: 图像压缩, bci格式-使用image接口进行播放
BREW Device Configurator : 模拟器文件配置设置,如果使用内存很大,选择windows内存方式
BREW MIF Editor : mif 文件配置编辑器
BREW Resource Editor : 资源编辑编译器 build菜单
Brew emulator : 模拟器 //(可以通过修改设备文件,切换模拟器,如有不正常现象,可以删除prefs.dat试试,重新打开模拟器)
其他基本是帮助文件.
BrewToolsSuite
Brew apploader ///用于手持设备上的文件导入,导出(不是所有文件都可导出的)或文件删除功能(通过com口或者usb口连接设备)
Brew appsigner ///签名文件的制作,一般由高通进行管理.
Brew applogger 调试工具,在应用程序中,通过DBGPRINTF输出的内容都可通过applogger看到内容(通过com口或者usb口连接设备).
其他不作介绍.
Arm的使用:
1).通过ARMMakeBREWApp 的浮动工具栏生成相应的mak文件
2).在命令行窗口下:进入相应目录 ,通过nmake /f *.mak all 即可编译生成mod文件
brew开发的程序一般都放在其相应的examples下面,mif文件直接在examples中;其他的文件包含在于mif相同文件名的文件夹下面.
brew开发生成的文件的使用:
模拟器: mif,examples下;其他文件在相应目录下: dll及其他bar(可以多个)和数据文件,不可有签名文件
手持设备: mif,examples下;其他文件在相应目录下: mod及其他bar(可以多个)和数据文件,必须有签名文件
1.mif文件
1) mif文件applet选项卡
(1) 通过BREW MIF Editor生成.
(2) 本地使用,可以暂时生成一个class id ,正式提交必须重新向高通申请class id ,每次更换id,请先删除老的id,然后生成新的id,examples目录下避免相同id的mif文件出现.
(3)其他根据实际进行填写;mif的三个图形文件: thumbnail.bmp(16*16*256),icon.bmp(32*32*256),image.bmp (65*42*256)分别用于brew管理器的显示,icon是使用大图标方式, thumbnail,image是小图标显示的两项:thumb,菜单里面,image菜单上面的大图像.
Icon图像选择:在其相应的browser,
thumbnail,image图像选择:advance里面的browser.
2) mif文件的general选项卡
(1) 根据需要填写作者,版权,版本号
(2) 权限设置:使用了相应的功能就应该选择相应的文件,否则操作不会成功,如有文件操作,就应该将file的框选上,其他类似.
3) mif文件的Externsions选项卡,如作为公用模块可以使用.
4) mif文件的dependences选项卡,如果使用了公用模块就在这里添加相应的class id(不建议这种方式,升级并不方便).
5) 后面的不在介绍,基本不使用
2.bar文件的说明
1).bar文件通过BREW Resource Editor生成,源文件为bri格式,经过编译生成bar文件
2).可以打开bri里面的string,image,dialog加入资源,以便程序使用(string选择unicode编码,dialog很少使用).
3)当然这里的文件可以进行压缩,作为更深的研究以后再说(gzip进行压缩,将近1/3, IUnzipAStream接口处理.)
3.dll文件
1)模拟器的dll执行文件,用于模拟器,不用于手机
2)执行时,dll文件,必须在examples的相应目录下-一级目录,不能在其debug或release下
4).mod文件
1)手机的执行文件.用相应的mod文件代替dll文件
2)通过nmake /f *.mak all 即可编译生成mod文件
5) sig文件
模拟器中不需要签名文件,但是手机的目录下必须加入签名文件,有与卡相关,有与机相关.
其他的诸如:数据文件,或者多个bar文件等均可根据需要添加
手机文件的导入,请注意不要乱删除其他系统文件以及避免添加中文名字或名字不太规范的文件
brew 开发流程:
1) 启动vc在创建工程中选择brew类型,创建空工程.
2) 根据提示建立mif文件,放在examples下,建立classid文件
3) 根据需要创建头文件,及源文件,重新定义应用程序的结构体.
4) 用全部brew api替换c中的相应函数(一般大小写转换或者使用接口)
5) 字符串string资源添加时,选择unicode方式
6) 包含classid文件,及资源头文件.
7) 如下修改TetrisApp为相应的新的app结构,以后在app中定义的变量才能正常使用
if(AEEApplet_New(sizeof(GoChessApp), ClsId, pIShell,po,(IApplet**)ppObj,
(AEEHANDLER)GoChess_HandleEvent,(PFNFREEAPPDATA)GoChess_FreeAppData)
== TRUE)
8) 程序使用的优先级如file,net等,务必在mif文件中选择
brew开发必须处理的事件(Piece_HandleEvent中处理):
1) EVT_APP_START:程序的启动进行处理,启动您的应用程序,调用相应的函数,初始化资源尽量一次调入,可以在程序中,加快速度
2) EVT_APP_SUSPEND :程序的挂起,当来电或短信时,挂起,取消一切的回掉函数,包括定时器,解析,网络回掉,bci播放等.
3) EVT_APP_RESUME:恢复,程序的关键界面请务必恢复,其他无所谓吧,根据测试协商.
4) EVT_APP_STOP:游戏结束的调用.释放所有资源,brew管理器自动调用,上面的释放函数如:GoChess_FreeAppData,你可根据需要重新定义释放函数.
5) EVT_KEY:游戏的设置机制了,自己处理.
6) EVT_APP_NO_SLEEP:设备休眠问题,游戏运行中,会逐渐变慢,只要这个消息,返回true即可.
7) 其他如EVT_KEY_PRESS,EVT_KEY_RELEASE,酌情处理.
8) 这里的定时器与pc定时器概念不同,只调用一次回掉函数.
9) 其他的函数使用,请参照brew api文档说明了(务必使用brew api函数).
10) 暂时不支持浮点运算,如有需要,请先转换,然后处理.
11) Staic控见中,以空格代替换行.
常见问题分析:
1) 死机,自动关机,一般有使用了无效指针,规范编程,实时初始化,释放先判断后置零,问题会减少很多
2) 莫名其妙的事件调用,不同手机的处理不一样,如有些手机先触发EVT_APP_SUSPEND再触发EVT_APP_STOP等,请仔细测试不同手机的触发,以便处理,这些问题也可通过规范编程避免不同调用顺序引起的不当指针使用.
3) 声音播放问题,关键看手机本身的支持性能,其次多释放,多重新创建也许可以解决问题;也可以考虑播放方式,如内存播放或直接播放;挂起也要停掉声音,释放回掉等来检查解决问题.
4) 图形问题:不能正常显示,请检测图形的颜色深度是否适合,透明的支持性能,甚或内存的大小
5) 一些接口不能正常创建,请注意创建顺序以及mif中优先级是否选择等.
6) 尽量使用c语言编程,c++中,回掉函数静态定义也许很不方便处理.
7) 对于短信和电话的处理不同手机也不完全相同