以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- Linux技术讨论区 (http://sun4.cn/bbs/list.asp?boardid=7) ---- j2me手机开发MID格式详解 (http://sun4.cn/bbs/dispbbs.asp?boardid=7&id=1329) |
-- 作者:wangxinxin -- 发布时间:2010-11-15 9:09:31 -- j2me手机开发MID格式详解 在一个J2ME项目中干了半年的CM (Configuration Management)/BM (Build Management),学习到了很多普通开发人员较少机会接触, 但是对项目本身又十分重要的知识,写出来与大家分享。 前言 1. 关于JDK/WTK的选择 WTK也是同样的道理,高版本的通常具有较好的兼容性,这里给一个提示, 如果你需要将你的程序再多种品牌的手机上运行,你可以同时安装特定手机品牌放出的J2ME WTK,通过在这类特定的WTK上进行测试,可以较早于真机发现问题。在J2ME的开发过程中,JSR包的选择十分重要,当使用某些 特定JSR时,一定要调研清楚,所需要支持的手机中是否都支持该JSR包。 2. 编译脚本的编写 用Ant来构建应用通常是编写一个build.xml文件,将该文件传给Ant, Ant根据build.xml文件中的指示进行编译和构建,在使用Eclipse+EclipseMe 开发J2ME应用时,可以从Eclipse导出build.xml,不过还是推荐大家自己编写build.xml文件。编写build.xml时,也建议进行良好的设计, 越是复杂的构建过程,对build.xml要求也越高。 3. Antenna Antenna是Ant的扩展包,它是专用来构建、编译、打包、部署J2ME 应用的辅助工具。 Antenna中非常实用的工具就是WtkPreprocess,它给Java开发添加 了类似C/C++中的宏定义和代码预处理的功能。Antenna支持的宏定义 包括: #ifdef 使用Antenna的过程中,会有一些缺陷。例如,在开发过程中,我们 通过定义宏来代表某个功能,对于不同的手机,当我们需要支持该功能时,在编译的过程中,打开这个宏即可,反之则关闭这个宏。如果该功能只与代码有关系,情况就十分简单,Antenna的WtkPreprocess 可以完成我们需要的功能。但是如果该功能同时与资源有关系,当 我们选择不支持该功能时,我们不但想在编译的过程中,通过预处理,去掉相关的代码,也希望该功能相关的资源也不被放入JAR包中, 而WtkPreprocess除了处理源代码,其他都无能为力。因此在构建脚本的编写过程中,需要特别注意这类问题。 4. Proguard 在J2ME开发中,通常都会使用到该工具,并且该工具是开源的, 很容易获取。 5. Preverify 6. Size Control 6.1 kjar/kzip 此处,我们推荐使用一个称为kjar的工具,可以从 http://supremej2me.bambalam.se/guides/optimization-tools/kjar/ 下载到,他是通过改写压缩算法,使制作的JAR包能比普通JAR包减小10% 左右的大小。同时,由于kjar只能运行于Windows平台,并且通常被病毒 防火墙误认为病毒,用起来并不方便,因此你可以从 http://advsys.net/ken/utils.htm 下载kzip,包括Windows和Linux版本,能实现同样的功能。 6.2 BamFS 6.3 mbooster mbooster是一个很强的工具,但同时,也是个收费的工具,开发者 可以向该公司申请trial的license,网址是 http://www.innaworks.com/mBooster.html , mbooster可以减小JAR包的大小,同时也能提高程序的运行速度, 它可以优化class文件,PNG文件,普通情况小可以减小30-40%左右的 大小。 7. 自动构建工具 构建管理者所需要做的事情就是,将自己制作的构建环境放入 CruiseControl之中,对其进行适当的配置,接下来的事情就十分简单了,每次需要构建时,只需要登陆到CruiseControl提供的 Web界面,鼠标点击某链接来trigger构建,后台会自动完成构建、发布,并发邮件通知相关人员,一旦编译出错,也会以邮件的 方式通知大家。 8. 需要遵守的一些原则 2. 要求开发人员尽量使用标准的构建环境进行构建。J2ME的开发,通常都会在Eclipse/NetBeans里面完成,但一定要求开发人员 在提交代码到版本控制系统中之前,至少需要使用标准构建环境构建一次JAR包,并验证。这样可以帮助尽早发现问题,因为IDE 与自订制的构建环境总是存在差别的。 3. 建议将所有用到的第三方库/代码/程序都放入Build Environment中, 而整个Build Environment是应该放入版本控制系统中的。对于 JDK/WTK/Ant等基础设施工具,可以要求开发人员自己安装,并设置好环境变量。可以编写适当的脚本,对环境以及版本进行判断。 每次构建之前,先判断,若不满足,则不予构建。 9. 结束语 |