第一节 初识Eclipse
Eclipse是一个开发源代码,基于java的可扩展开发平台,它是在OSI(Open Software Initiative 开发源代码计划)认可的通用公共许可证(CPL)版下被授予许可证的集成开发平台(IDE)。作为当今最流行的java开发IDE之一,java社群使用Eclipse以及基于Eclipse技术而来的IBM Websphere的开发者已经超过了半数。
Eclipse本身只是一个框架和一组响应的服务,但由于附带了一个标准的插件集,Eclipse中几乎每样东西都是插件;同时,它允许各个领域的开发人员构建与Eclipse环境无缝集成的工具。
基于Eclipse应用程序最突出的例子就是IBM Websphere Studio,它是IBM java开发工具的基础,其本质上就是Eclipse框架加上IBM开发的多种服务插件构成的。
你可以在http://www.eclipse.org/downloads/index.php下载到Eclipse的解压安装文件,语言包以及许多实用工具插件。本文写作的时候最新版本是Eclipse SDK 3.1 M5a。不过,在这里笔者提醒大家,Eclipse并不是版本越新越好,新版本往往有一些难以解释的bug,而且一些插件提供商可能还没有来得及提供与之配套的版本。本文将采用Eclipse-SDK-M3.0.1 为大家演示。
既然Eclipse在java开发中如此重要,那么我们能否使用Eclipse开发手机应用程序呢?是的,这个答案就是EclipseMe。
EclipseMe作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseMe并不为开发者提供无线设备模拟装置,而将各手机厂商的实用模拟器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。
你可以在http://www.eclipseme.org/上得到免费下载的EclipseMe,本文写作时的最新版本是0.7.5,同样出于稳定的考虑,笔者在这里选用eclipseme.feature_0.5.5_site.zip来为大家演示。
除了Eclipse与EclipseMe之外,你还需要java运行环境和一些手机模拟器来完成安装。以下列出了完成本文的工具列表以及参考下载地址(按安装顺序):
1.JDK 1.4.2 http://java.sun.com/j2se/1.4.2/download.html
2.Eclipse M3.0.1 http://www.eclipse.org/downloads/index.php
2.Eclipse 3.0.X 语言包http://www.eclipse.org/downloads/index.php
3.EclipseMe 0.5.5 http://www.eclipseme.org/
4.Sun WTK V2.2 (sun的通用模拟器)
http://java sun.com
Nokia Developer's Suite 2.2 (Nokia开发者套件,包括几款比较典型机型的模拟器)
http://www.forum.nokia.com/main/0,6566,034-2,00.html
第二节 搭建Eclipse移动开发环境
1. Eclipse安装与汉化
搭建Eclipse的第一个步骤就是要安装JDK,本文写作时,JDK的最新版本是5.0,但是用JDK5.0 + Eclipse开发手机程序有很多问题。所以目前的J2ME开发者基本上还是采用的JDK1.4.2,安装很简单,这里就不赘述了。
Eclipse的安装过程更加简单,事实上,这仅仅是一个解压缩的过程。将你下载的Eclipse SDK压缩包eclipse-SDK-M3.0.1拷贝在你的目标目录下,我们这里以D盘根目录为例,然后解压到当前文件夹。
先不要急着运行你的Eclipse环境,把Eclipse语言包NLpack-eclipse-SDK-3.0拷贝到相同路径(D盘)下解压缩,再运行,Eclipse将首先完成第一次启动配置,包括相应的汉化工作。指定你的工作空间就可以了。
欢迎界面之后,就是Eclipse漂亮的工作界面!
2. EclipseMe插件安装
在Eclipse中选择“帮助 / 软件更新 / 查找并更新”,在弹出对话框中选择“搜索要安装的新功能部件”,在“新建已归档站点”的弹出框中,指定EclipseMe压缩文件eclipseme.feature_0.5.5_site.zip。
点击确定后可以看到Eclipse已经搜索到了相应的插件。
选中EclipseMe的复选框,接受协议,忽略功能部件验证,最后重新启动控制台,EclipseMe插件就已经顺利的安装好了。
为了验证EclipseMe确实已经安装上了,我们在工作台重启之后,打开“窗口 / 首选项”中,我们可以看到一个J2ME选项,这时,Eclipse移动开发的第一步,我们已经成功的迈出了!
注意:安装好EclipseMe之后,我们要对原有的Eclipse配置做一点小小的改动。由于移动开发时我们需要首先启动手机模拟器,那么在Debug模式的Eclipse默认设置不等到模拟器启动就会失败。
修改这点很简单,在首选项的“java / 调试”中,把默认设置更改为如下图所示,调试模式就可以顺利的启动了。
3.加载厂商模拟器
EclipseMe为我们提供了一个集成开发环境,但仅仅这些是不够的,我们还需要一种或多种手机模拟器作为程序运行的实际载体。目前,各大手机厂商都拥有多种型号的手机模拟器,Sun也提供了一种通用模拟器。这里我们采用Sun WTK和Nokia Developer's Suite 两种来为大家演示。
Sun wtk v2.2
Wtk(Wireless toolkit)是Sun为无线开发者提供的一个无线开发实用包。它拥有多个手机模拟器,我们在这里将WTK绑定到Eclipse,这将大大提高开发者的工作效率。
当然首先,我们得安装WTK。安装过程也很简单,系统会自动检测到当前JDK所在路径,引用该JDK。
下面我将WTK绑定到Eclipse。
找到路径“窗口 / 首选项/ J2ME / Platform Component”,右键单击对话框右侧的wireless toolkit,我们可以添加当前系统已有模拟器。在单击“浏览”按钮之后,我们选定WTK的安装目录。
EclipseMe会自动分析出当前模拟器类型,并显示出来。
确认之后,我们发现Platform Component一栏上添加了关于WTK的许多配置信息,此时,WTK已经被我们集成到EclipseMe上了。
Nokia Developer's
Suite 2.2 Suite 2.2Nokia拥有多种型号的手机模拟器,为了统一管理,它推出了用于集中管理这些模拟器的管理软件Developer's Suite。
Developer's Suite本身是一个可以独立运行的工具包,它同样可以被EclipseMe绑定,使开发者在一个相同的工作环境下高效率的工作。
这里,我们采用了Nokia Developer's Suite 2.2,这个版本甚至在安装的时候就可以绑定Eclipse了!
首先,从Nokia论坛上下载安装文件,如果你的电脑中有旧版本的Developer's Suite,需要首先卸载旧版本。
Nokia的开发包是提供给Nokia论坛的开发者使用的,所以,在接受安装协议之后,你需要提供你在Nokia论坛的用户名和安装序列号。
第一次安装没有序列号也不用担心,输入一栏中什么都不用填直接忽略过去,Developer's Suite会让你选择一种代理联网模式(如果没有用代理服务器上网就选择no proxy),然后要求你输入你在Nokia论坛的用户名和密码进行注册。注册成功之后,用户名对应的序列号就会被发送到你的邮箱中,查收一下,就可以继续了!(有的时候Nokia发送序列号的行为会很慢,没办法,只有等等了J)。
当我们完成认证之后,会发现Developer's Suite 2.2提供了多种安装方式,包括独立安装或者直接与Eclipse集成。
如果选择了与Eclipse集成,那我们就要提供当前Eclipse的安装目录。
如果你选择了独立安装,在重启系统之后,我们以与添加Sun WTK相同的方法,在“首选项 / J2ME / Platform Components”中选中Developer's Suite的安装目录,确定之后可以看到,Wireless Toolkits中除了WTK,Nokia Developer Suit也被列在其中了!
现在,我们终于可以用Eclipse开发第一个J2ME程序了!J
第三节 使用Eclipse进行无线开发
1. 创建工程
在完成了环境搭建后,我们就可以在Eclipse中用我们所熟悉的方式开发无线应用程序。下面让我们完成一个经典Hello World程序,这里,我们选择使用Sun WTK 2.2作为运行模拟器。
在Eclipse工作台上的新建选项中,选择J2ME Midlet Suite,首先创建一个MIDP Suit。
在下一步中,我们可以看到有多种模拟器设备可供选择,选定“J2ME Wireless Toolkit 2.2 MIDP 2.0 Platform”后,继续下一步,直至完成。
此时,在包资源管理器中,Hello World套件项目已经被建立起来,我们注意到,Eclipse为我们自动绑定了J2ME library运行库,并创建了jad等配置文件。
2. 创建MIDlet文件
完成项目创建后,让我来创建一个MIDlet类文件,它是整个套件的入口文件。也是Hello World的关键类。
选择J2ME Midlet之后,我们可以看到系统自动继承了MIDlet超类,请确保三个默认方法复选框被选中,输入类名,完成创建。
打开刚刚创建的Hello World,我们发现Eclipse已经自动帮我们生成了程序主体,继承方法以及一些注释。
如此之多的重复工作已经被Eclipse完成,以至于我们只需要在相应的方法中填写自己的实现过程就可以了。
首先在Hello World代码中导入界面类import javax.microedition.lcdui.*;
然后,我们仅仅需要用以下代码覆盖原先的构造函数:
public HelloWorld() {
super ();
// TODO 自动生成构造函数存根
Form form = new Form("Hello World");
form.append("Welcome to J2ME World!");
Display.getDisplay(this).setCurrent(form);
}
如此简单的几步,第一个J2ME就完成了!
第四节 执行MIDlet,打包和混淆
1.运行MIDlet文件
在Hello World项目上单击右键,选择“运行…”,
在弹出对话框中,在Wireless Toolkit Emulator中新建一个配置,指定刚刚Hello World为入口文件,应用设置,最后运行。
可以看到,Eclipse自动启动了WTK的模拟器,显示出了Hello World的欢迎界面!
2.打包与混淆
打包,就是为套件生成jar文件,用来发布项目。右键单击目标项目,可以在J2ME选项中选定Create Package,生成jar包。
混淆,就是为了保护版权,增加别人反编译阅读源代码的难度;同时可以减少jar包的体积。在J2ME选项中也能够找到创建混淆包的选项。但首先,需要首先指定当前系统中混淆器的安装位置。
我们这里采用了开源免费的Proguard3.0.1作为混淆器。在“首选项 / J2ME / packaging / obfuscation”中,通过浏览指定Proguard3.0.1的安装(解压)路径。
应用保存设置之后,就可以成功的创建混淆包了。
注意:
很多初次使用的朋友会发现即便指定路径之后,依然不能顺利创建混淆,并且往往得到类似下面的警告信息。
出现这个错误的原因与JDK路径有关。我们在安装了JDK之后(以1.4.2为例),系统环境变量中存在两种JDK,一种是JDK SDK,一种是运行时环境(runtime)。Eclipse在解压安装时选择的是后者,而启动Proguard3.0.1需要的是前者。
修复这个问题很简单,在“首选项 / java / 已安装的JRE”中把你的JRE从指向运行时更改为指向SDK(即JDK的安装目录)
此时JRE将拥有完整JDK库文件,再次运行创建混淆,我们会发现在Hello World子目录deployed中包括了HelloWorld.jar,HelloWorld_base.jar, HelloWorld_base_obf.jar。他们分别是混淆后,混淆前等不同版本的jar包。