使用Eclipse 为Nokia 手机开发移动应用程序
编者注:在论坛上看到很多朋友都在问关于在eclipse中配置Nokia Developer's Suite for J2ME 开发移动应用程序的问题,所以综合了相关方面的内容,希望能帮助大家迅速的入门ECLIPSE中NOKIA开发.本教程使用的是Nokia Developer's Suite 2.2 ,但是以后的3.0或4.0配置的方法都是一样的,希望读者注意.
关于本教程
本教程将展示如何使用 Eclipse IDE 和 Nokia Developer's Suite for J2ME 为 Nokia 手机开发 J2ME 应用程序。
本教程是为那些有兴趣利用功能强大的 Eclipse IDE 提高生产率的 J2ME 和 Nokia 开发人员准备的。本教程所针对的读者还包括那些想走捷径快速入门 Nokia 设备的实际移动应用程序开发的 Java Eclipse 开发人员。尽管 Nokia Developer's Suite for J2ME 主要是为 Nokia 手机开发人员提供工具,但您也可以将它用于其他设备的一般性 J2ME 应用程序开发。Eclipse 和 J2ME 的基础知识将帮助您完成本教程描述的任务。
Eclipse 和 J2ME |
开源 Eclipse IDE 已经成为供许多 Java 开发人员选择的开发工具之一。此外,Eclipse 还为一些关键的 IDE 特性提供了极好的支持,这些特性包括团队协作、上下文相关的代码编辑器、重构、单元测试、调试和项目管理,等等。但更重要的是,Eclipse 支持允许第三方供应商在其上构建专用工具(插件)的应用程序平台。例如,许多 Eclipse 插件可用于辅助 J2EE 应用程序开发、虚拟建模、测试、代码分析和类似的更多操作。
不过。对于移动电话开发人员,Eclipse 的威力一直让人捉摸不定,直到最近,这种情况才得以改观。长期以来,IBM WebSphere® Studio Device Developer(Device Developer)一直是支持 J2ME 开发的惟一基于 Eclipse 的 IDE。设备开发人员支持来自 IBM 的 J2ME 实现,即 WebSphere Micro Environment。移动电话开发人员需要一个低成本的 Eclipse 插件,支持手机制造商提供的真实设备 MIDP SDK。现在,让我们进入 Nokia Developer's Suite for J2ME。
Nokia 开发人员平台 |
作为世界上最大的移动电话制造商,Nokia 随时都会生产出几十种手机模型。对于开发人员而言,这可能是一种让人感到非常困惑的场景。因为研究每个设备的特征以及可在每个设备上使用的编程环境要花费大量的时间。
为了让开发人员活得轻松点,Nokia 只围绕几种开发人员平台设计它的手机。每种开发人员平台都包含一些具有类似的物理特征(比如屏幕大小和内存大小)、UI 风格、主流软件和编程环境的设备。
- Nokia Series 40 Developer Platform 适用于大量销售的设备,比如 Nokia 7210 和 6230。它拥有最大的市场份额,每年可销售 1 亿部 Series 40 设备。
- Nokia Series 60 Developer Platform 适用于基于 Symbian-OS 的智能电话设备,比如 Nokia 3650 和 6600。每年大约可销售 1 千万部 Series 60 设备。
- Nokia Series 80 Developer Platform 适用于基于 Symbian-OS 的高端企业设备,比如 Nokia 9500 和 9300 Communicators。
- Nokia Series 90 Developer Platform 适用于基于 Symbian-OS 的触摸屏多媒体设备,比如 Nokia 7700 原型设备。目前还没有使用 Series 90 平台的商业设备。
J2ME 在所有的 Nokia 开发人员平台上都受到支持。Series 40、60、80 和 90 平台的 2.0 版本全都支持 MIDP 2(即 Wireless Messaging API)和 Mobile Multimedia API。它们还提供了对 Bluetooth API、Mobile 3D API、File I/O 和 PIM API 的可选支持。
Nokia 设备 SDK |
设备 SDK 包含可用的 Java API 库,以及用于特殊设备的 PC 仿真器。该仿真器在开发用的 PC 上模拟物理设备的特征和限制。SDK 是开发实际设备应用程序的一个重要工具。因为新设备的发布非常迅速,所以对于 Nokia 而言,为每种设备开发单独的 SDK 有些不切实际。因此,它只为有代表性的设备发布 SDK。例如,Nokia Series 40 Developer Platform 2.0 SDK 是以 Nokia 6230 设备为基础,可以用来为 Nokia 5140、3220 和 6255 设备开发 MIDP 应用程序。该 SDK 也正是您在本教程中要用到的 SDK。
Nokia Developer's Suite for J2ME 为安装在开发 PC 上的所有 SDK 提供了一个管理接口.
安装配置:
下载 Nokia Developer's Suite 2.2 for J2ME |
您可以从 Nokia 论坛的工具专区下载免费的 Nokia Developer's Suite for J2ME,网址是 http://www.forum.nokia.com/tools(本网站的下载专区也提供下载http://www.j2medev.com/Soft/tools/200509/117.html)。Nokia Developer's Suite for J2ME Version 2.2 及其更高版本都支持 Eclipse 集成。在下载页上,选择 Request serial number for this product 链接,以获得邮寄到您用 Forum Nokia 帐号注册的电子邮件地址的序列号。安装的时候需要这个序列号。
安装 Nokia Developer's Suite Version 2.2 for J2ME |
在开始运行下载的安装程序之前,必须先卸载 所有以前安装的 Nokia Developer's Suite for J2ME 版本。然后需要输入您在 Nokia 论坛中使用的用户名和请求(并通过电子邮件接收)的序列号。在获得提示的时候,应该选择将该套件与 Eclipse 集成。还需要告诉安装程序您安装 Eclipse 的根目录。
启动 Eclipse |
现在,启动 Eclipse IDE ,您会在工具栏上看到一个新的 Tools > Nokia Developer's Suite for J2ME 菜单项和一个新的图标编号。
图 1. Eclipse 中的新菜单
下载新的 SDK |
Nokia Developer's Suite for J2ME 是随同以下设备 SDK一起提供的:
- Series 40 Developer Platform 2.0 SDK V1.0
- Series 60 MIDP Concept SDK beta 0.3.1, Nokia Edition
Series 40 SDK 在默认情况下使用。您可以从位于 http://www.forum.nokia.com/tool 的 Nokia 论坛的工具专区下载更多的设备 SDK。每个 SDK 需要一个单独的序列号。SDK 通常安装在 Windows PC 的 C:\Nokia\Devices\ 目录中。
将 SDK 添加到 Nokia Developer's Suite 中 |
您可能必须手工将新的 SDK 添加到 Nokia Developer's Suite 中。为了做到这一点,需要执行以下步骤:
- 选择 Tools > Nokia Developer's Suite for J2ME > Configure Emulators。
- 单击 Add 将新的 SDK 添加到下拉列表中。
图 2. 添加新的 SDK
- 选择将添加 SDK 的安装目录。
图 3. 选择 SDK 的安装目录
配置仿真器
要配置设备仿真器的行为,请执行以下操作:
- 选择 Tools > Nokia Developer's Suite for J2ME > Configure emulators。
- 从下拉列表中选择 SDK 仿真器。
- 单击 Preference。您就能够设置该仿真器的一般属性。
Phone Number prefix 字段指定了模拟电话网络环境时为仿真器分配的假的电话号码。例如,仿真器的第一个实例是分配电话号码“6230000”,第二个实例是分配“6230001”。这两个仿真器实例可以使用这些电话号码彼此发送 SMS/MMS 消息。
图 4. 一般属性
MIDP 的运行时属性(比如堆的大小和安全域)也可以配置。
图 5. 配置 MIDP
可以在 MIDP Monitor 选项卡中指定仿真器的日志级别。在这里,您还可以降低仿真器的执行速度,在快速 PC 的设备上模拟慢速 CPU。
图 6. 日志级别
您已经安装了这些工具。现在,让我们来经历一下使用这些工具构建、测试和部署 MIDP 应用程序的完整过程。
启动新的项目 |
要启动新的项目,请执行以下步骤:
- 选择 New > Project。
- 选择 Nokia J2ME 的项目类型。
图 7. 选择项目类型
- 为该项目指定一个名称和一个根目录。
图 8. 创建项目名
- 如果有一些 SDK 可用的话,选择一个 SDK 进行开发。
图 9. 选择一个 SDK
配置项目路径
您可以在项目中指定放置 Java 源文件和编译好的类文件的地方。在这里,只需使用 Eclipse 的默认设置即可。
图 10. 构建路径中的源文件夹
在默认情况下,项目的类路径中包括 SDK 中的 J2ME API 库。可以将任意外部库添加到类路径中。警告:如果您想添加那些在该项目的物理设备上不可用的外部 Java Archive(JAR)库,那么必须手工将它们打包到发行版本的 JAR 文件中。否则,MIDlet 会在您在设备上部署这些库的时候抛出“Class not found”异常。
图 11. 定义类路径
在 Package Explorer 中查看项目 |
现在,您已经结束了项目的安装。项目名显示在 Project Explorer 中。源代码目录和类库是项目名下的一个级别。您可以通过单击打开类库并浏览其内容。这个类库包含 J2ME API 类和 Nokia 的实现类。您甚至可以通过在 Java 编辑器中反编译某些单独类的接口来检查这些类。
图 12. 在 Package Explorer 中查看
Eclipse 的新的类向导 |
尽管 Nokia 插件为生成新的类在 Tools > Nokia Developer's Suite for J2ME中提供了一个向导,但我更喜欢使用 Eclipse 的默认向导,因为它支持超类和已实现接口的自动代码完成(automatic code completion)。
图 13. 新类
从该向导中生成的主要 Java 源代码文件如下所示:
图 14. 生成的源代码
TutorialMidlet 类 |
TutorialMidlet 类是为应用程序提供输入执行的类。Java 运行时环境(Java Runtime Environment,JRE)首先会实例化这个类,然后调用其 startApp() 方法启动 midlet。在用户终止应用程序时,可以调用 destroyApp() 方法。
TutorialMidlet 类控制并显示应用程序中的所有 UI 屏幕。所有用户生成的软键(soft-key)事件(比如用户按下一个软键时)都由 TutorialMidlet 类处理,因为它实现了 CommandListener 接口,并将自己作为所有屏幕对象的命令监听程序附加到该接口上。UI 事件回调方法是 commandAction()。
package tutorial;import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class TutorialMidlet extends MIDlet
implements CommandListener {
Display display;
Command greetCommand;
Command exitCommand;
Command clearCommand;
Command backCommand;
WelcomeScreen welcomeScreen;
HelloScreen helloScreen;
// instantiate the internal variables
public TutorialMidlet () {
display = Display.getDisplay(this);
greetCommand =
new Command ("Greet", Command.OK, 0);
exitCommand =
new Command ("Exit", Command.EXIT, 0);
clearCommand =
new Command ("Clear", Command.CANCEL, 1);
backCommand =
new Command ("Back", Command.SCREEN, 1);
welcomeScreen = new WelcomeScreen ();
welcomeScreen.addCommand (greetCommand);
welcomeScreen.addCommand (clearCommand);
welcomeScreen.setCommandListener (this);
helloScreen = new HelloScreen ();
helloScreen.addCommand (exitCommand);
helloScreen.addCommand (backCommand);
helloScreen.setCommandListener (this);
}
// Called when the MIDlet is started by the AMS
protected void startApp () {
display.setCurrent (welcomeScreen);
}
protected void pauseApp () {
// Do nothing
}
protected void destroyApp (boolean unconditional) {
notifyDestroyed ();
}
public void commandAction (Command c, Displayable d) {
if (c == greetCommand) {
String name = welcomeScreen.getName ();
helloScreen.setName(name);
display.setCurrent (helloScreen);
} else if (c == clearCommand) {
welcomeScreen.setName("");
display.setCurrent(welcomeScreen);
} else if (c == backCommand) {
display.setCurrent (welcomeScreen);
} else if (c == exitCommand) {
destroyApp (true);
}
}
}
实时错误检验 |
TutorialMidlet 类使用 WelcomeScreen 和 HelloScreen 类,这些类您也必须键入。
Eclipse 中的高级 Java 编辑器会用红色线条(red bar)标出相关的代码路径,警告您存在这类冲突。
如果您将鼠标放在红线上,编辑器会显示一个解释框,告诉您为什么它认为这是一个错误。
实时语法检验允许开发人员利用 Java 编译器的一致性检验功能,而不用实际等待编译的完成。
图 15. 实时错误检验
如果选定 Eclipse Project 菜单中的 Build automatically 选项,
那么每当更新项目时,Eclipse 都会试着不断在后台构建该项目。
在这种情况下,Package Explorer 也会显示在构建过程中检测到的编译错误。
图 16. 自动构建错误
WelcomeScreen 类 |
WelcomeScreen 类扩展了 Form 类来展示包含一些高级 MIDP UI 组件的屏幕。
正如您已经看到的,WelcomeScreen 的软键命令和事件处理程序
被添加在 TutorialMidlet 类中。可以通过 JavaBeans 风格的 get 和 set 方法,
从这个类的外部访问 nameField UI 组件中的数据。
以这种形式使用的图像来自外部的 PNG 图像文件 welcome.png。
该文件必须位于 midlet 的运行时类路径中,以便对它进行访问。
package tutorial;import javax.microedition.lcdui.*;
public class WelcomeScreen extends Form {
private TextField nameField;
public WelcomeScreen () {
super ("Welcome");
Image img;
// Construct the image from the media file
try {
img = Image.createImage("/welcome.png");
} catch (Exception e) {
e.printStackTrace ();
img = null;
}
ImageItem imageItem =
new ImageItem ("", img,
ImageItem.LAYOUT_CENTER, "Welcome");
nameField =
new TextField ("Please enter your name", "",
10, TextField.ANY);
append (imageItem);
append (nameField);
}
public void setName (String n) {
nameField.setString (n);
}
public String getName () {
return nameField.getString ();
}
}
HelloScreen 类 |
HelloScreen 类扩展了Canvas 类来展示必须通过应用程序自身得到渲染的屏幕。
paint() 方法重新绘制了整个屏幕,每次屏幕需要更新时,都由系统调用该方法。
再次声明,HelloScreen 的软键命令和事件处理程序被添加在 TutorialMidlet 类中。
屏幕上渲染的名称字符串是通过 setName() 方法在显示该屏幕之前设置的。
图像文件 hello.png 也必须位于 midlet 运行时类路径中。
package tutorial;import javax.microedition.lcdui.*;
public class HelloScreen extends Canvas {
private int width, height;
private String name;
private Image img;
public HelloScreen () {
width = getWidth ();
height = getHeight ();
name = "unknown";
// Construct the image from the media file
try {
img = Image.createImage("/hello.png");
} catch (Exception e) {
e.printStackTrace ();
img = null;
}
}
public void setName (String n) {
name = n;
}
// Paint the screen based on the name
protected void paint (Graphics g) {
g.setColor(0xffffff);
g.fillRect(0, 0, width, height);
g.setColor(0x000000);
g.drawImage (img, width / 2, height / 4,
Graphics.VCENTER | Graphics.HCENTER);
g.setFont(Font.getFont(
Font.FACE_PROPORTIONAL,
Font.STYLE_BOLD,
Font.SIZE_LARGE));
g.drawString (name, width / 2, height * 3/4,
Graphics.BASELINE | Graphics.HCENTER);
}
}
不再有错误 |
键入所有的源代码,如果 Eclipse 没有显示任何错误或不一致,
您就已经为运行 midlet 做好了准备!
图 17. 没有错误,运行 midlet
复制资源文件 |
WelcomeScreen 和 HelloScreen 类使用了两个外部图像文件。
这两个文件都必须位于 midlet 的运行时类路径中。不幸的是,
从 Eclipse IDE 内部访问运行时类路径(项目中的 bin 目录)不是一件很容易的事;
必须从 IDE 的外部复制这些文件。
图 18 展示了 Windows 文件浏览器中的 bin 目录。
图 18. 复制资源文件
运行 midlet
要在仿真器中运行 midlet,首先要在 Package Explorer 中
选择目标 MIDlet 类(这里是 TutorialMidlet类)
,然后选择 Run > Run As > Nokia SDK。
图 19. 运行 midlet
查看操作中的仿真器 |
正如配置中所指定的那样,仿真器是从一个诊断窗口开始的。
图 20. 从一个诊断窗口开始的仿真器
该仿真器响应用户的输入。
图 21. 响应用户输入的仿真器
设置调试器 |
Nokia 设备 SDK 提供了有限的调试功能。您可以使用 Eclipse 的插件调试器
来收集调试信息,并与 SDK 仿真器进行交互。
首先,您必须在 Windows > Preferences 窗口中设置调试器。您应该取消
所有处于挂起状态的选项的选定,并将调试器的超时时间增加到 20,000 毫秒。
图 22. 设置调试器
设置中断点 |
使用 Eclipse 的 Run 菜单,您可以设置中断点,并在源代码编辑器中
观察游标所在位置上的中断点。因为 Nokia SDK 中有一个 bug,
进入方法可能导致仿真器崩溃,所以,您应该只设置方法中断点。
图 23 显示了一个方法中断点,该中断点正如编辑器左边绿色点所指出的那样。
为了使其生效,您还必须为该中断点重新构建应用程序。
图 23. 设置一个中断点
运行调试器
现在,您可以使用 Run > Debug ... 在调试模式下运行 midlet。仿真器启动正常,
但当您击中该中断点的时候(比如说这里按下软键来调用方法处理程序的 commandAction() 方法),
Eclipse 会将它的显示从 Java 透视图更改为调试透视图。它将显示调用堆栈、
当前中断点和堆栈中的变量值。在回顾了这些数据之后,您就可以使用 Run 继续您的执行操作。
图 24. 调试透视图
生成 JAR 和 JAD 文件 |
为了在实际的硬件设备上运行 midlet,必须将它们打包到 JAR 和 JAR 描述符(JAD)文件对中,
这两个文件是随 J2ME 空中下载(Over-The-Air,OTA)应用程序自动配置规范一起提供的。
可以使用 Tools > Nokia Developer's Suite for J2ME >
New Application Package 向导来生成 JAR 和 JAD 文件。
您可以选择生成新的文件对,或者编辑现有的文件对。
图 25. 新的 JAR 和 JAD 文件对
定制属性 |
您可以在 JAD 和 JAR 清单文件中定制 midlet 名称、描述、版本号和其他许多属性,
其中包括用户定义的属性。
您还可以控制 JAR 文件中包含哪些类和资源文件。
图 26. 编辑 JAR/JAD 属性
预览 JAR/JAD 文件
单击 Preview 来预览 JAD 和 JAR 清单文件。
图 27. 预览 JAR/JAD 清单文件
生成文件 |
单击 Generate 来实际地生成 JAD 和 JAR 文件。您可以在项目根目录中替换生成的文件。
图 28. 生成实际的 JAR/JAD 文件
为包签名 |
使用 Tools > Nokia Developer's Suite for J2ME >
Sign Application Package 向导,
可以对 midlet 进行数字签名,以便将其发布。该向导允许您导入自己的数字证书。
它为 JAR 清单和 JAD 文件添加了数字签名和相关的公钥证书。
图 29. 为应用程序包进行签名
测试仿真器中的包 |
使用 Tools > Nokia Developer's Suite for J2ME
> Start Emulators 向导,
您可以在设备仿真器中测试运行 JAD 文件。这个 JAR 文件在 JAD 文件中提到过。
您可以对相同的 midlet 启动多个仿真器实例。每个仿真器实例都有一个不同的假的电话号码。
图 30. 为进行测试而运行 JAD 文件
在仿真器中测试 OTA
使用 Tools > Nokia Developer's Suite for J2ME > Start Emulators 向导,
您还可以在设备仿真器中测试 JAD 和 JAR 文件的 OTA 配置。仿真器试图从 URL 安装 JAD 文件,
并通过安全和权限检验来查看它是否是一个 OTA midlet,而不用直接运行 JAD 文件。
图 31. 测试 JAR/JAD 文件的 OTA 配置
在局域网上进行部署 |
有了 JAR 和 JAD 文件,您就可以使用 Tools > Nokia Developer's Suite for J2ME
> Deployment 向导,
通过串行连接和蓝牙连接将它们推(push)向电话。被推的(pushed)应用程序将安装在电话上。
图 32. midlet 的局域网安装
在 OTA 服务器上进行部署 |
为了将 midlet 推向本地串行网络和蓝牙网络之外的一般公众,
必须在公共 OTA 服务器上放置 JAD 和 JAR 文件,
这样,任何移动用户都可以通过无线数据网下载和安装它。
该部署向导支持使用 FTP 将这些文件复制到将 OTA 服务器作为主机的 ISP。
它自动生成一个 WML 文件,
该文件包含到 JAD 文件的链接。当移动用户通过电话或者单击该链接,
从他们自己的 WML 浏览器访问这个 WML 页面时,
会自动触发电话安装 midlet。
图 33. 将 midlet 传输到 OTA 服务器
以上是 使用Eclipse 为Nokia 手机开发移动应用程序 的全部内容, 来源链接: utcz.com/p/204999.html