5

我正在尝试使用 ant 构建我的 flex 4 项目。在 Flash Builder 4 中,可以在项目属性中将“框架链接”设置为“合并到代码中”、“运行时共享库​​ (RSL)”或“使用 SDK 默认值(运行时共享库​​)”之一。如何在 build.xml 中将等效项设置为 mxmlc 选项?

我当前的 build.xml 如下所示:

<target name="myapp">
    <mxmlc 
        file="${PROJECT_ROOT}/myapp.mxml" 
        output="${DEPLOY_DIR}/myapp.swf"
        actionscript-file-encoding="UTF-8"
        keep-generated-actionscript="false"
        warnings="false" optimize="true" incremental="false" >

        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 

        <source-path path-element="${FLEX_FRAMEWORKS}"/> 

        <compiler.debug>true</compiler.debug>

        <runtime-shared-library-path path-element="${FLEX_FRAMEWORKS}/libs/framework.swc">
            <url rsl-url="framework_4.0.0.14159.swz"/>
            <url rsl-url="framework_4.0.0.14159.swf"/>
        </runtime-shared-library-path>                       

        <compiler.source-path path-element="src"/>

        <!-- List of external libraries -->
        <compiler.source-path path-element="${MY_LIB}/src" />

        <!-- List of SWC files or directories that contain SWC files. -->
        <compiler.library-path dir="libs" append="true">
            <include name="*.swc" />
        </compiler.library-path>

        <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swz"/>
        <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swf"/>

    </mxmlc>
</target>

我假设设置 runtime-shared-library-path 指令并将框架 swf、swz 文件复制到我的目标文件夹中可以使事情正常进行,但情况似乎并非如此。

我评估这是否有效的方式如下:我使用自定义预加载器,并且为了使其工作,我需要将框架链接作为 RSL。使用“合并到代码”时,我的预加载器会卡在某个点并且不会进入我的应用程序 swf。这与我在使用上述 build.xml 时看到的行为相同,这让我认为 SWF 是通过合并到代码中的框架链接(而不是 RSL 链接)构建的。

与此相关的一个问题是如何确定我的 swf 是否使用 RSL。我想我可以看看编译输出的大小。但似乎应该有一种方法可以在我不知情的情况下判断我是在使用外部框架文件还是以某种方式将其捆绑到 SWF 中。

4

1 回答 1

6

这有点棘手,因为这方面的文档有点稀缺。您可能需要在命令行或配置文件中设置以下选项。

静态链接运行时共享库​​ = false

Adobe 的文档对这个选项的作用给出了以下稍微含糊的描述。

确定是静态编译库还是使用 RSL。将此选项设置为 true 以忽略 runtime-shared-library-path 选项指定的 RSL。将此选项设置为 false 以使用 RSL。默认值是true。

此选项很有用,因此您可以在静态和动态链接的应用程序之间快速切换,而无需更改可能很冗长的 runtime-shared-library-path 选项或编辑配置文件。

这是文档的链接。 “关于应用程序编译器选项”

请注意,文档中的默认值为 true。但是,如果您正在加载 flex-config.xml 文件(默认或自定义),您还应该检查该文件中是否存在此设置以及它是什么。根据我的经验,frameworks/flex-config.xml 的默认值实际上是 false。然而,在上面的示例中,这似乎可以设置为其他方式。


(我们使用与 ANT 不同的构建系统,所以我对您需要的 build.xml 语法不太熟悉。)

于 2011-02-22T17:22:51.403 回答