由于渠道包众多,只能用ant批量打包。由于广告内置的问题(有的渠道不允许有内置广告),出现manifest文件在带广告和不带广告的版本之间有大量修改,所以考虑有一个变量isSDKEnabled控制是否生成带广告的APK安装文件。于是需要用到条件判断,做个小记。
project.properties文件增加以下配置,用来控制打包是否包含广告SDK:
project.properties:
1 | isSDKEnabled=true |
方法一:
使用Ant自带条件判断的方式;
build.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <project name="testCondition" default="test">
<target name="test">
<property file="project.properties" />
<echo message="isSDKEnabled=${isSDKEnabled}"/>
<condition property="cond">
<istrue value="cond"/>
</condition>
<antcall target="isTrue" />
<antcall target="isFalse" />
</target>
<target name="isTrue" if="${isSDKEnabled}">
<echo>It is ture...</echo>
</target>
<target name="isFalse" unless="${isSDKEnabled}">
<echo>It is false...</echo>
</target>
</project>
|
这个方式也可以在condition里面使用<and>、<or>、<not>、<xor>等多条件组合判断。
方法二:
使用Ant-contrib包的条件判断:
build.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <project name="testCondition" default="condition">
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<target name="isTrue">
<echo>is ture</echo>
</target>
<target name="isFalse">
<echo>is false</echo>
</target>
<target name="condition">
<loadproperties srcFile="project.properties" />
<if>
<equals arg1="true" arg2="${isSDKEnabled}" />
<then>
<antcall target="isTrue"/>
</then>
<elseif>
<equals arg1="false" arg2="${isSDKEnabled}" />
<then>
<antcall target="isFalse"/>
</then>
</elseif>
<else>
<echo>Error occur...</echo>
</else>
</if>
</target>
</project>
|
方法二看起来会更加容易让人理解。