分享
 
 
 

BREW 开发的注意事项:

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

以下开发建议有助于避免发生常见的错误,并可将测试、调试和重写源代码所需的时间量降至最低。 该开发建议可尽量避免以下问题:

一:导致从 Windows 移植到 ARM 环境时出现问题

二:导致目标设备上出现问题,但在 BREW Simulator中不一定能够检测到

三:常规有效操作

通过研究和执行这些指导原则,您可以将从 Windows 移植到 ARM 的时间总量降至最低,并使应用程序尽可能在移动设备上正常运行.

First: 执行 NULL 指针检查.

在以下两种情况下需执行检查:

创建 BREW 接口实例时必须检查 NULL 指针。 如果指针有误,则该接口将无法使用。

检查 BREW 方法或已分配内存所传递和返回的所有指针,以确保它们的有效性。 无效指针应使用异常处理机制进行处理。

Second:避免堆栈溢出。

不要将大数组放在堆栈上。 不要在函数内将大数组或变量声明为本地变量,因为 BREW 环境可用的堆栈大小十分有限。 如果需要大量内存(例如,大于 256 字节),则使用动态内存分配操作符,例如 MALLOC 或 IHeap。

如果分配处于递归例程中,则动态分配缓冲区。 如果调用堆栈中的函数较深,则监控之前大堆栈缓冲区的堆栈。

Third:不要编写紧凑循环。

使用紧凑循环会导致目标设备自动重置。 因此,不要编写需要花费大量时间处理应用程序中单个事件的紧凑循环。 这样可以防止将其它事件传递给应用程序,从而避免设备重置。

收到事件时,应用程序将进行所需处理,然后从该事件返回, 使得其它事件可以发送到该应用程序。

Fourth:力求应用程序与设备无关。

要确保应用程序独立于内存大小、键盘、屏幕大小和色深而能够在任何目标设备上执行,请使用 ISHELL_GetDeviceInfo() 从目标设备获取说明。 使用该结果指定显示、按键和多媒体等参数, 而不要硬编码这些参数。

在不同设备上使用 CONVERTBMP 例程处理图像。

Fifth:使用资源。

使用资源存储特定语言的字符串、对话框和位图。 这有助于本地化应用程序,将它从一种语言的目标设备移至另一种语言的目标设备。 不要在源文件中硬编码这些类型的信息。

Sixth:清除内存。

由于目标移动设备上的可用内存十分有限,因此必须释放未使用的内存。 在以下两种情况下需释放内存:

1:必须释放所创建对象的所有实例。

2:应用程序终止时,必须释放所有动态内存(所有已分配内存)。

3:建议您在不需要内存时将其释放。

Seventh:不要使用全局或静态变量。

BREW 结构不支持全局或静态变量,因为动态下载的应用程序无法处理这些数据类型。 此外,使用全局或静态变量可能导致连接器出现目标错误。 始终将持久数据存储在小程序结构中。

Eighth:定义结构时不要初始化结构。

对于 ARM 编译器,定义并初始化的结构被视为静态数据。 请参阅上述“不要使用全局或静态变量”。

Ninth:不要在条件语句内分配变量。

使用 ARM 编译器应避免此类问题。 不要在条件语句中编写赋值代码。

Tenth:不要使用原始浮点运算。

与上述“不要使用全局变量”相同;此处包括类型转换。

使用 BREW 在助手函数中提供的浮点调用。

Eleventh:使用 BREW 提供的标准库函数。

由于目标设备上的 RAM 限制,您需要将编译后的代码大小控制到最小,因此应使用标准 C 库函数的 BREW 子集(如果已提供),而不要使用标准库函数。

避免出现类型强制转换错误。

由于 ARM 编译器处理隐式类型转换比大多数 Windows 编译器严格,因此要明确声明类型转换。 这样可以避免在从 Windows SDK 转换至 ARM 环境时发生编译错误。

检查返回值。

调用有返回值的 BREW API 方法时,应处理成功和失败时的返回值。

处理错误代码。

一些函数可能返回 void,因此应使用 BREW API GetLastError() 机制来识别错误。

文件和目录名称。

在 BREW 3.0 版中,BREW 支持区分大小写的文件名和目录。 具体通过使用 IFILEMGR API 的 fs: 命名规则来支持区分大小写的文件访问。有关详细信息,请参阅 BREW API 参考资料 联机帮助 。 之后请确保以下事项:

MIF 文件名和小程序目录名必须完全匹配(包括大小写)

如果您使用的是旧的命名规则(即不是基于 fs:) 访问文件,须保证应用程序中使用的文件名必须与磁盘上的文件名完全一致(为小写)。 使用此规则时,您的应用程序将无法访问磁盘上使用混合大小写名称的文件和目录。

如果想要使用大小写混合名称的文件和目录,必须使用 fs: 命名规则。

如果您在开发面向低于 BREW 3.0 的 BREW 版本的应用程序,请遵循以下规则:

BREW 仅支持使用小写名称的文件和目录。 因此,请确保只使用小写字符的文件和目录名。 BREW API 1.0.1.x 版本和更高版本采用对应用程序开发者透明的方式处理大小写问题。 不要使用带两个圆点 (.) 的文件名或带一个圆点 (.) 的数据库名。 这些字符由于未知问题而无法使用。

最小化代码大小。

要最小化代码的大小,请在将应用程序加载至目标设备前禁用调试信息选项。

设置警告级别。

在 Windows 中编译应用程序时,应将警告级别设为最高级,即 4 级。 此操作有助于更全面地检查代码。 由于 ARM 编译器在指示错误方面比 Windows 编译器更严格,因此应确保应用程序能够顺利地编译为 ARM 目标。

组合多次读写。

通过组合多次读写操作(如果可能),可以全面提高读写文件的效率。 将数据读入缓冲区,在需要时访问。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有