`

Brew FAQ-常见问答(4)

    博客分类:
  • C++
阅读更多
1)我的应用程序可以随附的文件数有限制吗?

提交无应用程序扩展名的文件:
在 BREW 1.x 中,应用程序提交包中包含的每个文件都必须有一个扩展名(有关详细信息,请参阅http://www.qualcomm.com/brew/sch/developer/support/kb/235.html)。这将影响那些作为其提交包一部分包含数据库文件的应用程序。有关“作为应用程序包的一部分包含数据库文件的解决办法”的详细信息,请参阅至 9h 的链接。应用程序包中的每个 1.x 文件都需要有一个扩展名。如何提交 1.x 应用程序中的

(2)数据库文件?

提交应用程序包中的零字节文件:
由于 BREW 1.x 缺陷,Mobile Shop(移动商店)有时无法下载包含零字节文件的应用程序。请确保您的应用程序包中不包含任何零字节文件。零字节文件只会在下载时引起问题 - 在运行时期间可能会产生零字节文件。

在应用程序的 MIF 文件进行了 TAPI 状态通知注册:
由于 BREW 1.0 缺陷,因此无法在应用程序的 MIF 文件中注册 TAPI 状态通知 (NMASK_TAPI_STATUS)。这是因为在 MIF 文件中为 TAPI 状态注册的应用程序被禁用时会发生错误:在启动 Mobile Shop(移动商店)连接后,BREW 会尝试通知应用程序(因为数据调用已开始并引发一个 TAPI 状态更改事件)。因为已禁用该应用程序,所以 BREW 会尝试重新启用它,这样会再次启动 Mobile Shop(移动商店)连接。结果产生一个不停重新启动 Mobile Shop(移动商店)的循环。

该缺陷已在 BREW 1.1 及以后的版本中修正。对于该问题没有解决办法 - BREW 1.0 应用程序不能在它的 MIF 文件中注册 TAPI 状态更改事件。要在运行应用程序时获得 TAPI 状态更改事件的通知,可以调用 ISHELL_RegisterNotify()。

(3)如何将多个模块打包成单个 True BREW 测试提交?
答:如果您在提交由多个模块组成的应用程序, 请按下述说明安排 zip 文件的结构:

多模块提交说明:

每个 "mod" 文件必须有一个唯一名称。开发者应该将每个 "mod" 文件放在 ARM 目录下的独立子目录中。每个子目录都应该有 自己的 "mod" 和 "mif" 文件且已单独签名。子目录名 与关联的 "mod" 文件应该相同。例如:
ARM\test1\

test1.mod

test1.mif

test1.sig

test1.bar

ARM\ test2\

test2.mod

test2.mif

test2.sig

等等...

ARM 目录使用的同一目录结构也应用于 WIN 目录。 应用程序的 Windows 版本也 用于测试且应该依据于电话所用的同一模块。

(4)使用扩展类的小程序是否需要将权限级别设置为“全部”才能成功运行?
要加载扩展,不需全部权限。请确保在您的小程序类的 MIF 文件和扩展类的 MIF 文件中遵守下面的指导原则?

1. 在扩展类的 MIF 文件中:
扩展的 Class ID 应在导出类下的“扩展”选项卡中列出。它不应在“小程序”选项卡上“小程序信息”下列出。如果在“小程序信息”下列出,则 BREW 将认为 Class ID 属于小程序。只有系统可以使用 ISHELL_CreateInstance() 创建小程序的实例。
2. 在小程序类的 MIF 文件中:
在“小程序信息”下列出小程序 Class ID。
选择必需的权限级别(“常规”选项卡)。
在“依存”选项卡中列出扩展类。
BREW SDK 1.0.1 随附的 ExtUse 和扩展示例在 MIF 文件中包含以下故障:
全部权限已检查
扩展的 Class ID 在“导出类”和“小程序信息”下列出
这已在 1.1 SDK 中修复。

(5)ISHELL_CreateInstance() 在试图创建扩展类的实例时为什么返回 EPRIVLEVEL?
请参阅使用扩展类的小程序是否需要将权限级别设置为“全部”才能成功运行?FAQ。

(6)使用 Mobile Shop(移动商店)删除取决于某个模块的所有应用程序时,有时发现通用模块被删除。为什么?
如果应用程序被连续删除且在应用程序删除期间不退出 Mobile Shop(移动商店),则说明 Mobile Shop(移动商店)中有故障引起了这种行为。

例如,假定已加载了两个对一个通用模块有依存关系的应用程序。如果您使用 Mobile Shop(移动商店)连续删除了这两个应用程序(删除期间不退出 MobileShop(移动商店)),则会看到该通用模块仍然存在。但是,如果在删除期间退出并重新启动 Mobile Shop(移动商店),则会同时删除通用模块。这是可以预期的行为。

通用模块是扩展类。有关使用扩展的详细信息,请参阅 SDK 随附的 ExtUse 和扩展示例和下面的 FAQ 使用扩展类的小程序是否需要将权限级别设置为“全部”才能成功运行?。
(7)请详细说明 BREW 权限级别。
权限级别通过控制对 API 类的访问提供附加安全性。小程序必须具有相应的权限级别才能使用特定的类。小程序的权限级别在其相应的 MIF 中指定。MIF 是通过 MIF 编辑器创建和维护的。

为了使用 Ifile、IfileMgr、Idatabase、IDBMgr、IDBRecord、ISound 和/或 ISoundplayer API 类,小程序必须具有“文件”权限级别。

为了使用 INetMgr 和/或 ISocket ISoundplayer API 类,小程序必须具有“网络”权限级别。

如果未选择相应的权限级别,则该类的 ISHELL_CreateInstance() 会失败。

两个其它权限级别,即“下载”和“全部”显示在 MIF 的“高级权限级别”对话框。这些权限目前不使用,只能由运营商或设备生产商使用。如果您是应用程序开发人员,选择这些权限级别可能会引起应用程序无法通过 TRUE BREW 测试。

(8)为什么在调用 ISHELL_CreateInstance() 时收到 EPRIVLEVEL 21 错误?
这表明您没有创建特定类所需的权限。务必检查应用程序的 MIF 文件中的必需权限(“常规”选项卡)。请参阅请详细说明 BREW 权限级别 FAQ。

如果从小程序 (class_b) 中调用一个非小程序类 (class_a),则必须执行以下操作才能具有必需的权限:
在 class_b 的 mif 文件中,指定 class_a 的外部 class ID(MIF 编辑器中的“依存”选项卡)。
在 class_a 的 mif 文件中,必须导出其 Class ID(MIF 编辑器中的“扩展”选项卡)。
有关详细信息,请参阅 ISHELL_CreateInstance() 在试图创建扩展类的实例时为什么返回 EPRIVLEVEL? FAQ。

(9)可以从何处找到 ISHELL_CheckPrivLevel() API 的各种权限级别 (wPrivWant) 的定义?
权限级别在 API 参考文档的“AEE 权限级别”下进行了说明。SDK 版本 1.1 中没有这些权限级别的定义。这是 SDK 版本 1.1 中的故障。请创建一个具有以下定义的头文件并将该头文件放在您的项目中:
#define PL_FILE (0x0001) // IFileMgr, IDBMgr
#define PL_NETWORK (0x0002) // INetMgr
#define PL_TAPI (0x0004) // ITAPI (简单)权限
#define PL_WEB (0x0008) // IWeb 权限(如果为 PL_NETWORK 也同样适用)
#define PL_DOWNLOAD (0x0020) // IDownload
#define PL_SHARED_WRITE (0x0040) // 写入权限 - 共享目录
#define PL_POS_LOCATION (0x0080) // 定位权限 (ISHELL_GetLocation)
#define PL_RINGER_WRITE (0x0100) // 写入权限 - 振铃器目录
#define PL_ADDRBOOK (0x0200) // 访问地址簿
#define PL_SECTORINFO (0x0400) // GetSectorInfo
#define PL_SYSTEM (0xffff)

在版本 2.0 中,权限级别定义将纳入 AEE.h 中。
(10)BREW 如何处理不同语言的应用程序本地化?
我们建议对于包含语言的任何内容(位图、字符串和对话框),都应使用资源文件并按需在程序中加载所需项目。采用这种方式,您可以避免源代码中的硬编码项目,对于每种语言单独创建资源文件而且不必修改和编译源代码。

有关应用程序韩文本地化的详细信息,请参阅如何在模拟器和手持设备上显示韩文字符? FAQ。

(11)如何在模拟器和手持设备上显示韩文字符?
在当前可用的韩文 BREW 手持设备上,始终将语言设置为韩文,字体是 KSC5601。您可以使用以下步骤进行更改。

设置模拟器上显示的语言和字体
运行 BREW Device Configurator,然后打开所用设备的 QSC 文件(File(文件)> Open(打开))。
单击“型号”字段右侧的“详细资料”按钮,显示“设备属性”对话框。
根据您使用的 BREW SDK 版本,进入下面几部分之一,完成相应步骤。
BREW SDK 1.0:

执行以下操作之一:
对于韩文 KSC5601,从“语言”下拉列表中选择“韩文”。
对于韩文 Unicode,从“语言”下拉列表中选择“韩文”或“英文”。
在“正常字体”和“大字体”字段中,单击“设置”,选择希望使用的韩文字体和磅值。
单击“确定”。
BREW SDK 1,1:
单击“语言和字体”选项卡。
执行以下操作之一:
对于韩文 KSC5601,从“语言”下拉列表中选择“韩文”,从“编码”下拉列表中选择“KSC5601”。
对于韩文 Unicode,从“语言”下拉列表中选择“韩文”或“英文”,从“编码”下拉列表总选择“Unicode”。
在“正常字体”和“大字体”字段中,单击“设置”,选择希望使用的韩文字体和磅值。
单击“确定”。
在手持设备上显示文本

您需要使用 IDISPLAY_DrawText() 和 AEEChar 字符串。下面的步骤说明了需要在 BREW 资源编辑器和 C/C++ 源代码中作出哪些更改,才能使用 KSC5601 和Unicode 格式创建 AECHAR 字符串。

使用 KSC5601 格式显示韩文字符串
启动 BREW 资源编辑器。
右键单击“字符串”图标,选择“新建字符串”。“字符串资源”对话框打开。
在“资源名称”字段中,键入一个 ID,如 IDS_STRING_KSC。
从“字符串格式”下拉列表中,选择“KSC5601”。
在“值”字段中,键入韩文文本字符串。
单击“确定”。
在 C/C++ 源代码中作以下更改:
使用 ISHELL_LoadResString 加载字符串。
**示例代码**

AECHAR szBuf[30] = {0};
ISHELL_LoadResString(pMe->a.m_pIShell, APP_RES_FILE,
IDS_STRING_KSC, szBuf, sizeof(szBuf));
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL,
szBuf, -1, pMe->m_cxWidth/5, pMe->m_cyHeight/8, 0, 0);

用 KSC5601 代码输入正常字符(无符号字符)串。
使用 STR_EXPAND() 将正常字符串转换为 AEEChar 字符串。
**示例代码**
AECHAR szBuf[30] ;
const unsigned char szhello[] ="";
STREXPAND(szhello,10,szBuf,30);
IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD,
(AECHAR *) szBuf, -1, 0, 0, 0, IDF_ALIGN_CENTER |
IDF_ALIGN_MIDDLE);

使用 Unicode 格式显示韩文字符串
启动 BREW 资源编辑器。
右键单击“字符串”图标,选择“新建字符串”。“字符串资源”对话框打开。
在“资源名称”字段中,键入一个 ID,如 IDS_STRING_UNI。
从“字符串格式”下拉列表中,选择“Unicode”。
在“值”字段中,键入韩文文本字符串。
单击“确定”。
在 C/C++ 源代码中作以下更改:
使用 ISHELL_LoadResString 加载字符串。
**示例代码**
AECHAR szBuf[30] = {0};
ISHELL_LoadResString(pMe->a.m_pIShell, APP_RES_FILE,
IDS_STRING_UNI,szBuf, sizeof (szBuf));
IDISPLAY_DrawText(pMe->a.m_pIDisplay, AEE_FONT_NORMAL,
szBuf, -1, pMe->m_cxWidth/5, pMe->m_cyHeight/8, 0, 0);

用韩文 Unicode 输入 AEEChar 字符串。需要输入正确的 Unicode,因为韩文 Windows 使用 KSC5601 进行韩文文本输入。 或者使用KSC5601 到 Unicode 转换将 [KSC5601 code Korean character (unsigned char) string] 转换为 [Unicode Korean AEEChar string]。因为此方法要求BREW 手持设备的内存过多,所以不推荐采用此方法。
**示例代码**
AECHAR szBuf[30] ;
const unsigned char szhello[] ="";
STREXPAND(szhello,10,szBuf,30);
IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD,
(AECHAR *) szBuf, -1, 0, 0, 0, IDF_ALIGN_CENTER |
IDF_ALIGN_MIDDLE);

**STREXPAND() 示例代码**
void STREXPAND(const byte * pSrc, int nCount,
AECHAR * pDest, int nSize)

参数:
pSrc 以 Null 结尾的源字符串
nLen 源字符串的长度(字符)
pDest 指向目标缓冲区的指针
nSize 目标缓冲区的大小(字节)

(13)如何在 BREW 中生成随机数?
GET_RAND() 使用当前 CDMA 时间作为随机数元数据。 它确保每次调用 GET_RAND() 时都会生成唯一的随机数序列。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/elong_2009/archive/2010/01/17/5201986.aspx
分享到:
评论

相关推荐

    深入研究BREW手机游戏开发BREW开发-海信(王宏兵).RAR

    《深入研究BREW手机游戏开发BREW开发-海信(王宏兵)》是一份针对BREW(Binary Runtime Environment for Wireless)平台的详尽学习资料,由海信公司的王宏兵编写。BREW是由QUALCOMM公司开发的一个强大的移动应用程序...

    brew--ITextdemo

    标题“brew--ITextdemo”中的“brew”可能指代的是一个类似于Homebrew的包管理器或者某种特定环境下的工具集,而“ITextdemo”则是一个具体的项目名称或示例程序。结合描述来看,这个标题意在表明这是一个利用特定...

    docker-brew-ubuntu-core, 在 Docker 中,官方导入的Ubuntu核心tarball用于使用.zip

    docker-brew-ubuntu-core, 在 Docker 中,官方导入的Ubuntu核心tarball用于使用 ;dr: git clone --single-branch https://github.com/tianon/docker-brew-ubuntu-core.git不打开请求来更新图像用于准备Ubuntu官方 ...

    深入BREW开发-中文版

    【深入BREW开发-中文版】是一本关于BREW(Binary Runtime Environment for Wireless)平台开发的书籍,主要针对无线设备的软件开发。BREW SDK(Software Development Kit)提供了开发BREW应用程序所需的工具和库,...

    brew-4.1.14

    在提供的文件中,我们看到三个不同格式的打包文件:`brew-4.1.14.tar.gz`、`brew-4.1.14.zip`和`Homebrew-4.1.14.pkg`。这些文件都是Homebrew 4.1.14的分发形式,但用途不同: 1. `brew-4.1.14.tar.gz`:这是一个...

    Brew SDK 3.1.5

    export SDKROOT=$(brew --prefix brew-sdk)/sdk ``` 之后,重新加载配置文件以应用更改: ``` source ~/.bashrc 或 source ~/.zshrc ``` ### 3. 使用 Brew SDK 现在,你可以利用 Brew SDK 来安装特定版本的软件或 ...

    homebrew-autoupdate:一种自动更新Homebrew的简便方法

    安装此命令只需brew tap domt4/autoupdate 。用法brew autoupdate --start [interval] [--upgrade] [--cleanup] [--enable-notification]: Start autoupdating either once every interval hours or once every 24 ...

    brew-php-switcher:Brew PHP切换器是一个简单的shell脚本,可在主要PHP版本之间快速切换您的Apache和CLI。 如果支持多个产品,则使用全新或旧的旧版PHP功能构建的项目。 目前仅适用于Homebrew(或简称Brew)的用户

    `brew-php-switcher` 是一个针对Homebrew用户的实用脚本,它允许开发者在不同的PHP版本间轻松切换,以满足不同项目对PHP版本的需求。这对于维护依赖于特定PHP版本的项目或者测试新功能至关重要。 首先,我们需要...

    BREW开发- 第三章搭建BREW开发环境.ppt

    搭建BREW开发环境是开发BREW应用程序的基础步骤,这一过程涉及到多个组件的安装和配置,主要目的是为了在个人计算机上创建一个与目标手机环境相仿的开发平台。下面将详细介绍这些知识点。 首先,BREW开发环境对PC机...

    BREW开发-海信(王宏兵)

    4. **应用程序打包与分发**:BREW应用通常以CAP(Compiled Application Package)文件形式存在,开发者需要使用BREW工具将源代码编译成CAP文件,然后通过运营商的网络或第三方分发平台将应用推送给用户。 5. **内存...

    Brew FAQ.pdf 电子资料

    ### 关于BREW FAQ.pdf电子资料的关键知识点 #### 一、概述 BREW FAQ.pdf是高通公司提供的一份详尽的技术文档,旨在为手机应用程序开发者提供必要的指导和支持。这份文档覆盖了创建、编译、调试及发布BREW应用程序...

    高通brew初级培训 培训资料 Brew开发技术文档.doc 海信BREW开发.pdf

    4. BREW编程模型: BREW采用事件驱动的编程模型,应用程序通过处理设备事件来响应用户交互。这种模型非常适合移动设备,因为它能够有效利用有限的资源,并保持低功耗。 5. 应用分发与计费: BREW应用通常通过运营...

    Brew FAQ中文

    Brew FAQ中文版是针对BREW(Binary Runtime Environment for Wireless)平台的一份常见问题解答文档,旨在帮助开发者解决在创建、编译、调试和本地化BREW应用过程中遇到的问题。BREW是一个为无线设备设计的操作系统...

    Brew-API参考资料(中文)

    ### Brew-API参考资料中文解析 #### 简介 Brew-API是Binary Runtime Environment for Wireless (BREW) 平台提供的一套应用程序接口(API),旨在帮助开发者构建高效、可靠的无线应用。该API文档由QUALCOMM ...

    brew-ebook.rar_brew_brew BUIW_brew ebook_buiw

    《brew-ebook.rar_brew_brew BUIW_brew ebook_buiw》是一个与Homebrew(简称brew)和BUIW相关的电子书项目,旨在帮助用户理解和应用brew在模拟器上的功能。Homebrew是Mac OS X系统下的一个开源包管理器,它允许用户...

    brew-4.1.15

    1. "brew-4.1.15.tar.gz":这是一个使用gzip压缩的tar归档文件,常见于Linux和Unix-like系统中。用户可以通过解压这个文件来获取Homebrew源代码,然后按照指示编译和安装。这种方式通常适用于开发者或者需要自定义...

    Brew Videos-crx插件

    【Brew Videos-crx插件】是一款专为英语用户设计的浏览器扩展程序,它致力于简化和优化视频发现的体验,让用户体验到参与酿造过程的乐趣。这个插件的主要目标是将观看视频与特定的兴趣领域——“酿造”相结合,可能...

    brew-2.6.0资源

    4. **更新软件包**:使用`brew upgrade <package-name>`或`brew update && brew upgrade`来保持软件包的最新状态。 5. **卸载软件包**:如果不再需要某个软件包,可以使用`brew uninstall <package-name>`来卸载。 ...

Global site tag (gtag.js) - Google Analytics