在看这篇文章之前,我希望读者先浏览漫游 J2ME Polish--比较详细的文档.doc 这篇文章
内容简介
J2ME Polish现在很火,很多手机软件开发商都在采用这东西进行二次开发。然后很可惜,网络上关于这方面的中文比较少,所以我根据我学习的经过,整理成文章,希望对初学着以及爱好者有所帮助。
1.到官方http://www.j2mepolish.org/ 上下载安装包,现在最新版本是2.0 R4版本,本人建议安装1.2.4版本,因为2.0R4版本可能存在一些不兼容以及一些bug。本人用2.0R4版本的时候,有些例子并不能通过测试
运行cmd,然后输入java –jar D:"J2ME Polish.jar即可出现提示窗口,然后点下一步,就ok了。
上面的目录结构很清晰。
其中最import是系统引入的包,其中包括一个bulid的包,以及其他一些,midp等规范包。
Samples 是例子文件,我的版本里面只有两个例子,一个是menu,描述的是,采用J2ME Polish GUI,创建适合各个平台的统一外观的包,基于CSS设计的。是UI设计的典范,可以具体研究。 Sysinfo是一个系统信息的测试例子,涵盖了几乎所有平台上对jcp规范支持等测试信息,是我们开发程序中必须要用到的知识。
Doc是文档,此文档暂没有中文。我们学习起来比较吃力
Api是J2ME Polish提供给开发人员使用的公共接口
Bin一些可执行文件
其中readme.txt文件,关于项目的一些描述
LICENSE.txt 版权信息,作为商业开发者,一定要看哦
对于顶级目录下的xml文件,基本上都是J2ME Polish的描述文件,很重要的哦。是研究它的最直接的资料,可惜,我也是刚学习,没有深入去了解它
其中groups.xml定义了不同的平台下面的东西,比如s40,s60,s80,390,等api等
Vendors.xml定义了厂商的规范,特性等,比如键值的定义啊。J2ME Polish处理键值事件的时候主要是对这些规范进行预编译,所以适合很多平台,厂商。
Devices.xml是对各个平台支持规范程度的描述,此文件包含了很多个平台支持描述。
上面的所有配置都是基于xml了。可以自己扩展,api,配置,以及平台
三.运行例子Menu, SysInfo。
2.查看bulid.xml文件,看看它做了些说明手机,让我们的工作这么轻松愉快
由于贴xml文件,word并没有进行格式化,所以我这里重点介绍下。
<project name="enough-j2mepolish-example" default="j2mepolish">
这段是说,建立一个project,默认执行的target是j2mepolish。
<property name="wtk.home" , value="D:"WTK22" />
WTK的安装目录
<property name="polish.home", value="D:"Program Files"J2ME-Polish" />
J2ME Polish 的安装目录
<taskdef name="j2mepolish"
classname="de.enough.polish.ant.PolishTask"
classpath="${polish.home}/import/enough-j2mepolish-build.jar" border="0">{polish.home}/import/jdom.jar
" border="0">{polish.home}/import/proguard.jar
" border="0">{polish.home}/yguard-lib.jar
{wtk.home}/wtklib/kenv.zip"/>
这个很重要,定义说。执行这个targer的 Task,这里是指执行de.enough.polish.ant.PolishTask这个类。具体可以看源代码,看看里面做了些说明手脚
<obfuscator name="ProGuard" useDefaultPackage="true" unless="test" >
<!--
You can set additional parameters here, e.g.:
<parameter name="optimize" value="false" />
-->
</obfuscator>
这个用来打包用的,采用ProGuard混淆器
其他的自己研究。
我们现在来看看,运行build.xml后生成了些什么呢。不看不知道,一看吓一跳,
在build的文件夹下面,我发现了好多文件,全部是对于平台不同的资源源代码。原来,J2ME-Polish的原理是,通过ant build的扩展,然后通过自己的一套API,把用户的代码转换成对应各个平台的源代码,然后编译,打包。原理虽然简单,但是这一套却是要花很多功夫ide哦。我现在开始有点佩服J2ME Polish的创意了。也难怪,我的主管说J2ME Polish是个好东西,好以后继续学习J2ME Polish的源代码,继续探讨。
上面的例子是基于J2ME – Polish GUI的,现在的例子是不import任何的J2ME Polish MIDP相关的API,这样例子对应需要开发。这个例子更简单,按照我刚才所写的方法办即可。
顺便介绍下这个例子,这个例子对应开发手机软件来说,也是很有用的。里面包含了对JSR规范支持的测试,已经屏幕,按键等相关的测试,很有用。