J2ME移植Polish教程(1)之配置环境2009-11-2501:00antenna和Polish是常用的手机打包、移植的辅助工具。有关移植的系列文章,将从本章开始。本章将带来大家配置和安装polish集成环境。J2MEPolish是针对移动开发者提供的一个套件,其功能包括:1.支持CSS,创建手机UI2.支持多国语言3.拥有自己的API4.打包、混淆、编译5.预编译功能6.具有Antenna的相关功能。7.基于Ant首先到J2MEPolish的官方网站下载相应的Polish版本,比如:不同的Eclipse版本配合Polish安装时会出现一些问题。为保证大家的学习效果,建议使用Eclipse伽利略的移动开发版本(galileo),下载地址为:=/technology/epp/downloads/release/galileo/SR1/eclipse-pulsar-galileo-SR1-win32.zip,无需再安装EclipseME,其采用的是最新的MTJ最为移动开发平台。配合使用的polish建议采用j2mepolish-2.0.2,下载地址为如果Eclipse和polish的搭配不合适经常会出现问题,例如:Eclipse3.2+2.0.4可以,但是Eclipse3.3.2+polish2.0.4就会出现问题。WTK的版本也需要注意一下,在这里我选用的是WTK2.5.2_01如果担心安装配置时出现问题,请参照我的版本:Java环境:JDK1.6Eclipse版本:eclipse-pulsar-galileo-SR1-win32.zipWTK版本:WTK2.5.2_01polish版本:j2mepolish-2.0.2.jar下面是[polish官方网站推荐的版本]Java2StandardEditionSDK1.4orhigher,SunJavaWirelessToolkit,(forWindowsandLinux),ortheMobilePowerPlayerSDK(forMacOSX)FavoriteIDE,forexampleEclipse3.0,Ant1.6orhigher,ifnotalreadyintegratedintheIDE,Optionallydeviceemulators,e.g.theNokiaJ2MEemulator,准备好相应组件后,我们开始安装,相关JDK、Eclipse以及WTK的安装不在赘述,相关内容参见其它文章,我们直接跳到j2mepolish-2.0.2.jar的安装。运行cmd,然后输入java–jarD:\j2mepolish-2.0.2.jar即可出现提示窗口,然后点下一步,你将看到如下界面,按照配置要求配置相应的polish.home等进行安装即可,步骤较为简单,不再多说。安装完成后,打开Eclipse,选择【windows】--》【preferences】看看左侧是否有J2MEPolish,如果有证明你已经安装成功,然后按照如下图配置一下你的J2MEPolish。好了,现在你已经成功的安装了J2MEPolish,下一节内容中,我们将学习如何使用J2MEPolish创建工程。并通过一个J2MEPolish的Sample学习它的简单使用。附:Polish的目录结构import是系统引入的包,其中包括一个bulid的包,以及其他一些,midp等规范包Samples是例子文件。Doc是文档。Api是J2MEPolish提供给开发人员使用的公共接口Bin一些可执行文件其中readme.txt文件,关于项目的一些描述LICENSE.txt版权信息。J2MEPolish的描述文件就是根目录下的那些XML文件。其中groups.xml定义了不同的平台下组Vendors.xml定义了厂商的规范,特性等,比如键值的定义啊。J2MEPolish处理键值事件的时候主要是对这些规范进行预编译,所以适合很多平台,厂商。Devices.xml是对各个平台支持规范程度的描述,此文件包含了很多个平台支持描述。apis.xml详细描述设备在后面的内容中将详细讲解如何配置这些文件J2MEPolish+Eclipse配置过程详解到目前(2010/1/20)为止,J2MEPolish官方网站上公布的Polish最新版本是2.1.4,但是鉴于本人使用Eclipse-SDK-3.5.1-win32+J2ME-Polish-2.1.3版本配置时反复试验均没有成功,于是改为Eclipse-SDK-3.4.1-win32+J2ME-Polish-2.0.1版本进行配置,下面就对配置过程以及最后创建工程的整个过程做一个介绍。首先自然是EclipseSDK的下载和安装,这个过程就不做过多的介绍,本人的默认安装路径是D:\ProgramFiles。其次是J2ME-Polish-2.0.1版本的安装,具体主要过程如下,前面的过程就不多说了,主要对以下关键几部进行说明:1.在此选择安装路径,本人的安装路径为D:\ProgramFiles\J2ME-Polish2.0.1文件夹,点击next继续2.分别设置WTK,各个手机厂商Emulator模拟器(如Nokia),以及IDE(如Eclipse)的安装文件路【注意:这一步的设置十分关键,应仔细设置好】,设置好后点击next继续3.勾选EclipseIntegration(Mepose)这一项,点击下一步进入安装。4.安装完成后退出。J2ME-Polish安装完成了,接下来就是在Eclipse中对它进行配置,这时需要一个Mepose的插件,使用Eclipse中的在线安装即可,步骤如下:1.选择菜单【Help】-【SoftwareUpdates…】,在弹出的对话框中选择AvailableSoftware并在右侧的AddSite中的Location处添加地址:即可。2.点击Install进行安装。3.安装完成后Eclipse会重启。如果安装成功在【Windows】-【Preferences】下会出现J2MEPolish菜单选项(如下图)。如果没能出现则说明安装过程存在问题,在确定所有设置均正常后,可能是由于版本之间的不匹配问题。本人当初安装时,使用的是J2MEPolish2.1.3与EclipseSDK3.5.1就出现过安装结束后没有出现J2MEPolish选项的问题,最后换做现在的版本则安装一切正常。通过以上步骤J2MEPolish的安装以及集成在IDE环境中的工作就算完成了,接下来新建一个工程来体验一下Polish的功能。首先来新建一个Polish工程,【File】-【New】-【Other…】,在Java中选择J2MEPolishProject。键入工程名HelloPolish,勾选Generatetemplate?选项,并在Classname一栏输入主类名PolishHello,Packagename一栏中输入包名com.polish.learning,点击next,下一步。【注意】:此处的Generatetemplate?选项一定要勾选,不然后面建立类时会出现一些问题。分别指定好Polish,WTK以及手机模拟器的各个路径地址。当然,这些都可以在build.xml文件中进行再设置,这个以后会慢慢给大家介绍。点击next,下一步。在此,我们选择Configurations中的CLDC/1.1,Platforms中的MIDP/2.0以及Devices中Virtual的Generic/DefaultColorPhone,关于这里的设置,以后会慢慢给大家介绍。设置好后点击next下一步,然后点击Finish完成J2MEPolish工程的创建这时候,Polish工程就创建完毕了,我们会在左侧的工程区域中看到创建好的工程文件HelloPolish。其中的com.polish.learning包以及包中的PolishHello.java文件就是我们刚才勾选Generatetemplate?选项后设置的。打开PolishHello.java文件,我们会看到自动生成的一段代码:接下来,我们在PolishHello.java文件中,输入如下程序段:viewplaincopytoclipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150packagecom.polish.learning;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Form;importjavax.microedition.lcdui.StringItem;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;importde.enough.polish.util.Locale;publicclassPolishHelloextendsMIDlet{privateFormmyScreen;privateDisplaydisplay;protectedvoidstartApp()throwsMIDletStateChangeException{//TODO:Implementthismethod.this.myScreen=newForm(null);//#stylestringItemStringItemhelloPolishItem=newStringItem(null,HelloPolish!);this.myScreen.append(helloPolishItem);this.display=Display.getDisplay(this);this.display.setCurrent(this.myScreen);}protectedvoidpauseApp(){//TODO:Implementthismethod.}protectedvoiddestroyApp(booleanunconditional)throwsMIDletStateChangeException{//TODO:Implementthismethod.}}packagecom.polish.learning;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Form;importjavax.microedition.lcdui.StringItem;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletSt