已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用J2mePolish的build功能本文主要探讨如何使用j2mepolish进行build,至于j2mepolish的其他强大功能,本文不涉及。本人接触j2mepolish时间不长,若有漏洞或出错,请路过的朋友指正,同时欢迎大家拍砖。对于J2mepolish的主要功能,不用再多讲,其大名在j2me已经如雷贯耳。若还有朋友了解或希望加深“感情”,请访问。虽然目前很多公司或个人已经熟练使用其开发J2me软件,但遗憾的是,国内对J2mepolish的交流太少。其中j2medev 的favoyang翻译了“j2mepolish用户手册”部分章节,感兴趣的朋友,可以到j2medev论坛进行下载:/bbs/dispbbs.asp?boardID=32&ID=3800&page=2J2mepolish安装安装过程其实很简单,在此主要探讨关于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.xmlsample中的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 代码1. 2. Nokia/6600!-identifier 3. Series60!-groups 4. hasCamera!-features 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. !-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 代码1. 2. 3. 下面按照以下几点目标来设计代码:1、6600版本使用FullCanvas,E680版本使用SetFullScreenMode2、6600版本使用Nokia的翻转方法,E680版本使用Midp2.0的3、获取设备自身的堆栈大小,屏幕大小等信息源代码片段如下:java 代码1. 源代码片段如下: 2. 3. publicclassMyCanvas 4. /#ifpolish.api.nokia-ui 5. /#extendscom.nokia.mid.ui.FullCanvas 6. /#else 7. extendsCanvas 8. /#endif 9. 10. 11. publicMyCanvas() 12. 13. /#ifndefpolish.api.nokia-ui 14. /#setFullScreenMode(true); 15. /#endif 16. 17. /#ifdefpolish.ScreenSize:defined 18. /#=Stringscreensize=$polish.ScreenSize; 19. /#else 20. Stringscreensize=128*128; 21. /#endif 22. 23. /#ifdefpolish.HeapSize:defined 24. /#=intheapSize=$bytes(polish.HeapSize); 25. /#else 26. intheapSize=1000; 27. /#endif 28. 29. 30. protectedvoidpaint(Graphicsg) 31. 32. 33. 34. publicvoiddrawClip(Graphicsg,intx,inty,Imageimage,intclipX, 35. intclipY,intclipWidth,intclipHeight,intmode) 36. 37. /#ifpolish.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. j2mepolish在build功能上面,其实就是ant扩展。当然,其本身也是支持其他ant扩展,如,打包完成后,自动将jar文件上传到服务器上。但是功能强大的同时,却带来的是自由度的下降。例如,在存在以下需求时,用j2mepolish来实现打包,可能就比较繁琐了:在一份源码的基础上,对不同的资源目录进行打包。如,A版本使用的资源目录为res1,B版本使用的资源目录为res2;不同版本,jad属性不同。本人认为,j2mepolish中,选择不同的设备是在处指定,这样一来,不同版本之间区别就很难在一个build.xml文件中或者一次build过程中定义清楚。当然,并非说j2mepolish不能实现以上需求,这就是仁者见仁,智者见智了。 2. j2mepolish编译使用的库,如: midp2.0.jar、cldc1.0.jar等,都是来自于polish_home/import目录下,这样不方便相关库的升级和使用。 相关项目介绍Antenna:应用于j2me的ant扩展,最新版本支持预处理,也支持j2mepolish的device数据库。地址:/J2me Device DB:类似于Antenna的一个项目,拥有自己的设备数据库,也支持预处理。地址:/pmwiki/index.php?n=Main.HomePage软件版本j2mepolish-2.0-RC4jdk1.5eclip
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西河池市罗城仫佬族自治县兼爱乡卫生院乡村医师招聘4人考试笔试参考题库附答案解析
- 2025年芜湖市投资控股集团有限公司下属企业招聘专业技术人员2人考试笔试备考试题及答案解析
- 2025上海生命科学研究院分子细胞卓越中心褚晏伊组招聘实验室秘书1人(AI+生物方向)考试笔试备考试题及答案解析
- 北京市交通运输综合执法总队轨道交通运营安全专职督查员招聘10人考试笔试备考题库及答案解析
- 2025重庆市长寿区葛兰镇人民政府招聘全日制公益性岗位人员3人考试笔试备考题库及答案解析
- 2026广东“百万英才汇南粤”-广州市从化区教育局第一次招聘事业单位编制教师229人考试笔试备考试题及答案解析
- 农艺工保密考核试卷含答案
- 肱骨外科颈骨折病人优资料
- 针灸推拿治疗失眠专家讲座
- 2026年度考核方案
- 药物治疗学-河北开放大学-电大-药学专科复习资料
- 胃癌术后患者健康宣教
- 注塑品质隔离管理办法
- 牙齿的常见疾病类型概述
- 乡镇卫生院检验科检验质量控制管理制度
- 烤榴莲创业计划书范文
- 俱乐部年末活动方案
- 6S护理成果汇报
- 2025春季学期国开河南电大本科《行政管理理论与实践专题讲座》一平台无纸化考试(作业练习+我要考试)试题及答案
- 小学三年级数学两位数乘一位数计算综合测验口算题大全附答案
- 2024年中国创投市场数据报告
评论
0/150
提交评论