如何在命令行上从源构建我的Flex库,以便我可以RSL它?

时间:2009-10-21 16:18:49

标签: flex flex3 adobe

问题是什么:我想使用compc(命令行或ant)从一些actionscript和mxml代码构建.swc。现在,我的命令就是:

# compile src to .swc
FLEX_HOME="${FLEX_HOME:?'FLEX_HOME must be set'}"
PROJECT_DIR=$(unset CDPATH; cd `dirname $0`/..; pwd)
COMPC="${FLEX_HOME}/bin/compc"

"$COMPC" \
 -source-path $PROJECT_DIR/src \
 -include-sources $PROJECT_DIR/src \
 -compiler.library-path "$FLEX_HOME/frameworks/libs" "$PROJECT_DIR/libs" "$HOME/projects/advanis/flex_libs/libs" \
 -output $PROJECT_DIR/bin/myLibrary.swc

但是,当我使用它构建时,.swc catalog.xml文件除了$ PROJECT_DIR / src中的类之外,还有.swc文件具有来自依赖库和框架本身的类。我知道有可能不这样做,因为(例如)Cairngorm库依赖于flash事件对象,但该对象不在任何地方的.swc的library.swf文件中,或者无论如何我都很确定。

如果它有帮助,这是我的完整情景,也许有人可以告诉我为什么我会以错误的方式去做:

我有一个Flash Builder 4 Flash应用程序项目取决于:

  • v3.4.1 SDK
  • FlexUnit 4,我有一对.swc文件,想要RSL:
    • FlexUnit4_1.0.swc
    • flexunitextended.swc
  • Cairngorm 2.2.1,作为我想要RSL的SWC
  • mock-as3,我只作为源代码,并希望使用上面的说明来构建一个可用的库
  • hamcrest-as3,我既有源代码又有二进制代码,并希望使用上面的说明构建一个可用的库

当我将FlexUnit,Cairngorm,mock-as3和hamcrest-as3库设置为RSL库时,.swf位置设置为存在的东西,我得到运行时故障:

VerifyError: Error #1014: Class IMXMLObject could not be found.

这可能是库的顺序,内置于mock-as3库中的额外垃圾或其他内容的结果。如果这有所不同,则使用以下命令优化RSL swf文件:

optimizer -keep-as3-metadata="Bindable,Managed,ChangeEvent,NonCommittingChangeEvent,Transient" \
    -input library.swf \
    -output $swf_file

无论如何,这有点分散,但它的主旨是:我如何将第三方.swc文件,第三方.swf文件,第三方源包和我的项目组装成一个工作申请?

1 个答案:

答案 0 :(得分:2)

“compiler.library-path”参数导致这些库链接到输出SWF / SWC。为了防止库在使用中链接“compiler.external-library-path”参数。但是请确保依赖关系链接到最终的应用程序SWF或以其他方式加载(如RSL)。