65.9K
CodeProject 正在变化。 阅读更多。
Home

开始使用BlackBerry Java开发工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (3投票s)

2011年10月6日

CPOL

28分钟阅读

viewsIcon

29292

章节摘录:BlackBerry开发基础

ShowCover.jpg

John M. Wargo
由 Addison-Wesley Professional 出版
ISBN-10: 0-321-64742-4
ISBN-13: 978-0-321-64742-9

本章为开发者提供了启动 BlackBerry Java 开发项目并选择合适的开发工具所需的信息。本章包括如何下载和安装 RIM 的 Java 开发工具。本章主题包括:

  • 理解 BlackBerry Java 应用程序文件
  • 为 Java 应用程序选择合适的开发平台
  • 安装 BlackBerry Java 开发工具
  • 获取并安装在 BlackBerry 设备上运行使用受控应用程序编程接口 (API) 的应用程序所需的应用程序签名密钥
  • 使用预处理器从一组源文件生成不同版本的应用程序

选择 Java 开发平台并安装工具后,后续章节将介绍如何使用各个开发工具为 BlackBerry 构建和调试 Java 应用程序

  • 第13章,“使用 BlackBerry Java 开发环境 (JDE)”,涵盖了 BlackBerry JDE。
  • 第14章,“使用 BlackBerry JDE Eclipse 插件 (eJDE)”,涵盖了 BlackBerry eJDE。
  • 第15章,“使用 BlackBerry JDE 组件包工具”,涵盖了 BlackBerry JDE 组件包。

12.1 理解 BlackBerry Java 应用程序文件

BlackBerry 平台使用几种类型的文件来包含应用程序代码,并为应用程序部署工具提供所需的应用及其组件信息。开发者必须理解每种文件的作用,才能有效地构建和部署应用程序。以下部分描述了每种文件类型。开发工具还使用其他文件,但此处讨论的文件仅是部署到设备或在向设备部署应用程序时使用的文件。

12.1.1 .cod 文件

BlackBerry .cod 文件是部署到 BlackBerry 设备的编译应用程序文件。.cod 文件将一个或多个编译后的 Java 类捆绑在一起,以供 BlackBerry Java 虚拟机使用。与标准 Java(将单个 Java 类编译成类文件(扩展名为 .class)并将编译后的类聚合到 JAR 文件(Java ARchives,扩展名为 .jar))不同,RIM 使用这种专有文件格式,因为它针对 BlackBerry 平台进行了优化。

每个单例 .cod 文件包含一个或多个编译后的 Java 类(因此,大致相当于标准 Java JAR 文件);但是,它有严格的大小限制:64k 代码和 64k 数据。同级 .cod 文件是多个单独构建的 .cod 文件的存档,有助于缓解单例 .cod 文件的尺寸限制。当应用程序接近 .cod 文件大小限制时,应用程序的部分功能必须迁移到单独的模块(JDE 和 eJDE 中的库项目)中,这些模块由开发工具打包成同级 .cod 文件进行部署。

为其他平台创建的 MIDlet 应用程序(.jar 文件)可以轻松转换为 .cod 文件,以便部署到 BlackBerry 设备;有关此主题的更多信息,请参阅 BlackBerry 开发者知识库文章 DB-00055。

12.1.2 .alx 文件

应用程序的 .alx 文件由 BlackBerry 应用程序加载器(通过 BlackBerry 桌面管理器或 BlackBerry Enterprise Server)使用,如第16章“部署 Java 应用程序”所述,用于将应用程序 .cod 文件部署到 BlackBerry 设备。.alx 文件是一个简单的文本文件,它

  • 可以手动创建(并非真正必要,请参见下一条)
  • 由 BlackBerry JDE 和 eJDE 自动生成
  • 可以引用应用程序的多个版本(用于部署到不同的 BlackBerry 设备软件版本)、设备类型和功能

该文件采用 XML 格式,包含应用程序加载器所需的信息,用于

  • 描述应用程序(在安装过程中向用户显示的对话框中以及在 BlackBerry 设备上安装的应用程序列表中)
  • 确定应用程序是否与目标设备兼容
  • 了解哪些文件需要随应用程序部署(取决于 BlackBerry 设备软件版本)

文件中定义的部分应用程序信息是从 JDE 和 eJDE 中定义的开发者输入的应用程序属性(应用程序名称、版本、供应商和版权)填充的。开发者生成或更新 .alx 文件,并将其(连同应用程序 .cod 文件)提供给任何将使用 BlackBerry 应用程序加载器部署应用程序的人员。部署 BlackBerry Java 应用程序的选项在第16章中详细描述。

URL 启动应用程序(在第11章“构建 BlackBerry Java 应用程序”中描述)的简单 .alx 文件如下所示:

<loader version="1.0">
<application id="URLLaunch">
  <name >
      URL Launch
    </name>
    <description>
      Launches the default browser and opens 
      www.bbdevfundamentals.com
    </description>
    <version >
      1.0
    </version>
    <vendor >
      BlackBerry Development Fundamentals
    </vendor>
    <copyright >
      Copyright  2009 com.bbdevfundamentals
    </copyright>
    <fileset Java="1.39">
      <directory >
      </directory>
      <files >
        URLLaunch.cod
      </files>
    </fileset>
  </application>
</loader>

一个更复杂的 .alx 文件,根据目标设备运行的 BlackBerry 设备软件版本部署不同的 .cod 文件,如下所示。请注意它如何使用 fileset 元素的 _blackberryVersion 属性和 <directory> 元素来指向目标设备应用程序 .cod 文件的正确版本

<loader version="1.0">
<application id="URLLaunch">
  <name >
      URL Launch
    </name>
    <description>
      Launches the default browser and opens 
      www.bbdevfundamentals.com
    </description>
    <version >
      1.0
    </version>
    <vendor >
      BlackBerry Development Fundamentals
    </vendor>
    <copyright >
      Copyright  2009 com.bbdevfundamentals
    </copyright>
      <fileset Java="1.34" _blackberryVersion="[4.1.0,4.2.3)">
         <directory>410_423</directory>
         <files>urllaunch.cod</files>
      </fileset>
      <fileset Java="1.34" _blackberryVersion="(4.3.0,4.3.1]">
         <directory>430_431</directory>
         <files> urllaunch.cod</files>
      </fileset>
   </application>
</loader>

有关 BlackBerry .alx 文件更复杂选项的信息,请参阅 BlackBerry 开发者知识库文章“操作方法:创建单个 .alx 文件以安装应用程序的多个版本”(文章 #DB-00028)。

12.1.3 .jad 文件

.jad 文件是一个简单的文本文件,由 BlackBerry 应用程序 Web 加载器、BlackBerry 浏览器和 BlackBerry App World 在向设备部署 BlackBerry 应用程序时使用(如第16章所述)。该文件可以手动制作,但没有必要,因为它会在构建 BlackBerry Java 开发项目时由 BlackBerry JDE 和 eJDE 自动生成。它包含在部署期间验证应用程序文件所需的信息以及应用程序的其他详细信息。开发者可以生成或更新 .jad 文件,并将其(连同应用程序的 .cod 文件)提供给任何将使用所列工具部署应用程序的人员。部署 BlackBerry Java 应用程序的选项在第16章中描述。

第11章中描述的 URL 启动应用程序的 .jad 文件示例如此。行号不属于文件;它们是为了便于理解这些描述而添加的。

第3行定义了应用程序所需的特定模块。如果所需模块不可用,则应用程序将无法部署到设备。

第9行包含应用程序 .cod 文件的安全哈希算法 (SHA1) 哈希值,用于验证 .cod 文件的完整性。

第10行包含 .cod 文件大小参数;此值可以使用第15章中描述的 UpdateJad.exe 文件进行更新。

第12至14行表示 JDE 或 eJDE 中填充的应用程序项目的属性(版本、名称和供应商)。

1	Manifest-Version: 1.0
2	RIM-COD-Module-Name: URLLaunch
3	RIM-COD-Module-Dependencies: net_rim_cldc,net_rim_bbapi_
	 browser
4	MIDlet-Jar-Size: 2832
5	MIDlet-1: ,,
6	RIM-COD-Creation-Time: 1242820557
7	MIDlet-Jar-URL: URLLaunch.jar
8	RIM-COD-URL: URLLaunch.cod
9	RIM-COD-SHA1: e1 c2 7b bc 14 0c 63 cc 43 80 bf b2 1e 47 a1 77 
  c9 08 95 7b
10	RIM-COD-Size: 1084
11	MicroEdition-Configuration: CLDC-1.1
12	MIDlet-Version: 1.0
13	MIDlet-Name: URLLaunch
14	MIDlet-Vendor: BlackBerry Development Fundamentals
15	MicroEdition-Profile: MIDP-2.0
16	RIM-MIDlet-Flags-1: 0

12.2 为 Java 应用程序选择正确的开发平台

在深入研究开发工具之前,讨论在构建应用程序时选择哪个开发平台非常重要。后续章节将介绍不同工具的优缺点,但大多数开发者忽略了在构建应用程序时应从哪个 BlackBerry 环境开始。

BlackBerry 应用程序在设备上可以利用的功能差异很大,具体取决于设备上运行的 BlackBerry 设备软件版本。当 RIM 向设备添加新功能时,通常会添加一组相应的 API,开发者可以使用它们来利用这些功能。任何使用特定功能(和相应 API)的应用程序都只能在支持该功能的设备上运行。一切都向前兼容,因此该功能将在未来版本的 BlackBerry 设备软件中可用;您不会希望应用程序在较新的设备上出现问题。BlackBerry Java 应用程序与其创建的最低 BlackBerry 设备软件版本绑定;它不会在运行任何早期版本 BlackBerry 设备软件的设备上运行。

当 RIM 发布新版本的 BlackBerry 设备软件时,与相应版本 BlackBerry Java 开发工具一起包含的 API 库也会更新。此更新还会影响集成开发环境 (IDE) 中的在线帮助和代码完成功能、设备模拟器等。

注意 - 您实际上可能会让您的应用程序在早期版本的 BlackBerry 设备软件上运行,但它很可能不会。如果它确实有效,请不要自满;仅仅因为它有效并不意味着以后不会出现其他问题。在早期版本上运行为特定 BlackBerry 设备软件版本制作的应用程序不受支持,也不应尝试。这样做可能会“砖化”设备——使设备永久无法使用。

由于每个版本的 BlackBerry 设备软件都有其自己的专用开发工具版本,如果您正在为多个 BlackBerry 设备软件版本开发应用程序,则必须安装多个版本的工具。

12.3 选择 BlackBerry Java 开发环境

BlackBerry Java 开发工具提供了一整套 API 和工具,开发者可以使用它们来开发在 BlackBerry 设备上运行的 Java 应用程序。RIM 为 Java 开发者提供了不同的开发工具,好消息是它们都是免费的。唯一的例外是组织在购买一组签名密钥时产生的费用,如本章后面所述。

BlackBerry 开发者网站(http://www.blackberry.com/developers)提供三种类型的 Java 开发工具。您选择的工具将根据您对 IDE 的偏好而异。可用的选项有:

  • BlackBerry Java 开发环境 (JDE):BlackBerry 的完整 Java 开发环境。虽然就 IDE 而言并不复杂,但它是 RIM 开发者多年来用于构建 BlackBerry 设备软件和相关应用程序的工具。如果开发者不关心使用哪个 IDE 来构建 BlackBerry 应用程序,或者他们希望将所有 BlackBerry 开发隔离到单独的开发环境中,他们可能会选择此选项。
  • BlackBerry JDE Eclipse 插件 (eJDE):提供与 JDE 相同的功能,但这些工具作为 Eclipse IDE 的插件集成。此工具集的好处是,开发者可以获得 JDE 提供的开发工具以及 Eclipse 平台支持的所有其他复杂功能和插件。如果开发者已经熟悉 Eclipse,或者他们正在进行其他类型的开发并希望为所有开发使用相同的 IDE,他们可能会选择此选项。这是 RIM 目前建议开发者用于 BlackBerry 平台 Java 开发的开发工具。展望未来,功能增强将仅在 eJDE 中进行。
  • BlackBerry JDE 组件包:当开发者使用与前面列出的 IDE 不同的 IDE 开发 BlackBerry Java 应用程序时所需的工具集合。如果开发者已经熟悉其他开发环境,并且出于某种原因不愿意或无法切换到其中一个集成 BlackBerry 工具,他们可能会选择此选项。

这些工具对于希望构建用于在 IDE 之外构建或操作应用程序的自动化流程的开发者也很有用。

每种工具都将在后续章节中介绍。

12.4 获取 BlackBerry Java 开发工具

当您准备下载 BlackBerry 开发工具时,请打开浏览器并导航至 http://www.blackberry.com/developers。在您阅读本文时,该网站可能会有所变化,因此请查找名为“Java Application Development Tools & Downloads”的部分,然后点击下载链接,如图12.1所示。当页面打开时,查找“Java Development Tools”部分。应该有下载 BlackBerry JDE 和 BlackBerry JDE Eclipse 插件的链接。BlackBerry JDE 的链接也应包含下载 BlackBerry JDE 组件包的链接。

12fig01.jpg

图 12.1 BlackBerry 开发工具和下载页面

根据您的选择,会出现一组不同的选项。请特别注意每种工具的系统要求。每种工具都要求在运行 BlackBerry Java 开发工具的系统上安装一个版本的 Sun Java 开发工具包。

12.4.1 下载和安装 BlackBerry JDE 或 JDE 组件包

下载 JDE 或 BlackBerry JDE 组件包时,向下滚动页面,直到找到包含下载特定版本工具链接的页面部分。根据您的特定需求选择适当的下载。如果您正在为多个 BlackBerry 设备软件版本构建应用程序,则需要下载每个您将使用的版本的安装程序。如果您正在为单个版本构建应用程序或在多个 BlackBerry 设备软件版本上运行单个应用程序,则需要下载与您将支持的最低 BlackBerry 设备软件版本对应的版本。

要安装 JDE 或 JDE 组件包,首先确保系统上已安装所需 Java SDK 的副本,然后启动您从网站下载的文件。按照提示完成安装,即可开始使用。根据您的 Windows 配置,您可能需要在启动开发工具之前将 JDK bin 文件夹添加到 Windows PATH 环境变量中。

注意 - BlackBerry MDS 模拟器是测试使用网络连接访问远程服务器的 BlackBerry 应用程序(使用设备模拟器)所必需的。由于某种原因,4.2 和 4.2.1 JDE 未附带 MDS 模拟器(自 4.1 以来的所有其他版本都附带了)。如果您专门使用这些 JDE 版本中的任何一个,请务必下载并安装 MDS 模拟器,然后将受影响的 JDE 配置为使用它。

如果与 JDE 其他版本协同工作,4.2 和 4.2.1 JDE 可以配置为使用其他 JDE 中包含的 MDS 模拟器。

12.4.2 下载和安装 BlackBerry JDE Eclipse 插件

下载 BlackBerry JDE Eclipse 插件时,下载页面上会显示一组不同的选项。在这种情况下,完整的安装程序包括编辑器组件和相关文件,以及一个 eJDE 组件包(撰写本文时为 4.5 版本),其中包含特定版本 BlackBerry 设备软件的库和模拟器。您必须至少下载完整安装;否则无法在 Eclipse 中开发 BlackBerry 应用程序。如果您需要支持为其他 BlackBerry 设备软件版本构建或维护应用程序,您可能需要下载额外的 eJDE 组件包(每个支持的 BlackBerry 设备软件版本一个)。

注意 - 由于 eJDE 组件作为插件安装到 Eclipse 中,因此 Eclipse IDE 必须在 eJDE 安装之前安装。您可以从 http://www.eclipse.org 下载最新版本的 Eclipse。

安装过程的第一步是将 BlackBerry Java 开发工具安装到 Eclipse IDE 中。将 eJDE 完整安装包的 zip 文件解压到本地硬盘文件夹;文件放在哪里并不重要,只要 Eclipse 安装程序能够访问它们即可。文件解压后,启动 Eclipse IDE 并完成以下步骤:

  1. 程序打开后,访问“帮助”菜单,选择标有“软件更新”的菜单项。
  2. 在出现的窗口中,选择“可用软件”选项卡并单击“添加站点”按钮。
  3. 在“添加站点”对话框中,单击“本地”按钮。
  4. 使用出现的标准 Windows“打开文件夹”对话框,导航到安装文件解压的文件夹并打开该文件夹。
  5. 返回“添加站点”对话框,单击“确定”按钮继续。
  6. 返回“软件更新和附加组件”窗口,确保选择“BlackBerry JDE Eclipse 插件”和“BlackBerry 组件包”选项,然后单击“安装”按钮。Eclipse 将提示您确认安装并完成该过程,最终建议在继续之前重新启动 IDE。此时,eJDE 已安装并可供使用。

如果您下载了额外的组件包,请为每个要与此 Eclipse 实例一起使用的额外组件包重复该过程。

北美用户可以使用 BlackBerry Eclipse 更新站点直接将组件包下载并安装到现有的 Eclipse 安装中。为此,请打开“软件更新和附加组件”窗口,然后单击“添加站点”按钮。不要单击“本地”添加本地引用,而是在“位置”字段中输入 http://www.blackberry.com/go/eclipseUpdate,然后单击“确定”。Eclipse 将连接到 BlackBerry Eclipse 更新站点并检索可用于安装的组件列表,如 图 12.2 所示。选择您要安装的组件,然后单击“安装”按钮以下载并安装选定的组件。

12fig02.jpg

图 12.2 完成组件包安装

12.5 应用程序签名密钥

大多数开发者可能会发现自己需要使用第11章中描述的受控 API 之一。后续章节将介绍如何在不同的 Java 开发工具中签署应用程序,但现在似乎是讨论如何获取签署应用程序所需的签名密钥的好时机。

使用受控 API 的 BlackBerry 应用程序在未用适当密钥签署之前无法在 BlackBerry 设备上运行。这些应用程序可以在 BlackBerry 模拟器中运行,因此可以在没有适当密钥的情况下构建和测试应用程序。这允许开发者完成所有必要的工作来确定实现程序化功能的最佳方式,并且只有在使用受控 API 并需要在真实设备上测试时才购买密钥。

根据您的应用程序使用的受控 API 类型,您可能需要不同的密钥集。大多数受控 API 可以与标准密钥集一起使用,该密钥集可以直接从 RIM 购买,价格为20美元。如果您的应用程序使用任何 Certicom 加密 API,则需要单独的流程来获得他们的许可证。考虑到 RIM 最近完成了对 Certicom 的收购,这种限制将来很可能会消失。

以下是关于签名密钥的一些重要事实:

  • 密钥必须安装在已安装 BlackBerry Java 开发工具的系统上。
  • 每组签名密钥都与特定的 PC 相关联。如果您想在多台 PC 上签署应用程序,则必须为每台将用于签署应用程序的 PC 购买一组签名密钥。有些组织会设置一台单一的签名 PC,并在该 PC 上完成所有应用程序签名。其他组织则为每个开发人员工作站购买一组密钥。
  • 准备好将一个十位数的个人识别码 (PIN) 与您的签名密钥购买关联起来。安装密钥时需要 PIN,因此请务必准确记录并妥善保管。这不是设备 PIN;它只是您在购买密钥时创建的一个特殊密钥,用于向 RIM 识别您的身份,然后在订单处理后再次注册时使用。
  • 如果您丢失密钥或需要将其安装到其他 PC 上,您必须联系 RIM 开发者支持 (devsupport@rim.com) 请求一组新密钥。
  • 当您购买一套密钥时,无需为每个签署的应用程序付费。密钥配置为支持大量的签名(数百万),因此您应该没有问题。
  • 密钥永久有效。
  • 每当密钥被使用时,签名密钥的注册所有者都会收到来自 RIM 签名机构的电子邮件。每种在应用程序中使用的库类型都会发送一封电子邮件。这些电子邮件是为了安全目的发送的,因此密钥所有者会知道是否有人使用密钥签署了应用程序。请确保注册所有者不介意收到大量电子邮件。他可以随时使用电子邮件过滤器自动将这些邮件重定向到文件夹,或在它们到达时自动删除它们。

关于签名密钥的顾虑 - 大多数开发者关于签名密钥的第一个问题是:“我是否必须为每个签署的应用程序购买一套密钥?”如果你仔细想想,如果真是这样,那将是一个相当繁琐的过程。不,你为每台 PC 购买一套密钥,你可以签署任意数量的应用程序。

实际上,并非如此;您可以进行的签名数量是有限制的,但数量非常庞大,无论您做什么,都应该没有问题。在本章用于截屏的密钥集中,签名工具报告“客户端还剩下 2,147,483,647 个代码签名请求。”这对于普通开发者的一生来说已经足够了。

12.5.1 购买签名密钥

要购买一套签名密钥,请打开 Microsoft Internet Explorer 网页浏览器并访问 http://www.blackberry.com/developers。在出现的页面上,导航到负责 Java 开发的网站区域,并在右侧导航栏中查找名为“代码签名密钥”的项。单击该链接后,将打开一个页面,您可以在其中找到有关签名密钥以及如何购买一套密钥的信息。您可以使用基于网络的表单和您的信用卡直接在线购买,也可以填写表单并将信息传真给 RIM 进行处理。

签名密钥支付选项 - 购买一套签名密钥时,必须使用信用卡购买。由于密钥部分用于安全目的,RIM 必须确保它知道请求密钥的实体身份。

如果一套密钥被用于创建被认为是危险或用于恶意目的的应用程序,RIM 希望将这些密钥与一个人(姓名和账单地址)关联起来。

完成密钥购买后,可能需要一到三个工作日才能收到 RIM 的签名密钥。如果您在此时间内未收到密钥,请发送电子邮件至 devsupport@rim.com 查询订单状态。RIM 处理订单后,您会收到至少三封来自 BlackBerry 应用程序开发支持团队的单独电子邮件。每封电子邮件都包含一个附件(一个 .csi 文件)和有关如何完成密钥安装的说明。

12.5.2 安装签名密钥

在安装密钥之前,请确保至少有一款 BlackBerry Java 开发工具安装在将安装密钥的 PC 上。安装过程因您是将密钥安装到 JDE 还是 eJDE 而异。此外,如果您将使用多个版本的 JDE(每个支持的 BlackBerry 设备软件版本一个)或 eJDE 以及一个或多个版本的 JDE,则必须完成一个额外的配置步骤,以使签名密钥在多个工具之间可用。所有这些都将在以下部分中描述。

将签名密钥安装到 JDE

要将密钥安装到 JDE 中,每个密钥文件都必须单独启动,以将密钥集成到 BlackBerry Java 开发工具中。密钥文件可以直接从包含每个密钥的电子邮件中启动,或者每个文件可以从邮件中下载并从 Windows 资源管理器或“我的电脑”中启动。

当密钥文件启动时,BlackBerry 签名工具将打开并管理密钥安装过程,这在“完成签名密钥安装”部分中描述。此过程必须对每个签名密钥 .csi 文件重复。

如果您启动一个 .csi 文件,但没有任何反应,请首先确保系统上安装了 Java 运行时环境和其中一个 BlackBerry JDE 版本。在某些情况下,当 .csi 文件启动时,签名工具不会自动启动。在这种情况下,您需要从命令行手动注册每个 .csi 文件。要开始手动安装,请按照以下步骤操作:

  1. 将 .csi 文件复制到 JDE bin 文件夹。(对于 4.7 JDE,文件夹位置应为 C:\Program Files\Research In Motion\BlackBerry JDE 4.7.0\bin。)
  2. 在 Windows 中打开一个 DOS 命令提示符,然后导航到包含 .csi 文件的文件夹。
  3. 对于每个 .csi 文件,执行以下命令:
  4. javaw -jar SignatureTool.jar [CSI_File_Name].csi

    在此命令中,[CSI_FILE_NAME] 指的是 .csi 文件的文件名。

此时,请按照“完成签名密钥安装”部分中描述的步骤操作。

将签名密钥安装到 eJDE

对于 eJDE,签名密钥文件安装直接集成到 Eclipse 工具中。要开始此过程,请在 Eclipse 中访问 BlackBerry 菜单,选择“安装签名密钥”菜单项,然后按照下一步描述的步骤操作。

完成签名密钥安装

当第一个密钥安装时,需要额外的设置步骤才能完成该过程。签名工具会显示一个对话框,类似于图 12.3 所示,该对话框指示用于保护签名密钥的私钥无法在 BlackBerry Java 工具安装中找到。您必须从对话框中选择“是”才能完成安装,除非您认为此过程已配置并且您收到了错误消息。如果您从对话框中选择“否”,则安装过程将中止。

12fig03.jpg

图 12.3 BlackBerry 签名工具私钥对话框

签名工具随后会要求您提供一个密码,以保护对 PC 上签名密钥的访问,如 图 12.4 所示。每次使用密钥签署应用程序时都需要此处输入的密码。请选择一个在需要时易于记住的密码。如果密码丢失,您需要从 RIM 获取一套新的签名密钥才能签署 Java 应用程序。一套替换密钥应该是免费的;只需发送电子邮件至 devsupport@rim.com 请求一套替换密钥。

12fig04.jpg

图 12.4 BlackBerry 签名工具私钥密码

私钥是使用通过随机鼠标移动和键盘输入生成的信息生成的,如图 12.5 所示。移动鼠标并在键盘上输入随机键,直到进度条达到 100%。此时,签名工具管理和保护签名密钥所需的信息已生成,并且您将不会再次被提示完成此 PC 的过程。

12fig05.jpg

图 12.5 生成私钥的随机信息

由于签名密钥仅限于一台 PC,因此安装过程包括将密钥安装注册到 RIM 的步骤。

该过程的下一步必须为每个签名密钥重复。签名工具会提示您提供在购买期间分配给这些密钥的 PIN 以及在较早步骤中分配的私钥密码,如 图 12.6 所示。输入信息后,单击“注册”按钮以向 RIM 注册签名密钥安装。由于签名工具通过 Internet 连接进行注册,如果安装密钥的环境需要使用代理服务器,您可以在单击“配置代理”按钮后提供代理服务器配置设置。

12fig06.jpg

图 12.6 BlackBerry 签名工具注册

如果注册过程成功,将出现一个对话框,其中包含有关已注册密钥的信息,包括密钥支持的签名数量。如果过程中发生错误,请在开发者知识库 (http://www.blackberry.com/developers) 中搜索该错误,并按照您找到的任何适当说明解决问题。

对您收到的每个密钥文件重复此步骤。由于私钥已经创建,因此唯一必须完成的步骤是向 RIM 注册其他密钥。

复制签名密钥信息

如果您只使用 eJDE,则签名信息会随插件一起安装,并可在多个版本的 eJDE 组件包中通用。如果使用多个版本的 JDE(每个受支持的 BlackBerry 设备软件版本一个)或 eJDE 加上一个或多个版本的 JDE,则需要一个额外的设置步骤。

在安装签名密钥期间,安装过程会创建两个包含有关您的密钥集信息的文件。这些文件必须可用于随 eJDE 和 JDE 安装的签名工具的每个实例。这些文件名为 sigtool.csk 和 sigtool.db,它们是在最近安装的 JDE 或 eJDE 组件包版本的 bin 文件夹中创建的。要完成安装,请将这两个文件复制到 PC 上安装的每个其他版本 JDE 的相同文件夹中。对于 JDE,文件通常位于 C:\Program Files\Research In Motion\BlackBerry JDE 4.7.0\bin(将 4.7.0 替换为您使用的 JDE 版本)。对于 eJDE,文件安装在 Eclipse 安装内部,例如 C:\Program Files\eclipse\plugins\net.rim.eide.componentpack4.7.0_4.7.0.46\components\bin。

从 BlackBerry 设备软件 4.3 开始,签名密钥文件的格式发生了变化。为了支持使用 4.3 版本之前的 JDE 版本签署应用程序,您还必须将 SignatureTool.jar 文件从 bin 文件夹复制到旧版本 JDE 的相同文件夹中。

12.6 使用预处理器进行条件编译

早期的 BlackBerry Java 开发者面临的一个问题是如何为多个版本的 BlackBerry 设备软件构建 Java 应用程序。例如,假设在新设备软件版本中提供了新功能,并且开发者希望在应用程序中使用它。开发者必须为应用程序的每个版本维护单独的源文件:一个使用新功能,另一个用于旧版本的 BlackBerry 设备软件。随着应用程序功能越来越多,并开始支持多种设备,维护的应用程序版本可能也会越来越多。开发者可以将特殊代码移到库中,并在构建时链接适当的版本,但这变得复杂,需要一些复杂的配置和特殊的构建工具。

直到最近 RIM 才宣布 RIM 应用程序编译器 (RAPC) 支持预处理;开发者可以使用此功能从同一组应用程序源文件构建多个版本的应用程序。

12.6.1 预处理器定义

为了启用此功能,开发者在项目文件或 RAPC 的命令行中创建预处理器定义,然后将特殊的预处理器指令放入源文件中,以指示预处理器在构建时如何操作源代码。预处理器定义就像仅供预处理器使用的特殊变量。由于预处理器定义的配置因所使用的 BlackBerry Java 开发工具而异,因此它们将在介绍每个开发工具的章节中进行介绍。

12.6.2 预处理器指令

RAPC 仅支持有限的预处理器指令集,但它们足以极大地简化任何构建多版本应用程序的开发者的生活。这些指令放置在应用程序源文件中,并指示预处理器在编译之前如何操作代码。本节描述了 BlackBerry Java 平台上支持的预处理器指令。

启用预处理器

要启用源文件进行预处理,源文件必须包含以下指令。为了可读性和易用性,它需要放置在源文件的开头附近。指令的正确语法是:

//#preprocess

使用 If、Else、EndIf 块

要根据是否定义了特定的预处理器定义值来执行不同的代码分支,请使用以下结构:

//#ifdef <tag>
  [Code executed if the preprocessor define exists]
//#else
  [Code executed if the preprocessor define does not exist]
//#endif

在这种情况下,如果 <tag> 在项目中被定义为预处理器定义,则执行第一个代码块。如果 <tag> 未定义,则执行第二个代码块。

要查看实际示例,请看以下代码。在第11章中描述的 URL 启动应用程序中,有一个特殊情况,即应用程序在 BlackBerry 设备软件 4.2 上无法正常工作。为了支持 BlackBerry 设备软件 4.2,需要向应用程序添加额外的代码行。在以下示例中,定义了一个预处理器指令,仅当为项目定义了名为 BBDS42 的预处理器定义时,才会插入额外的代码行:

public urlLaunch() {
  // Get the default browser session
  BrowserSession browserSession = Browser.getDefaultSession();
  // Then display the page using the browser session
  browserSession.displayPage(appURL);
  //#ifdef BBDS42
  browserSession.showBrowser();
  //#endif
  // Once the URL is launched, close this application
  System.exit(0);
}

使用 If Not、Else、EndIf 块

要根据是否未定义特定的预处理器定义值来执行不同的代码分支,请使用以下结构:

//#ifndef <tag>
  [Code to be executed if the preprocessor define exists]
//#else 
  [Code executed if the preprocessor define does not exist]
//#endif

这个例子与上一个例子相反。如果 <tag> 在项目中未被定义为预处理器定义,则执行第一个代码块。如果 <tag> 已定义,则执行第二个代码块。

12.7 附加资源

这些资源的完整链接列表可在在线获取,网址为 http://www.bbdevfundamentals.com

BlackBerry Java 开发工具可从 http://www.blackberry.com/developers 下载。

本章中涉及的一些有趣的知识库文章

  • 操作方法:创建单个 .alx 文件以安装应用程序的多个版本(文章 #DB-00028)
  • 操作方法:将 MIDlet 编译为 COD 文件(文章 #DB-00055)
  • 如何:手动注册 CSI 文件(文章 #DB-00100)
  • 什么是:BlackBerry JDE 4.3.0 中签名密钥格式的变化(文章 #DB-00639)
  • 支持:在代理服务器后无法注册密钥或签名文件(文章 #DB-00105)
  • 操作方法:使用预处理器(文章 #DB-00712)

要访问这些文章,请访问 http://www.blackberry.com/developers 并搜索相关知识库文章。

BlackBerry 开发者网站提供了几篇与本章内容相关的教程

© . All rights reserved.