Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何构建Ant脚本以根据目标输出执行不同的编译。空中vs Swf?_Flash_Actionscript 3_Ant_Air_Flash Builder - Fatal编程技术网

Flash 如何构建Ant脚本以根据目标输出执行不同的编译。空中vs Swf?

Flash 如何构建Ant脚本以根据目标输出执行不同的编译。空中vs Swf?,flash,actionscript-3,ant,air,flash-builder,Flash,Actionscript 3,Ant,Air,Flash Builder,我如何构建一个Ant脚本来输出swfs和air包,并根据我想要的目标在编译过程中使用不同的类 例如,我正在构建一个应用程序,它将用于web、移动和桌面。在某些情况下,我的类将使用纯空气组件。我希望能够创建ANT构建脚本,在为web输出swf时不包含这些类。我该怎么做呢?以下是我在类似情况下所做的: <target name="define.compile.task" depends="initflex"> <presetdef name="flex.build">

我如何构建一个Ant脚本来输出swfs和air包,并根据我想要的目标在编译过程中使用不同的类


例如,我正在构建一个应用程序,它将用于web、移动和桌面。在某些情况下,我的类将使用纯空气组件。我希望能够创建ANT构建脚本,在为web输出swf时不包含这些类。我该怎么做呢?

以下是我在类似情况下所做的:

<target name="define.compile.task" depends="initflex">
    <presetdef name="flex.build">
        <mxmlc file="${src.dir}/${src.file.path}" 
                output="${output.dir}/${output.file.path}" ...>
            <compiler.source-path path-element="${src.dir}"/>
            ...
        </mxmlc>
    </presetdef>
</target>

<target name="parametrized.web.build" depends="define.compile.task">
    <flex.build>
        <compiler.define name="CONFIG::AllowAirComponents" value="false" />
    </flex.build>   
</target>


<target name="parametrized.air.build" depends="define.compile.task">
    <flex.build configname="airmobile">
        <compiler.define name="CONFIG::AllowAirComponents" value="true" />
    </flex.build>   
</target>

...
然后,我可以定义如下目标

<target name="buildwebclass1">
     <antcall target="parametrized.web.build">
          <param name="src.file.path" value="path/to/MyClass.as"/>
          <param name="output.file.path" value="MyClass.swf"/>
     </antcall>
</target>

或:


... (adt参数)
如果我有一些公共代码工厂,只在必要时实例化air类,我会用
CONFIG::AllowAirComponents{…}
包装它,这样特定于air的类就不会干扰web构建


希望这有帮助

哦,谢谢。您是将import语句包装在CONFIG::AllowAirComponents中,还是仅包装类的实例化?另外,如果我使用的是机器人腿和[Inject]元数据,我可以将CONFIG::AllowAir也包装在注入元数据周围,还是会发生冲突?嗯。。。在我的例子中,相关代码在同一个包中,因此我不需要导入。我也不知道注入-你必须试着让我们知道它是如何进行的…鲍勃,未使用的导入应该在编译时被忽略,所以你不需要关心它们。关于Robotlegs:不确定InjectMetaTag+条件编译,但也许你最好稍微回顾一下架构?例如,针对接口注入,但通过条件编译定义适当的映射。或者,如果您针对实际类进行注入—如果您通过条件编译映射“正确”的类,那么应该不会有问题。
<target name="buildairclass1">
     <antcall target="parametrized.air.build">
          <param name="src.file.path" value="path/to/MyAirClass.as"/>
          <param name="output.file.path" value="MyAirClass.swf"/>
     </antcall>
     <exec executable="${FLEX_HOME}/bin/adt" failonerror="true">
         ... (adt arguments)
     </exec>
</target>