`
pandonix
  • 浏览: 402082 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用J2mePolish的build功能

    博客分类:
  • J2ME
阅读更多

本文主要探讨如何使用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

如果在Eclipsefile->new->project出现j2mepolish工程,则说明mepose插件已经成功安装,至此,就可以新建j2mepolish工程。新建的j2mepolish工程中,包含了自动创建的build.xml文件,以及srcresource等默认目录。运行只需右键选中build.xml,点击run as->ant build

当然,不使用mepose插件也可以,因为Eclipse默认支持ant。所以,只需要按照sample中的目录结构存放资源和源码,并是用语法正确的build.xml文件就可正常使用j2mepolish,毕竟,j2mepolishbuild功能,只是ant的扩展。

Eclipseplugins目录中,自带有anteclipse3.2中的ant版本为1.6.5。如果希望使用自己的ant,可以在Eclipse中的Windows->preference->ant中设置Ant Home,将路径指向自己的ant目录,这样可以保持与Eclipse外的ant版本一致。

 build.xml

sample中的build.xml,个人觉得写得太过于繁琐,中间夹杂太多注释。这对于不初学者,特别是不熟悉ant脚本的朋友,会比较“郁闷”。由于本文重点探讨antbuild功能,所以,只讨论build.xml中的“j2mepolishtarget,其他部分,请参考相关文档。

主要用于描述midlet相关信息,帮助设置JADMANIFEST。但部分中,可以通过子元素设置jad其他属性。有关相关属性的定义,请参考favoyang翻译《创建》或《Pro J2ME Polish Open Source Wireless Java Tools Suite

虽然是可选,但却与device数据库紧密相关。如果需要使用device相关数据,特别是对多版本的j2me程序打包,这部分的设置尤为重要。

实际的build操作部分,在此设置midlet类名,以及第三方库包的导入等。在属性中,usePolishGui用于标示是否适用polishGUI功能,注意该属性缺省是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 代码
  1.     <device>  
  2.         <identifier>Nokia/6600<!---->identifier>  
  3.         <groups>Series60<!---->groups>  
  4.         <features>hasCamera<!---->features>  
  5.         <capability name="OS" value="Symbian OS 7.0s"/>  
  6.         <capability name="ScreenSize" value="176x208"/>  
  7.         <capability name="BitsPerPixel" value="16"/>  
  8.         <capability name="JavaPackage" value="mmapi, wmapi, btapi, jtwi"/>  
  9.         <capability name="JavaPlatform" value="MIDP/2.0"/>  
  10.         <capability name="VideoFormat" value="3gpp, mpeg-4, realvideo"/>  
  11.         <capability name="SoundFormat" value="midi, midi24, true tones, amr, wb-amr"/>  
  12.         <capability name="HeapSize" value="3mb"/>  
  13.         <capability name="MaxJarSize" value="dynamic"/>  
  14.         <capability name="CameraResolution" value="640x480"/>  
  15.         <capability name="CameraZoom" value="2"/>  
  16.         <capability name="Font.small" value="15"/>  
  17.         <capability name="Font.medium" value="16"/>  
  18.         <capability name="Font.large" value="21"/>  
  19.         <capability name="Bugs" value="BluetoothRfcommInputStream"/>          
  20. <capability name="wap.userAgent" value="Nokia6600/*"/>  
  21. <!---->device>  

用于标示该设备,由厂商和设备名组成。

用于标示该设备属于哪个Group,设备本身的记号(symbol)继承于group的。例如,6600属于Series60组,所以6600就拥有nokia-ui记号。J2mepolish在预处理//#if nokia-ui时,就处理为true。而Group本身也存在着继承关系,例如,Series60又继承于Nokia-UI组。

用于标示该设备具有的功能,如,摄像头、触摸屏等。

用于设备各项重要属性,如堆栈大小,屏幕大小等。在本例中,没有左右软键值定义,是因为其已经被定义在Series60组中。

 使用device数据库和预处理

本节重点讨论如何使用指定设备的相关数据。首先,在build.xml指定设备,在此我们以Nokia/6600Motorola/E680为例,定义如下:

xml 代码
  1. <deviceRequirements>  
  2.         <requirement name="Identifier" value="Nokia/6600,Motorola/E680" />  
  3. </deviceRequirements>  

下面按照以下几点目标来设计代码:

16600版本使用FullCanvasE680版本使用SetFullScreenMode

26600版本使用Nokia的翻转方法,E680版本使用Midp2.0

3、获取设备自身的堆栈大小,屏幕大小等信息

源代码片段如下:
java 代码
  1. 源代码片段如下:  
  2.   
  3. public class MyCanvas  
  4. // #if polish.api.nokia-ui  
  5.         // # extends com.nokia.mid.ui.FullCanvas  
  6.         // #else  
  7.         extends Canvas  
  8. // #endif  
  9. {  
  10.   
  11.     public MyCanvas()  
  12.     {  
  13.         // #ifndef polish.api.nokia-ui  
  14.         // # setFullScreenMode(true);  
  15.         // #endif  
  16.   
  17.         // #ifdef polish.ScreenSize:defined  
  18.         // #= String screensize = "${ polish.ScreenSize }";  
  19.         // #else  
  20.         String screensize = "128*128";  
  21.         // #endif  
  22.   
  23.         // #ifdef polish.HeapSize:defined  
  24.         // #= int heapSize = ${ bytes(polish.HeapSize) };  
  25.         // #else  
  26.         int heapSize = 1000;  
  27.         // #endif  
  28.     }  
  29.   
  30.     protected void paint (Graphics g)  
  31.     {  
  32.     }  
  33.   
  34.     public void drawClip (Graphics g, int x, int y, Image image, int clipX,  
  35.             int clipY, int clipWidth, int clipHeight, int mode)  
  36.     {  
  37.         // #if polish.api.nokia-ui  
  38.         // # ...  
  39.         // # nokia的切片绘制方法,具体代码省略  
  40.         // # ...  
  41.         // #else  
  42.              ...  
  43.              midp2.0的切片绘制方法,具体代码省略  
  44.              ...  
  45.         // #endif  
  46.     }  
  47.   
  48. }  

运行build.xml之后,可以在build/real目录下,找到预处理以后的6600版和E680版代码。J2mepolish的预处理结果就体现在此,预处理后代码请感兴趣的朋友动手实践,在此就不贴出来了。

 思考

本人对于J2mepolish的了解还需深入,但在使用之后,对j2mepolish有以下几点思考,欢迎大家交流。

  1. <!--[if !supportLists]-->j2mepolishbuild功能上面,其实就是ant扩展。当然,其本身也是支持其他ant扩展,如,打包完成后,自动将jar文件上传到服务器上。但是功能强大的同时,却带来的是自由度的下降。例如,在存在以下需求时,用j2mepolish来实现打包,可能就比较繁琐了:在一份源码的基础上,对不同的资源目录进行打包。如,A版本使用的资源目录为res1B版本使用的资源目录为res2;不同版本,jad属性不同。本人认为,j2mepolish中,选择不同的设备是在处指定,这样一来,不同版本之间区别就很难在一个build.xml文件中或者一次build过程中定义清楚。当然,并非说j2mepolish不能实现以上需求,这就是仁者见仁,智者见智了。
  2. <!--[if !supportLists]--><!--[endif]-->j2mepolish编译使用的库,如: midp2.0.jarcldc1.0.jar等,都是来自于polish_home/import目录下,这样不方便相关库的升级和使用。
 相关项目介绍

Antenna:应用于j2meant扩展,最新版本支持预处理,也支持j2mepolishdevice数据库。地址: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

分享到:
评论
2 楼 pandonix 2007-08-20  
楼上的,wap浏览器开发如何了?有兴趣可以多交流交流
1 楼 wuhua 2007-08-20  
我转载了,希望同意

相关推荐

    j2mePolish安装配置文档

    为了在Eclipse环境中配置并使用J2mePolish进行Java ME开发,本文档将详细介绍所需环境及配置步骤。以下为推荐环境: - 操作系统:Windows XP - IDE:Eclipse 3.2.1 - 插件:EclipseMe 1.5.4 和 Mepose 0.7.1 - Java...

    [Polish]序言简介

    - **构建文件**:“build.xml”文件是J2MEPolish的核心配置文件,用于控制构建流程。即使初学者也能较快掌握基本用法。 #### 四、应用场景 - **移动应用开发**:适用于需要支持多种设备的移动应用项目,特别是对于...

    [Polish]创建过程

    -- of the &lt;build&gt;-element of the J2MEPolish task. --&gt; &lt;!-- When you call Ant from the command-line, you can --&gt; &lt;!-- call "ant test j2mepolish" to skip the obfuscation --&gt; &lt;!-- and to build the ...

    嵌入式八股文面试题库资料知识宝典-深圳禾苗通信科技有限公司.zip

    嵌入式八股文面试题库资料知识宝典-深圳禾苗通信科技有限公司.zip

    Arduino UART实验例程【正点原子EPS32S3】

    Arduino UART实验例程,开发板:正点原子EPS32S3,本人主页有详细实验说明可供参考。

    电力弹簧技术在主动配电网规划与运行优化调度中的应用研究

    内容概要:本文详细探讨了电力弹簧技术在主动配电网规划及运行优化调度中的应用。首先介绍了电力弹簧技术作为智能电网调控手段的优势,如自适应性强、响应速度快、节能环保等。接着阐述了主动配电网规划的目标和策略,包括优化电网结构、提高能源利用效率和降低故障风险。随后讨论了运行优化调度的原则和方法,强调了实时监测、智能调度策略以及优化调度模型的重要性。最后通过实际案例分析展示了电力弹簧技术在提升电网稳定性、可靠性和能效方面的显著效果,展望了其广阔的应用前景。 适合人群:从事电力系统规划、运行管理的研究人员和技术人员,以及对智能电网感兴趣的学者和学生。 使用场景及目标:适用于希望深入了解电力弹簧技术及其在主动配电网规划和运行优化调度中具体应用的专业人士。目标是掌握电力弹簧技术的工作原理、优势及其在实际项目中的实施方法。 其他说明:本文不仅提供了理论分析,还有具体的案例支持,有助于读者全面理解电力弹簧技术的实际应用价值。

    honor_1.145_testgray20250427.apk

    honor_1.145_testgray20250427.apk

    嵌入式八股文面试题库资料知识宝典-【开发】嵌入式开源项目&库&资料.zip

    嵌入式八股文面试题库资料知识宝典-【开发】嵌入式开源项目&库&资料.zip

    鸿蒙生态HarmonyOS:万物互联时代的操作系统革新与发展路径

    内容概要:本文详细介绍了华为推出的面向全场景的分布式操作系统HarmonyOS。HarmonyOS旨在打破设备间的壁垒,实现万物互联,通过分布式软总线和分布式任务调度等核心技术,让不同设备协同工作,如手机、平板、智能家居等设备间无缝流转任务。其应用生态涵盖教育、金融、出行等多个领域,华为通过资金、技术支持和流量扶持吸引开发者,推动生态繁荣。HarmonyOS从2019年首次发布至今,经历了多个版本迭代,性能和安全性不断提升,用户体验更加智能便捷。尽管面临应用生态丰富度不足、市场竞争压力等挑战,华为通过优化开发工具、加强市场推广等策略积极应对。未来,HarmonyOS将在分布式技术、AI融合和隐私安全等方面持续创新,并在智能家居、车联网、工业互联网等领域拓展生态。 适合人群:对操作系统技术感兴趣的专业人士、开发者、科技爱好者。 使用场景及目标:①了解HarmonyOS的技术架构和分布式技术的特点;②探讨HarmonyOS在智能家居、车联网等领域的应用前景;③评估HarmonyOS对现有操作系统市场的潜在影响。 阅读建议:HarmonyOS作为一款面向全场景的操作系统,不仅涉及技术实现,还包括生态建设和用户体验。因此,在阅读过程中,应重点关注其技术优势、应用场景及未来发展潜力,结合自身需求思考其在实际生活和工作中的应用价值。

    少儿编程scratch项目源代码文件案例素材-简单杀戮.zip

    少儿编程scratch项目源代码文件案例素材-简单杀戮.zip

    基于阻抗控制和工艺优化的机器人磨抛技术研究.pdf

    基于阻抗控制和工艺优化的机器人磨抛技术研究.pdf

    少儿编程scratch项目源代码文件案例素材-扛住别被压.zip

    少儿编程scratch项目源代码文件案例素材-扛住别被压.zip

    【操作系统领域】HarmonyOS架构解析:分布式设计与全场景智能应用的创新实践

    内容概要:本文详细介绍了华为自主研发的面向全场景的分布式操作系统——HarmonyOS的架构设计及其在智能家居、智能穿戴、智慧出行等领域的应用。HarmonyOS采用分层架构,包括内核层、系统服务层、框架层和应用层,各层分工明确,协同工作,为用户提供稳定、高效、智能的操作系统。其核心特性包括分布式架构、微内核设计、组件化开发和一次开发多端部署,这些特性使得不同设备能够实现互联互通和资源共享,为用户带来无缝的全场景智能体验。此外,文章还探讨了HarmonyOS面临的生态建设和兼容性挑战,以及未来的发展前景和技术创新方向。 适合人群:对操作系统架构感兴趣的科技爱好者、智能设备开发者及相关行业从业者。 使用场景及目标:①了解HarmonyOS架构设计及其在智能家居、智能穿戴、智慧出行等领域的具体应用;②掌握HarmonyOS的核心特性,如分布式架构、微内核设计、组件化开发和一次开发多端部署;③探讨HarmonyOS面临的挑战及其未来发展方向。 其他说明:HarmonyOS的出现不仅为华为在智能设备领域的发展提供了有力支撑,也为整个行业的创新发展注入了新的活力。作为科技爱好者和关注者,我们应持续关注HarmonyOS的发展,共同见证它在智能设备领域创造更多的辉煌。

    嵌入式八股文面试题库资料知识宝典-linux驱动开发.zip

    嵌入式八股文面试题库资料知识宝典-linux驱动开发.zip

    开关磁阻电机技术参数与建模技术深度解析:4kW电机性能详述

    内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。

    嵌入式八股文面试题库资料知识宝典-新岸线.zip

    嵌入式八股文面试题库资料知识宝典-新岸线.zip

    基于支持向 量机和余弦相似度的故障诊断方法.pdf

    基于支持向 量机和余弦相似度的故障诊断方法.pdf

    Objective-C+ARKit实现图片识别、平面捕捉、人脸识别+源码(毕业设计&课程设计&项目开发)

    Objective-C+ARKit实现图片识别、平面捕捉、人脸识别+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 ARKit实现图片识别、平面捕捉、人脸识别 ARKit需要ios11 以及 A11处理器或更高版本设备支持 Objective-C+ARKit实现图片识别、平面捕捉、人脸识别+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 ARKit实现图片识别、平面捕捉、人脸识别 ARKit需要ios11 以及 A11处理器或更高版本设备支持~ Objective-C+ARKit实现图片识别、平面捕捉、人脸识别+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 ARKit实现图片识别、平面捕捉、人脸识别 ARKit需要ios11 以及 A11处理器或更高版本设备支持

    少儿编程scratch项目源代码文件案例素材-火柴人大战 中世纪战争.zip

    少儿编程scratch项目源代码文件案例素材-火柴人大战 中世纪战争.zip

    嵌入式八股文面试题库资料知识宝典-并行科技笔试题.zip

    嵌入式八股文面试题库资料知识宝典-并行科技笔试题.zip

Global site tag (gtag.js) - Google Analytics