Antenna: [ æn'tenə ]
n. 触角,天线
由于手中的项目需要为多个合作商提供版本,并且要求服务器端能够通过这些版本区分出来自不现合作商的用户,因此需要为每个合作商打包一个客户端;假设有100个合作商,每个合作商要打包7个机型,则共需打包7*100=700个包;假设打好每个包并做简要测试需要时间5分钟,则700个包共需用时:700*5=3500分钟=3500/60=58小时;显然,使用人工进行打包是一个不现实的做法,即耗费人力、资源,又效率低下、出错率高;
修正了在WTK打包时空指针错误;
当使用WtkPackage->exclude_from_manifest打包时,如果在mainfest中没有指定被排除的jad属性,会导至wtk在打包时抛空指针错误;
概述:
Antenna为开发基于MIDP的无线Java应用提供了一套Ant任务工具;使用Antenna,你可以编译、预验证、打包、混淆、运行MIDP应用、处理Jad描述文件、将Jar文件转换为Sun和IBM启用的运行于PalmOs+MIDP运行环境中的PRC文件、通过定义发布任务或Http Servlet通信实现的OTA 发布;Antenna提供了一个很小的预处理程序用于通过一份源代码打包出不同版本的MIDLet应用;
当然,你可以使用J2me WTK或其它的JavaIDE工具实现大部份类似的工作,但是使用Ant脚本方式的好处是可以使得定义和重建Build处理等操作独立于特定的编程环境;
Antenna任务大都围绕WTK提供的功能展开,因此Antenna需要WTK环境;如果你想在打包时进行混淆,你到少需要在硬盘中安装有以下两种工具之一:RetroGuard and ProGuard;同时,Ant本身也是必须的,据用户反映v1.5.0应当是最低的版本要求;Antenna在类似Eclipse or JEdit这样的提供Ant支持的集成开发环境中运行时表现良好;
下表是Antenna中包括的功能清单:
Task |
Purpose |
WtkJad |
生成或更新Jad描述文件 |
WtkBuild |
编译j2me项目 是Ant标准Javac任务的扩展,为预验证设置适当的bootclasspath; |
WtkPackage |
通过对Jad文件的正确操作扩充Ant’s的标准Jar任务,并能够在最终的Jar文件中包含完整的类库.WtkPackage还能对生成的文件进行预验证及混淆; |
WtkMakePrc |
将Jar/Jad转换为PalmOs PRC文件,以便使其能够在Palm Os的MIDP环境中使用; |
WtkRun |
在WTK模拟器中运行MIDlet; |
WtkRapc |
执行BlackBerry rapc编译器,生成BlackBerry下使用的.con文件; |
WtkPreverify |
独立验证一套类库.这个操作通常是不需要的,因为打包工作包含了相同的功能; |
WtkObfuscate |
独立的混淆一个Jar文件.这个操作通常是不需要的, 因为打包工作包含了相同的功能; |
WtkSmartLink |
从Jar文件中删除不需要的类; |
WtkPreprocess |
简单的Java预处理器,类似于C及其它编程语言,它允许条件编译及选择性的包含源文件; |
WtkDeploy |
布署任务,允许将MIDlet布署到远端的服务器当中,以便用户通过WebServer进行下载; |
WtkSign |
对MIDlet进行签名 |
例子
在Antenna的安装源目录的”samples”文件夹下提供了几个Build.xml文件. 这些文件显示了如果在WTK中建立默认的Demo MIDlet及一些其它的内容;运行这些例子是测试自己的安装及build.xml文件的最好的起点;
Antenna项目存放在SourceForge网站,并遵循LGPL协定.
邮件列表:
以下是一个关于Antenna讨论的邮件列表.
http://sourceforge.net/mailarchive/forum.php?forum_name=antenna-discussion
If you find Antenna useful, you might want to send a picture postcard of your hometown or country telling me so. My surface mail address is: J爪rg Pleumann, Amselstrasse 41, D -45472 M 锟絣heim, Germany. E-mails are also fine, but don't underestimate the productivity (and ego) boost that a wall full of postcards next to my desk will cause.
安装Antenna的过程很直接.
第一步,你需要将Antenna Jar文件放入Ant’s Lib 文件夹或你的classpath.
然后你需要跟据需要调整一些参数,这些参数位于你所使用的build.xml文件或在build.xml文件中指定的全局文件当中;
<taskdef resource="antenna.properties"/>
如果你不想将Antenna置入你的classpath中,下面的变量仍然能够工作:
<taskdef resource="antenna.properties" classpath="full name of Antenna jar file"/>
为项目选择一个WTK及API
所有的Antenna任务均依赖一个用于表明WTK安装目录的属性”wtk.home”.例如,如果你的WTK位于”c:/Java/wtk- 1.0.4 ”,那么你就需要在build脚本中加入下面的行:
<property name="wtk.home" value="c:/Java/wtk-
1.0.4
"/>
根据你所使用的WTK的版本,在你的MIDlet中将使用不同的基础API及扩展API;Antenna会自动验测WTK的版本,并通过几下规则选择API. 默认的BOOTCLASSPATH由CLDC-1.0及MIDP1.0 构成,不包括扩展APIs. 如果你想改变设置,你可以使用以下属性(“WTK”列为这个属性批定WTK的版本)
Property |
Default |
Purpose |
WTK |
wtk.cldc.version |
1.0 |
Specifies the version of CLDC to use. |
2.1+ |
wtk.midp.version |
2.0 for WTK 2.x, 1.0 otherwise. |
Specifies the version of MIDP to use. |
2.0+ |
wtk.mmapi.enabled |
false |
Enables or disables the Multimedia API (MMAPI). |
2.0+ |
wtk.wma.enabled |
false |
Enables or disables the Wireless Messaging API (WMA). |
2.0+ |
wtk.wma.version |
1.0 |
Selects the supported version of the Wireless Messaging API (WMA). Currently either 1.0 (JSR-120) or 2.0 (JSR-205) is allowed. |
2.3+ |
wtk.j2mews.enabled |
false |
Enables or disables the J2ME Web Services API (J2MEWS). |
2.1+ |
wtk.bluetooth.enabled |
false |
Enables or disables the J2ME Bluetooth API (JSR-82). |
2.2+ |
wtk.java3d.enabled |
false |
Enables or disables the J2ME 3D API (JSR-184). |
2.2+ |
wtk.optionalpda.enabled |
false |
Enables or disables the J2ME optional PDA packages (JSR-75). |
2.2+ |
wtk.locationservices.enabled |
false |
Enables or disables the J2ME location services API (JSR-179). |
2.3+ |
wtk.contenthandler.enabled |
false |
Enables or disables the J2ME content handler API (JSR-211). |
2.3+ |
wtk.satsa.enabled |
false |
Enables or disables the J2ME Security and Trust Services API (JSR-177). |
2.3+ |
wtk.miapi.enabled |
false |
Enables or disables the J2ME Mobile Internationalization API (JSR-238). |
2.5+ |
wtk.ams.enabled |
false |
Enables or disables the J2ME Advanced Multimedia Supplements API (JSR-234). |
2.5+ |
wtk.papi.enabled |
false |
Enables or disables the J2ME Payment API (JSR-229). |
2.5+ |
wtk.s2dvgapi.enabled |
false |
Enables or disables the J2ME Scalable 2D Vector Graphics API (JSR-226). |
2.5+ |
wtk.sipapi.enabled |
false |
Enables or disables the J2ME Session Initiation Protocol API (JSR-180). |
2.5+ |
wtk.midpapi |
Varies |
Sets a totally custom BOOTCLASSPATH. Use this property if the set of APIs you need is not covered by the above properties (for example because you are using the system libraries provided another vendor or you have some important additional libraries). |
1.0+ |
在WtkJad及WtkPackage任务中使用的”config”和“profile”属性都可以被一个用于选择CLDC和MIDP版本的属性指定默认值;当你在你的build.xml文件的开始之处设置了版本属性,你通常就不必再关注这些属性;
使用PalmOs下的Websphere Micro Environment Toolkit工具包
从V 0.9.11 版开始,Antenna同时也支持PRC转换(WME). 这种转换需要为IBM J9 VM生成PRC文件,
使用空中提取(OTA)
除多种ANT任务外,本项目还提供了一个OTA Servlet的例子.Servlet包含在任务的同一个ZIP文件当中;它允许通过WtkDeploy上传MIDlet套件,上传后MIDlet套件可以通过WWW或Wap方式下载.一个有效的MIDlet套件列表可以在Html或WML中进行关联,这个列表可以使用模板机制进行修改;
运行OTA servlet需要以下步骤:
1. 服务器端要安装Tomcat
2. 添加新的Web项目,例如,在 "<tomcat>/webapps"目录下新建 "antenna"文件夹,然后在该目录下新建 "WEB-INF" 及 "WEB-INF/lib" 子文件夹;
3. 从Antenna源目录下的”etc”目录拷贝 "web.xml" 文件到”WEB-INF”,并根据自身需要进行设置.将二进制发布文件 "antenna-bin.jar"拷贝到 "WEB-INF/lib"目录;
4. 你现在应当有一份工作配置了,打开Tomcat或通过Web browser+Servlet或OTA机制来进行测试;如果servlet 的URL为http://localhost/antenna,则可用的Html或wml地址为:http://localhost/antenna/index.html 或http://localhost/antenna/index.wml;仅当指定了目录,servlet会偿试决定使用正确形式的Http请求的Header信息;
5. 运行"deploy"例子测试发布;(先要修改"build.xml" 文件)
6. 将Antenna安装目录中”res”目录中的两个文件拷贝到”WEB-INF”目录中并进行修改以构建自己页面布局; "index.html"文件中有说明文档来告诉你该如何去做.
如果你使用修改过的模板来进行OTA操作,希望你能在页面的底部加一个"Powered by Antenna"的超链接并指向Antenna的主页;
参考资料:
Antenna官方网站:
http://antenna.sourceforge.net/
Antenna官方下载:
http://sourceforge.net/projects/antenna
在Google上找到一篇文章:
这篇文章需要有ant的使用经验,不幸的是我从来没有用过ant;于是继续在antenna官网上查找更多的文档:
http://antenna.sourceforge.net/
Antenna 打包 J2ME