j2mepolish研究报告
研究了几天polish,目前有了比较清楚的眉目,做个报告。
附件中rar是一个应用的工程,build.xml是我总结的一个基本的build的xml文件,里面有说明。
在这里说明下build之后的文件放在了build.xml上一级目录下的文件目录名字是:
项目名称_设备厂商_设备型号_版本,如:MyPolish_Nokia_6600_2_1_0
下面对于java文件中撰写//#格式的语句做出总结(主要介绍怎么用,至于polish里面都有什么能,做什么,我就不说了,很是强大。。。。):
1、 在build.xml文件里面的build字段内有个variables字段,这里定义了我们自定义的参数,定义为参数1。
如:<variable name="MusicType" value="ringtone"/>
2、 在devices.xml文件里面的features字段,定义了polish针对每款终端设备的属性,定义为设备属性。
如: <features>isVirtual</features>
3、 在devices.xml文件里面的capability字段,定义了polish针对每款终端设备的参数,定义为参数2。
如:<capability name="JavaPlatform" value="MIDP/1.0" />
4、 此外还有一些polish定义的固有参数,定义为参数3。
这里举一个常用的:
polish.name 设备型号,如6600
polish.vendor 设备厂商,如Nokia
polish.identifier 设备厂商/设备型号,如Nokia/6600
可以看到,参数的都有name和value两个字段组成,而属性只有一个属性名字。这直接影响到在Java文件里面if语句里面的使用格式。
下面讲java文件里面的对于以上三种xx的使用格式:
1、 参数1的使用格式:
检测是否定义了的格式:
If param1:defined
If ${param1}:defined
Ifdef param1:defined
Ifdef ${param1}:defined
Ifndef param1
Ifndef ${param1}
参数是否满足某一条件(这里以”==”为例,实际可以用:==、<、>、!=、<=、>=、&& 、and、||、or、^、xor、!、not,和咱们平时用的一致):
If param1 == value
If param1 == “value”
If ${param1} == value
If ${param1} == “value”
2、 设备属性的使用格式:
设备属性只有检测定义的使用
If polish.att1
If ${ polish.att1}
Ifdef catt1
Ifdef ${ polish.att1}
Ifndef polish.att1
Ifndef ${ polish.att1}
3、 参数2和参数3的使用格式:
检测是否定义了的格式:
If polish.param1:defined
If ${ polish.param1}:defined
Ifdef polish.param1:defined
Ifdef ${ polish.param1}:defined
Ifndef polish.param1
Ifndef ${ polish.param1}
参数是否满足某一条件(这里以”==”为例,实际可以用:==、<、>、!=、<=、>=、&& 、and、||、or、^、xor、!、not,和咱们平时用的一致):
If polish.param1 == value
If polish.param1 == “value”
If ${ polish.param1} == value
If ${ polish.param1} == “value”
补充一个引用参数的使用格式,如果想要引用某一个参数的具体值给生成的java文件里面使用可以采用下面的格式:
//#if polish.OS == "Symbian"
//#= public String str2 = "${polish.OS}";
//#= public int value1 = ${MusicType};
//#endif
注意上面的第二行的//#后面的=,这个是关键,不然不能引用参数的值,还有一个关键是引用的参数必须在${}里面写入,否则,要么在make时候报错,要么你会得到一个和你写的参数名字一模一样的数值,比如第二行polish.OS不在${}里面的话,make时候不报错,但是你得到的java文件里面是:
public String str2 = “polish.OS”;
好在make的时候polish会检测等号两边的数据类型是不是匹配。这解决所有非字符串的引用值的问题。
可以看到,参数的都可以用操作符操作,只是自定义的参数不需要加polish.这个头,而属性只能判断是不是支持这个属性,即是不是定义了,不能用操作符判断它的内容。
有一点建议:就是大家定义的变量最好放在build.xml里面的variables字段。目前需要一个关于我们发布版本的设备的能力的清单,如果有这个清单就可以定做我们自己的deveices.xml,有了自己的deveices.xml就可以订做我们自己的针对不同设备的build.xml文件了。