mxmlc和框架链接 - 如何将链接指定为rsl

时间:2010-11-01 14:20:52

标签: ant flex4 mxmlc rsls

我正在尝试使用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中。

1 个答案:

答案 0 :(得分:6)

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

<强>静态链接的运行时共享的库=假

Adob​​e提供的文档对此选项的作用给出了以下略显神秘的描述。

  

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

     

此选项非常有用,您可以在静态和动态链接的应用程序之间快速切换,而无需更改runtime-shared-library-path选项(可以是详细的),也可以编辑配置文件。

以下是文档的链接。 "About the application compiler options"

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


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