使用COMPC编译SWC,不包括第三方库

时间:2009-07-17 12:37:33

标签: flex actionscript-3 swc compc

我有一个我建立的代码库。它依赖于另外两个(第三方)库。目前,当我将库编译成swc时,包含了第三方库。我正在寻找一种方法来编译我的代码库对抗第三方库,但不包括在编译的swc中。

这显然意味着任何使用我的库的人都需要这两个库,但我更喜欢这种方式。我没有使用Flex / Flashbuilder,我知道允许您选择要包含在swc中的类。

由于

2 个答案:

答案 0 :(得分:6)

-external-library-path + = my.swc就是答案,尽管不需要使用-runtime-shared-libraries。使用此参数可以指定将在编译中使用但不放入swc的代码。显然,当使用swc时,仍然需要这种排除的clode。

特别值得注意的是,与其他参数不同,-external-library-path使用+ = not =。通过使用just =,您将打破对玩家低级别类和所添加的任何其他外部库的引用。

如果您使用的是带Ant的FlexTasks,您的目标可能如下所示:

<target name="compileToSWC">
    <compc 
        output="${bin}/${SWCName}">
            <source-path path-element="${src}"/>
            <!-- Source to include in SWC -->
            <include-sources dir="${src}" includes="*"/>
            <!-- Libs to exclude from the swc - Note append="true" which is equivillant to using +=-->
            <external-library-path file="${thirdparty.libs}/SomeLib.swc" append="true"/>
            <external-library-path file="${thirdparty.libs}/SomeOtherLib.swc" append="true"/>
    </compc>
</target>

您还可以将external-library-path指向一个文件夹,在这种情况下,它将包含所有swcs。请注意,如果您遵循Adobe的FlexTasks指南并将flexTasks.jar文件放入libs文件夹并使用external-library-path将其作为文件夹进行定位,则flexTasks.jar本身将被排除,从而导致构建失败。要解决此问题,请将flexTasks.jar放在单独的文件夹中,或者直接定位swcs,如上例所示

答案 1 :(得分:0)

我认为你不能要求其他人拥有依赖关系。它可以使用第三方库作为运行时共享库​​,您将需要URL上可用的第三方库,并在编译-runtime-shared-libraries=http://www.yourhost.com/my.swf -external-library-path+=my.swc时使用以下内容。 请参阅Adobe docs for full details about RSLs