本文主要探讨如何使用j2mepolish进行build,至于j2mepolish的其他强大功能,本文不涉及。本人接触j2mepolish时间不长,若有漏洞或出错,请路过的朋友指正,同时欢迎大家拍砖。
对于J2mepolish的主要功能,不用再多讲,其大名在j2me已经如雷贯耳。若还有朋友了解或希望加深“感情”,请访问www.j2mepolish.org。
虽然目前很多公司或个人已经熟练使用其开发J2me软件,但遗憾的是,国内对J2mepolish的交流太少。其中j2medev 的favoyang翻译了“j2mepolish用户手册”部分章节,感兴趣的朋友,可以到j2medev论坛进行下载:
http://www.j2medev.com/bbs/dispbbs.asp?boardID=32&ID=3800&page=2
J2mepolish安装 安装过程其实很简单,在此主要探讨关于eclipse的插件“mepose”。在javaeye上,有文章探讨j2mepolish的安装过程,其中,mepose是在另外独立安装的插件,而在2.0-RC4版本中,自带了mepose插件,只要在安装过程中填入eclipse.home和选择Eclipse Integration(Mepose),就可以安装mepose插件。
在Eclipse中使用j2mepolish 如果在Eclipse的file->new->project出现j2mepolish工程,则说明mepose插件已经成功安装,至此,就可以新建j2mepolish工程。新建的j2mepolish工程中,包含了自动创建的build.xml文件,以及src、resource等默认目录。运行只需右键选中build.xml,点击run as->ant build。
当然,不使用mepose插件也可以,因为Eclipse默认支持ant。所以,只需要按照sample中的目录结构存放资源和源码,并是用语法正确的build.xml文件就可正常使用j2mepolish,毕竟,j2mepolish的build功能,只是ant的扩展。
Eclipse的plugins目录中,自带有ant,eclipse3.2中的ant版本为1.6.5。如果希望使用自己的ant,可以在Eclipse中的Windows->preference->ant中设置Ant Home,将路径指向自己的ant目录,这样可以保持与Eclipse外的ant版本一致。
build.xml sample中的build.xml,个人觉得写得太过于繁琐,中间夹杂太多注释。这对于不初学者,特别是不熟悉ant脚本的朋友,会比较“郁闷”。由于本文重点探讨ant的build功能,所以,只讨论build.xml中的“j2mepolish”target,其他部分,请参考相关文档。
主要用于描述midlet相关信息,帮助设置JAD和MANIFEST。但部分中,可以通过子元素设置jad其他属性。有关相关属性的定义,请参考favoyang翻译《创建》或《Pro J2ME Polish Open Source Wireless Java Tools Suite》
虽然是可选,但却与device数据库紧密相关。如果需要使用device相关数据,特别是对多版本的j2me程序打包,这部分的设置尤为重要。
实际的build操作部分,在此设置midlet类名,以及第三方库包的导入等。在属性中,usePolishGui用于标示是否适用polish的GUI功能,注意该属性缺省是true。所以,如果没有用到polish的该功能,最好将其设置为false,否则打包时,将会加入polish自带一些类库,因此,会增加jar包的大小。
部分也是j2mepolish创建的重要部分,但并非本文讨论重要,具体内容请参考favoyang翻译《创建》或《Pro J2ME Polish Open Source Wireless Java Tools Suite》。
Device数据库 J2mepolish存储了超过 230种 J2ME 设备和相应的J2ME 参数,如 Canvas的大小, APIs, 支持格式等。其中,所有的数据都定义在device.xml文件中(安装过程,需选中External Device Database)。当然,可以随时更新device.xml数据库。
事实上,device数据库对于j2me开发非常重要。在本人的开发经历中,很多次都无奈难于获得某类机型的具体信息,如:堆栈大小,是否支持特定的扩展包等。即使有的公司拥有这样一套数据集合,也多半是以excel的形式保存,却无法与程序结合起来使用。这点,也为j2me程序的机型适配工作带来了繁重的工作量。J2mepolish在这方面对j2me开发做出重大贡献,以至于想antenna这样的开源项目已经支持j2mepolish提供的device数据库。
在开发过程中,结合j2mepolish的预处理机制,我们可以很便捷的使用该数据库。
废话了大半天,先来看看具体device是如何定义的,以nokia/6600为例:
xml 代码
- <device>
- <identifier>Nokia/6600<!---->identifier>
- <groups>Series60<!---->groups>
- <features>hasCamera<!---->features>
- <capability name="OS" value="Symbian OS 7.0s"/>
- <capability name="ScreenSize" value="176x208"/>
- <capability name="BitsPerPixel" value="16"/>
- <capability name="JavaPackage" value="mmapi, wmapi, btapi, jtwi"/>
- <capability name="JavaPlatform" value="MIDP/2.0"/>
- <capability name="VideoFormat" value="3gpp, mpeg-4, realvideo"/>
- <capability name="SoundFormat" value="midi, midi24, true tones, amr, wb-amr"/>
- <capability name="HeapSize" value="3mb"/>
- <capability name="MaxJarSize" value="dynamic"/>
- <capability name="CameraResolution" value="640x480"/>
- <capability name="CameraZoom" value="2"/>
- <capability name="Font.small" value="15"/>
- <capability name="Font.medium" value="16"/>
- <capability name="Font.large" value="21"/>
- <capability name="Bugs" value="BluetoothRfcommInputStream"/>
- <capability name="wap.userAgent" value="Nokia6600/*"/>
- <!---->device>
用于标示该设备,由厂商和设备名组成。
用于标示该设备属于哪个Group,设备本身的记号(symbol)继承于group的。例如,6600属于Series60组,所以6600就拥有nokia-ui记号。J2mepolish在预处理//#if nokia-ui时,就处理为true。而Group本身也存在着继承关系,例如,Series60又继承于Nokia-UI组。
用于标示该设备具有的功能,如,摄像头、触摸屏等。
用于设备各项重要属性,如堆栈大小,屏幕大小等。在本例中,没有左右软键值定义,是因为其已经被定义在Series60组中。
使用device数据库和预处理 本节重点讨论如何使用指定设备的相关数据。首先,在build.xml中指定设备,在此我们以Nokia/6600和Motorola/E680为例,定义如下:
xml 代码
- <deviceRequirements>
- <requirement name="Identifier" value="Nokia/6600,Motorola/E680" />
- </deviceRequirements>
下面按照以下几点目标来设计代码:
1、6600版本使用FullCanvas,E680版本使用SetFullScreenMode
2、6600版本使用Nokia的翻转方法,E680版本使用Midp2.0的
3、获取设备自身的堆栈大小,屏幕大小等信息
源代码片段如下: java 代码
- 源代码片段如下:
-
- public class MyCanvas
-
-
-
- extends Canvas
-
- {
-
- public MyCanvas()
- {
-
-
-
-
-
-
-
- String screensize = "128*128";
-
-
-
-
-
- int heapSize = 1000;
-
- }
-
- protected void paint (Graphics g)
- {
- }
-
- public void drawClip (Graphics g, int x, int y, Image image, int clipX,
- int clipY, int clipWidth, int clipHeight, int mode)
- {
-
-
-
-
-
- ...
- midp2.0的切片绘制方法,具体代码省略
- ...
-
- }
-
- }
运行build.xml之后,可以在build/real目录下,找到预处理以后的6600版和E680版代码。J2mepolish的预处理结果就体现在此,预处理后代码请感兴趣的朋友动手实践,在此就不贴出来了。
思考 本人对于J2mepolish的了解还需深入,但在使用之后,对j2mepolish有以下几点思考,欢迎大家交流。
- <!--[if !supportLists]-->j2mepolish在build功能上面,其实就是ant扩展。当然,其本身也是支持其他ant扩展,如,打包完成后,自动将jar文件上传到服务器上。但是功能强大的同时,却带来的是自由度的下降。例如,在存在以下需求时,用j2mepolish来实现打包,可能就比较繁琐了:在一份源码的基础上,对不同的资源目录进行打包。如,A版本使用的资源目录为res1,B版本使用的资源目录为res2;不同版本,jad属性不同。本人认为,j2mepolish中,选择不同的设备是在处指定,这样一来,不同版本之间区别就很难在一个build.xml文件中或者一次build过程中定义清楚。当然,并非说j2mepolish不能实现以上需求,这就是仁者见仁,智者见智了。
- <!--[if !supportLists]--><!--[endif]-->j2mepolish编译使用的库,如: midp2.0.jar、cldc1.0.jar等,都是来自于polish_home/import目录下,这样不方便相关库的升级和使用。
相关项目介绍 Antenna:应用于j2me的ant扩展,最新版本支持预处理,也支持j2mepolish的device数据库。地址:http://antenna.sourceforge.net/
J2me Device DB:类似于Antenna的一个项目,拥有自己的设备数据库,也支持预处理。地址:http://j2me-device-db.sourceforge.net/pmwiki/index.php?n=Main.HomePage
软件版本
j2mepolish-2.0-RC4
jdk1.5
eclipse3.2
参考资料 漫游j2mepolish 访问地址:http://www.j2mepolish.org/docs/tour-cn.html
《Pro J2ME Polish Open Source Wireless Java Tools Suite》 作者:Robert Virkus
《创建》 翻译:favoyang
J2mepolish doc 安装自带
J2mePolish集成到eclipse32 访问地址:http://www.iteye.com/topic/38138
分享到:
相关推荐
为了在Eclipse环境中配置并使用J2mePolish进行Java ME开发,本文档将详细介绍所需环境及配置步骤。以下为推荐环境: - 操作系统:Windows XP - IDE:Eclipse 3.2.1 - 插件:EclipseMe 1.5.4 和 Mepose 0.7.1 - Java...
2. **编写业务逻辑**:在源代码中实现应用的功能,可以使用Java语言进行编程。 3. **编译与预览**:通过Ant构建脚本,编译项目并生成jad和jar文件,可以在模拟器或真实设备上预览应用。 4. **调试与优化**:使用...
3. **编程**:使用MIDP库编写游戏逻辑,利用J2MEPolish增强UI体验。 4. **调试与测试**:在模拟器或真实设备上进行测试,确保兼容性和性能。 5. **打包与发布**:生成适用于不同设备的JAR文件,并通过各种渠道分发。...
找这个版本找了好多天,总算找到了,上传这里方便大家下载。本人测试可正常搭配j2me移植环境。
J2ME-Polish是一个德国人开发的开源项目,它提供了对j2me一整套的支持。比如支持自定义UI,支持国际化,通过build.xml生成对各个厂商的手机等。其中最有特色的是采用css定制UI,使得界面呈现和代码分离。
主要写J2mePolish的安装,Eclipse、eclipseME是以前配置的不多写了。 J2mePolish2.0beta3下载成功以后,直接点下载的jar就自动安装了,然后点下一步,下一步,有一个界面是选sdk的,我选的是wtk25。然后又一路下...
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
jar包,官方版本,自测可用
- **构建文件**:“build.xml”文件是J2MEPolish的核心配置文件,用于控制构建流程。即使初学者也能较快掌握基本用法。 #### 四、应用场景 - **移动应用开发**:适用于需要支持多种设备的移动应用项目,特别是对于...
通过以上步骤,你可以利用代码在 J2ME 应用程序运行时灵活地调整 J2MEPolish 的样式,从而为用户提供更加个性化的体验。这种方法尤其适用于需要根据用户交互或环境变化动态调整界面的应用。请参考提供的 "Modifying-...
-- of the <build>-element of the J2MEPolish task. --> <!-- When you call Ant from the command-line, you can --> <!-- call "ant test j2mepolish" to skip the obfuscation --> <!-- and to build the ...
- 功能手机应用开发:对于仍然使用J2ME平台的设备,Pro J2ME Polish是增强用户体验和功能的理想选择。 - 教育与研究:作为教学材料,帮助学生和研究人员了解移动应用开发的底层机制。 - 历史项目维护:对于遗留的...
上面此句用于解压GZIP,至是否要转换成DataInputStream还是InputStream由你的程序决定,可找到j2mepolish相关文档看看其用法。 压缩比例没有测试过,在网上人家说对HTML压缩率为30%左右,而对于加裁速度,只是用...
- **j2mepolish**: 指的是J2ME Polish工具,已经在描述中详细解释过。 【压缩包子文件的文件名称列表】:只有一个文件`polish.pdf`,这可能是一个详细的教程或者指南,涵盖了如何使用J2ME Polish进行项目开发,包括...
在移动MM上卖的可以运行的连连看完整源码,网址: http://mm.10086.cn/1009/300000009965.html?p=7018 用户需要安装j2mepolish和wtk2.5和ant,运行ant命令即可编译
1. **安装配置**:首先,你需要下载J2ME Polish的安装包,并按照`j2mePolish安装配置文档.doc`中的指导进行设置,这通常包括添加到IDE(如Eclipse)的插件集成,配置开发环境,以及安装必要的编译器和模拟器。...