导航

忆龙2009:Brew FAQ-常见问答(5)

Posted on 2010-01-17 09:32  忆龙2009  阅读(436)  评论(0编辑  收藏  举报

(1)如何获得启用 BREW 的电话?

    如果市场上有这种电话,则直接购买。 目前我们正在着手准备地区性电话试验室, 以便为开发者提供地点,供其测试和开发原型电话或适用于全世界各种市场的电话。 我们也在讨论是否有必要向开发者提供电话生产商的其它解决方案。
(2)如果我需要(再)扩容或配置 DNS,我 应将电话寄到什么地方?
    您可以通过提供全程跟踪的速递公司(如 Federal Express,而不通过美国邮政服务)将电话寄至以下地址:

QUALCOMM, Inc
Attn :QIS Phone Center (Bldg R - 212P)
5775 Morehouse Dr.
San Diego, CA 92121

同时,请提供以下信息:
返回地址和电话号码
电话问题/请求性质:再扩容、配置 DNS、电话错误等。
ESN 号
如果激活,使用哪个电话号码和运营商
电话的浏览器是否激活?

(3)如何生成测试签名文件?
    要生成测试签名文件,请使用从 BREW 网站上可以获得的 BREW TestSig Generator。 请采用以下格式输入电话的电子序列号 (ESN): 0xaabcccdd。在 Kyocera3035 上, ESN 可以通过卸下电池并查看电话后部的标签找到。 ESN 的前缀是“H:”。下面电话的 ESN 是 FEDA6548, 在 TestSig Generator 中必须输入0xFEDA6548。

在 Sharp Z-800 上,ESN 可以在 Main Menu(主菜单)-> Display(显示)-> Version(版本)中找到。
(4)ISHELL_GetLocation API 存在什么隐私问题?
    这由运营商处理此敏感数据的实施策略和用户的个人首选项决定。
(5)BREW 是否支持 Bluetooth?
    目前,BREW 不支持 Bluetooth,但我们正在做这方面的工作。
(6)BRW 是否支持电子邮件?
    目前 BREW API 在本地不支持因特网或其它电子邮件协议。
(7)BREW 是否在本地支持文本语音转换或语音文本转换?
    不,但第三方公司可以开发此功能并留出一个接口,以便其它应用程序使用此功能。

(8)如何能在多个模块间共享资源?
    默认情况下,动态加载的 BREW 模块的文件访问权限局限于应用程序目录及其子目录。 不过,可能会出现模块共享资源或其它类型文件的需求; 在这种情况下,BREW 提供一个共享目录, AEE_SHARED_DIR。实际共享目录路径对于各个设备各有不同。 在 BREW Emulator 上运行时,共享目录可以在 名为“Shared(共享)”的示例目录中找到。

    任何模块都可以从共享目录中读取文件。但是,要在共享目录中创建 或写入文件,必须使用 MIF 编辑器修改应用程序的权限级别, 以便提供共享目录的“写”权限 (请参阅 BREW SDK 随附的《BREW MIF 编辑器指南》)。

    该目录的全限定路径可以如下所示进行构建:
char sharedBarFile[20];
SPRINTF(sharedBarFile, "%s/%s", AEE_SHARED_DIR, "shared.bar");

    例如,在 Kyocera 电话上,前面的代码将用“/brew/sch/shared/shared.bar”填充“sharedBarFile”, 然后可以将其用于从 shared .bar 文件加载资源。

此技术适用于需要在应用程序间共享的任何类型的文件。

(9)删除/禁用应用程序对应用程序数据和首选项有什么影响?
    使用 Mobile Shop(移动商店)删除/禁用应用程序:

    如果删除应用程序,则应用程序的数据和首选项也一同删除。 应用程序间共享的数据是例外; 该共享数据在删除应用程序时不被删除。有关 共享数据的详细信息,请参阅 FAQ。

    版本 1.0.1 在删除首选项方面存在缺陷:删除应用程序时,无法删除使用 ISHELL_SetPrefs() 设置的首选项。 该缺陷已在 BREW 版本 1.1 中修复。

    如果禁用应用程序,则不删除应用程序的数据和首选项。

    使用 BREW App Loader 删除应用程序:

    如果使用 BREW App Loader 删除应用程序,则该应用程序的首选项将保留。
(10)运行应用程序时为何收到“未知错误 (1)”?
    一般情况下,.mif 文件中指定的 Class ID 和应用程序代码中的 Class ID 不匹配时会出现该错误。 如果以下条件的值为 false,则会出现该错误(在模拟器和电话上都会):
int AEEClsCreateInstance(AEECLSID ClsId, Ishell* pIShell,
Imodule* po,
void** ppObj) {
**ppObj = NULL;
if(ClsId == AEECLSID_MYAPP) {
//要继续,就必须为 true
// AEECLSID_MYAPP 值包含在 .bid 文件中
}
}

    确保 .mif 文件中的 Class ID 与 .bid 文件中的 Class ID 相同。 请注意您可以使用 MIF 编辑器在本地生成 Class ID,用于测试。

(11)试图启动应用程序时为何收到以下错误? 错误:“应用程序名 - 为节约内存, 已卸载该应用程序。必须下载新的版本”。
    该消息出现在模拟器上时表示 dll 应用程序丢失。 在模拟器中运行前使用 Visual C++(Build(编译)->Rebuild All(全部重新编译))编译应用程序。

    该消息出现在电话上时表示找不到 mod 文件。 如果应用程序是使用 Mobile Shop(移动商店)下载的,则可以选择 Yes(是)重新加载。 如果应用程序是使用BREW App Loader 下载的,请确保您已经下载了 .mod 文件。

(12)在什么情况下,小程序无法启动(即 ISHELL_CanStartApplet() 返回 False)?
    显示重要对话框(如Privacy Alert(隐私警告)对话框)时小程序无法启动。 某些情况取决于 OEM,如进行语音呼叫或数据呼叫时是否启动小程序。 例如,Kyocera 3035 允许小程序在进行语音呼叫时启动,而 Sharp Z-800 不允许。
    运行拥有基于使用的许可的应用程序时,为什么在关机后再开机时剩余使用次数会重置为原始值?
许可信息存储在 MIF 文件中。应用程序调用 ILICENSE_SetUsesRemaining()、ILICENSE_DecrementUsesRemaining 或 ILICENSE_IncrementUsesRemaining() 时,BREW 试图更新 MIF 文件。 由于 BREW SDK 版本 1.0.1 中有缺陷,应用程序必须拥有文件权限级别才能成功更新 MIF 文件。 因此,SDK 1.0.1 的暂时解决办法是包括文件权限级别(通过 MIF 编辑器)。 这已在 SDK 版本 1.1 中修复,即基于使用的应用程序在 1.1 中不必拥有文件权限级别。 有关权限的详细信息, 请参阅此 FAQ。

(13)如何确定我的电话上的软件版本?
在 Kyocera 3035 上:

定位到空闲屏幕键入 111111,然后按 Select(选择)键选择 Version(版本)菜单项
查找 SW Version(软件版本)下列出的版本号码。例如: LR2.0.31
在 Sharp Z-800 上:
软件版本可以在 Main Menu(主菜单)-> Display(显示)-> Version(版本)下找到。

(14)如何能将数据从一个应用程序传递到另一个应用程序?
    可以通过在共享数据位置创建文件/数据库在应用程序间共享数据。 请参阅 FAQ。
    将数据从一个应用程序传递到另一个应用程序的另一种方法是通过 ISHELL_SendEvent() 或 ISHELL_PostEvent 函数,不过这不是推荐方法。 可以将这两个函数中事件特定的 32 位值 (dwParam) 参数指向 App A 中的数据结构。 App B 接收事件时,应该立即复制数据。 这一点很重要,因为如果 App B 决定为响应事件而自动启动,则会在没有足够 RAM 启动 App B 的情况下停止并卸载 App A,因而使 App A 在 dwParam 中向 App B 提供的指针无效。

例如:

// 应用程序 A

// 要传递到应用程序 B 的数据是一个宽字符串:pMe->myStringISHELL_SendEvent(pMe->a.m_pIShell, AEECLSID_APP_B, EVT_USER,MY_USR_EVT,(uint32) pMe->myString);

//应用程序 B

case EVT_USER:
if(wParam == MY_USR_EVT) {
AECHAR* data = WSTRDUP((AECHAR*)dwParam);

// 可以通过调用 ISHELL_StartApplet 启动应用程序 B
... ... ...
... ... ...
FREE(data);
return TRUE;
}

    请注意不保证应用程序能够接收已发送/传递给它的所有事件。 下面举例说明,请考虑可用堆为 60K 的设备。 假定 App A 的大小为 45K,App B 的大小也是45K。 如果 App A 试图向 App B 发送/传递事件,则由于 RAM 限制不会加载 App B,该事件会被丢弃。

(15)什么是“Preparing Applications(准备应用程序)”?
    BREW 内核应用程序的一个函数,是向“应用程序下载服务器 (ADS)” 发送新下载的应用程序和最近删除的应用程序的确认。 例如,通过 MobileShop 删除应用程序时, BREW 保持一个记录,说明需要将删除确认 (ack) 发送到服务器。 BREW 试图在下次连接到 MobileShop 时或下次打开手持设备电源并启动 BREW 时发送 ack 并启动 BREW(在第二种情况下,BREW 启动内核应用程序发送确认)。 BREW 内核应用程序是由 BREW 内部启动 - 用户无法启动内核应用程序。

    如果 BREW 内部启动内核应用程序时有应用程序正在运行, 则会暂停该正在运行的应用程序。因此,应用程序只需处理“中止/恢复”事件 (如中止 和恢复应用程序中所述),就可正确处理“Preparing Applications(准备应用程序)”消息。

(16)我的应用程序中需要包含的图像及其大小要求是什么?
    所有 BREW 应用程序均要求包含以下三种指定像素尺寸的应用程序图像:

缩略图: 16 x16 像素
图标: 26 x26 像素
图像: 最大大小视不同的设备而有所不同

KWC 3035 和 Sharp Z-800 上的图像大小如下:
QCP3035: 69 x 46 像素或更小
Sharp Z800: 108 x72 像素或更小
LG VX-10: 120 x100 像素或更小

    Sharp 1.08 和 LG VX-10 使用缩略图显示应用程序管理器中的应用程序, 在突出显示一个应用程序时该图像就显示在屏幕中央。 Kyocera 3035 和 Sharp 2.01使用图标显示应用程序管理器中的应用程序。

(17)是否可以使用 BREW API 获取 ESN 或其它唯一设备标识符?
    目前没有可以获取设备 ESN 的 BREW API。 可以通过 BREW API 访问的唯一设备标识符是 设备电话号码。请参阅“如何 获取正在运行我的应用程序的设备电话号码?”
(18)对于我的应用程序可以随附的文件数有限制吗?
    由于手持设备上的数据结构限制不同,所以建议使用的文件数要尽可能少。 一些手持设备上有 OEM 施加的 最大 BREW 文件数量限制,且有可能在 用完内存之前已无可用文件。

    Sharp Z-800 手持设备有一个 BREW 文件限制,要求 所设计的应用程序使用的文件不得超出八 (8) 个。 包括应用程序包中的文件 - mod、bar、sig 和 mif 文件。还包括应用程序使用的模块。该 限制是基于 Z-800 对所有可用于 BREW 应用程序的文件数有 限制(在 2.01 build 上为 93 个文件)的事实形成的, 反之,该限制又规定了手持设备上适用的应用程序总数的上限。

    请注意,8 文件限制适用于非运行时应用程序所用的 文件数。您的应用程序可以 在运行时创建其它文件,但必须在应用程序退出时删除它们。

    当前的 Kyocera 3035 构件可用于创建更多的 BREW 文件, 范围为 250。正如前所述, 继续限制应用程序使用的文件数是明智之举。

    请注意,应用程序中包含的文件多于 8 个时 可能会导致无法通过 True BREW 测试,或导致 运营商拒收您的应用程序。

(20)使用 ISHELL_SetPrefs() 设置的首选项存储在什么地方? 我必须用“可修改”标记为我的应用程序签名吗?
    ISHELL_SetPrefs() 将首选项信息存储在您的应用程序的外部 BREW 数据库中。 由于存储应用程序首选项不 修改任何应用程序文件,不必使用“可修改”标记为应用程序签名。
(21)BREW 如何解决为无线手持设备开发应用程序和服务的问题?
    BREW 平台是一个无线手持设备的标准应用程序开发环境,手持设备涵盖范围从便宜的大众化电话到多功能高端无线设备。通过该平台,您可以编写能在多种电话上使用的应用程序,而不要求对每个新的电话型号进行应用程序修改。BREW 解决了当前的编程难题,如不需要电话及其软件的内部知识。
(22)创建 BREW 应用程序自始至终需要什么?
    需要 BREW 软件开发包 (SDK)、Windows® 开发环境和 ARM 编译器(ARM 已创建了专门支持 BREW 的 ARM BREW 编译器,可以向 BREW 开发者提供,售价 1,500美元。)您还需要为您的应用程序的 TRUE BREW 兼容性测试进行计划。通过测试的应用程序(测试是无线运营商在提供您的应用程序以便通过其网络下载前要求的)将收到 QUALCOMM 的数字签名。手持设备使用此签名进行验证,之后才允许下载或运行应用程序。
(23)如何获得 BREW SDK?
    只需单击此处下载即可。

(24)如何通过编写 BREW 应用程序赚钱?
    您的应用程序经过 TRUE BREW 测试后,QUALCOMM 将它与您的条款声明页传递到 BREW 运营商外联网上。一旦您接受与运营商间的条款,运营商将在他们的 BREW应用程序下载服务器上向他们的用户提供您的应用程序。客户采用您的应用程序时,将根据您与每个运营商达成的条款向您支付酬金。QUALCOMM 正在将中间件与运营商网络链接起来以管理应用程序分发以及对您的酬金支付。您作为 BREW 开发者有权访问的开发者外联网允许您跟踪运营商及最终用户对您的软件的采用情况。
(25)兼容性测试包括哪些内容?由谁进行测试?
    由第三方测试试验室来执行兼容性测试。测试的具体内容因应用程序而异,但一般来说,测试将涉及以下内容:
    应用程序如何与核心电话功能交互。例如,用户在另一个应用程序中时应用程序在被推入设备时如何处理即时通信或其它系统警告。
    内核应用程序的长期稳定性。向事件队列发送大量的事件,以查看应用程序如何处理它们,看看系统的不稳定性(如崩溃)、内存使用(如峰值)等。
重要的应用程序功能。进行测试以确保您宣称的重要应用程序功能在应用程序中实际存在。QUALCOMM 不会从最终用户角度测试该功能的“正确性”。
    应用程序使用的每个 BREW 功能领域的一组标准测试。例如,如果应用程序使用 BREW 文件系统调用,则我们将使用标准的文件系统测试套件。同样,如果应用程序使用 BREW 网络调用,则我们将用标准的网络测试套件进行测试。
    任何因运营商或生产商而异的外观要求。
    与目标设备的兼容性。
    与必需附件的交互。
    与 QUALCOMM 指定的一小组内核应用程序的互操作性。例如,如果市场上的大多数电话最终使用某浏览器,则我们将测试所提交的应用程序,确保它能与该浏览器较好地互操作。

(26)QUALCOMM 是否会对兼容性测试收费?
    是,QUALCOMM 将按成本回收情况收取测试费用。QUALCOMM 将尽可能降低您的这些成本。

(27)通过后会怎样?
    您的应用程序现在已经过 TRUE BREW 测试,可以放在运营商的下载服务器上。QUALCOMM 将使用数字签名对您的应用程序签名。运营商下载服务器和客户手持设备将查找该签名以对您的应用程序下载进行验证。

(28)为 BREW 平台开发还需要哪些其他费用?
    BREW 软件开发包 (SDK) 可以免费向开发者提供。QUALCOMM 还将免费提供基于 Web 的开发者支持。您将负责获取自己的开发工具,包括 ARM BREW 编译器。
    如何将我的应用程序安装到特定手持设备上或让特定运营商采用我的应用程序?
    QUALCOMM 将确保运营商和生产商可以访问已经通过兼容性测试并经过 TRUE BREW 测试的所有应用程序。我们鼓励您也将您的应用程序销售给运营商和生产商。

(29)编写 BREW 应用程序需要多长时间?
    这取决于应用程序的复杂性。许多应用程序可以在一到两月内完成。非常简单的应用程序可以用几周时间写完。BREW 使应用程序的编写更加容易,因为它为今天的 Windows、Palm 和其它大众化开发者提供了一个比较熟悉的标准环境。BREW 还解决了困难的集成问题,而过去需要数月实施时间。

(30)BREW 平台支持哪些编程语言?
    BREW 相对于开发语言是中立的。本地 C 和 C++ 应用程序的运行最有效。尽管目前在 C++ 的使用方面存在一定局限,但是我们正在努力消除这些局限。如果Java 虚拟机在设备、浏览器(WAP、CHTML 等)和其它环境下可用,BREW 还将支持 Java 应用程序的集成。
(31)BREW 将与哪些无线网络协同工作?
    QUALCOMM 与日本 KDDI、韩国 Korea Telecom Freetel (KTF) 和美国 LG Telecom、LEAP 和 Verizon Wireless、加拿大 Bell Mobility、墨西哥 Pegaso、南美Movicom and Telesp、新西兰 NZ Telecom 签署了谅解备忘录。有望在近期公布其它运营商合作伙伴。公司正在与全球其它主要 CDMA 运营商进行积极的磋商。

    QUALCOMM 预计启用 BREW 的服务将在 2001 年年底开始推出,2002 年将推出更多的服务。
(32)如果使用 BREW 有问题,可以到何处求助?
    除此 FAQ 和 BREW SDK 中的文档外,您可以在 http://www.qualcomm.com/brew/sch/developer/support/knowledge.html 网站上查找到更多有深度的知识库文章。如果您在 SDK 文档、此 FAQ 或知识库中没有找到查找的答案,且您已注册为 BREW 开发者,则可以给 QUALCOMM 的开发支持组发送电子邮件,地址为:brew-support@qualcomm.com

(33)如果我的应用程序已放入运营商目录,该如何监视使用情况?
    从具有您的 QUALCOMM Authentic Document ID 的计算机上访问 http://notarization.verisign.com/pta。该服务会根据您的 Authentic Document ID 或QUALCOMM Digital Notarization Certificate 让您进行自我验证。选择此证书并继续。