J2me与Antenna
一、Antenna初步
认识Antenna
Antenna是基于Ant的J2me开发工具,可以使用Antenna对J2me程序进行编译、校验、打包、混淆、运行Jar及将已经打包完成的Jad和Jar部署到OTA服务器上。除此之外,Antenna的预处理可以提供对源程序进行相关的处理,以达到多机型时配的要求。
获得Antenna
Antenna官方:http://antenna.sourceforge.net/
Antenna下载地址:http://sourceforge.net/projects/antenna/files/
Eclipse3.2配置Antenna
1. 选中左边J2ME选项
2. Antenna JAR选择已经下载的Antenna的Jar包
3. WTK Root选择WTK的根目录
附:Ant使用入门:http://nything.javaeye.com/blog/419873
二、Antenna任务
Eclipse 3.2使用Antenna示例:
1. 工程:Venus
2. 相关文件:VenusCanvas.java VenusMIDlet.java等
3. 选中项目并点右键 à 选中J2ME à选中 Export Antenna Build Files
4. 生成三个文件:
a) build.xml
b) eclipseme-build.properties
c) eclipseme-build.xml
5. 执行build.xml文件 右键 à Run As à 1.Ant Build
6. 最终的文件结构
7. 文件说明:
a) build.xml是Ant执行的文件,一些Ant à Antenna如何执行的一些配置,依赖Ant
b) eclipseme-build.properties文件主要是配置程序有关的属性,例如:编码、是否校验、WTK目录、混淆等相关的属性
c) eclipseme-build.xml真正配置并执行Antenna的任务
8. eclipseme.feature_1.6.8版本在测试时没不能自动生成build.xml,只能生成其它两个,build.xml文件只是一个模版文件,从别的项目中copy一个
(附件::VenusForAntenna项目)
编译<Build>
WtkBuild 任务基于Ant标准Javac的扩展,它可以设置适当的路径和预校验允许,此任务基本上保持默认。
注:如果项目依赖第三方Jar包的话,此处要进行设置
校验<Preverify>
WtkPreverify 任务提供一独立的预校验收报告任务,不过WtkBuild和WtkPackage任务包括相同的功能。注意:WtkPreverify 要么可以操作目录或一个JAR文件,而不是两上。
注:校验要使用的Java命令只有在开发运行环境才有
打包<Package>
WtkPackage任务是对扩展Ant的标准Jar任务,正确处理JAD文件,并能纳入最终JAR文件的完整库,它也允许校验和生成的文件混淆。
注:中文乱码问题及及入第三方Jar包
混淆<Obfuscate>
WtkObfuscate任务提供了一个独立的混淆的任务,要将ProGuard或RetroGuard的JAE包入到WTK的Bin目录下,如果同时配置的话,会优先考虑ProGuard。
注:要将混淆包的Jar文件入到Wtk的bin目录下以及jar命令也是Java开发运行环境支持
运行<Run>
WtkRun任务启动已经存在的一个JAR/JAD文件,它可以设置模拟器,是否等Ant运行结束等设置。
部署<Deploy>
WtkDeploy基本无法研究
Task总结
问题总结
1. 用Antenna打包或混淆生成的JAR稍微大一点 (MANIFEST.MF)
2. <taskdef resource=”antenna.properties”/> 读取Antenna.jar中的配置文件
3. <antcall target="-eclipseme-obfuscate”/> 调用混淆任务
a) 两种混淆支持 wtk还有一种就是自己用的
b) 选第二种,相关配置:obfuscate="false"
4. 中文乱码处理
a) 项目的编码:UTF-8 workspace设置编码
5. 添加第三方Jar包
a) 一般是应用Jar包
b) Wtkbuild属性:classpath="${project.root.jarTest}\verified\libs\j2meslave.jar"
c) Wtkpackage属性:libclasspath="${project.root.jarTest}\verified\libs\j2meslave.jar"
d) <fileset dir="${path.build.classes}"/>
6. 更改JRE运行环境
a) Jre-jdk的更改
7. 除信息外打印出的红色字为警告
以上的这个任务有很多属性,官方网站都有介绍,考虑到项目中不可能完全使用到这些属性,提供示例文档并加以注释来帮助大家理解。
预处理<Preprocess>
WtkPreprocess任务提供了一个预处理器,类似C语言的预处理。请注意此任务只预处理源文件,但不编译它们。
使用它的过程会比较困难,因为它有很多语法上的规范学习。
介绍
预处理:所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。
Wtkpreprocess指令:
Wtkpreprocess运行符:
该处理器支持三种类型的变量:int、String、boolean
Antenna Preprocessor插件的安装
更新安装插件
搜索安装插件
添加插件的更新站点及名名称
安装成功后,会要求重新启动Eclipse。再打开你的项目时,点右键会出现一个Antenna Preproccessor这个远项,用于是否开启它的预处理机制
本图片显示Antenna Preproccessor的操作界面
Antenna Preprocessor插件的使用
预处理相关的配置文件
首先将不同的机型分类,比如Nokia、Motorola等等,并且将同一机型按系统来分,比如:s40、s60等,最后单一的机型放到devices.xml文件,不过有些机型的参数并不完整且有些机型没有提供。
通过手动添加参数来完成参数不完整的机型,或者是一些没有的机型:(它的参数是随意添的,但为了统一,还是要与当前机型的参数一致,并且添加新参数时要有一定的规范)
1. 添加已经机型参数:
l Motorola/V300
l Nokia/N72
从上面两图可以看出,Motorola/V300并没有左软按键的定义,而Nokia/N72是有的,就这样为Motorola/V300添加左软按键的按键值
l 添加Motorola/V300按键值:(红箭头所指的文本框内容为添加的代码,我们的程序代码不用变)
2. 添加自定义参数(系统中没有定义的参数):
isTouchScreen表示是否支持触摸屏,这样通过自己定义的参数。主要是给一个依据,这样让我们的代码有流程正确的走下去。
3. 添加机型
它总结上面的两种情况,添加机型时,所有的参数最好用系统已经定义的,并添加那些自定义的机型参数,它是添加自定义参数的特殊情况
向上面这样,我们可以自己定义它的屏幕宽、高等参数,你想添加什么就添加什么
isHasKeyBoard ="true",isTouchScreen ="false",isNotAlphaMsgBg ="false",isNeedEmotion ="true",isNeedHead ="true",isSupportSMS ="true", isSupportIVR ="true", isSupportMIDI="true", isSupportSound="true",isSupportVibrate="true",isNeedProxy="true",EMOTICON_SIZE=15,HEADICONSIZE = 14, connect = "CONN_BOTH", BUILD_VERSION = 0, phone="SAMSUNG E878",ScreenWidth=176,ScreenHeight=220
1.