Что говорит вопрос: я хочу использовать compc (либо из командной строки, либо из ant) для создания .swc из некоторого ActionScript и mxml-кода. Сейчас у меня есть команда:
# 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-события, но этот объект нигде не находится в library.swf
файле .swc, или я во всяком случае, уверен в этом.
Если это поможет, вот мой полный сценарий, и, возможно, кто-то может сказать мне, почему я поступаю неправильно:
У меня есть проект приложения Flash Builder 4 Flash, который зависит от:
- SDK v3.4.1
- FlexUnit 4, который у меня есть в виде пары файлов .swc и который я хотел бы представить в RSL:
- FlexUnit4_1.0.swc
- flexunitextended.swc
- Cairngorm 2.2.1, как SWC, который я бы хотел RSL
- mock-as3, который у меня есть только как источник, и который я хотел бы собрать, используя приведенные выше инструкции для создания полезной библиотеки
- hamcrest-as3, который у меня есть как в исходном, так и в двоичном виде, и который я хотел бы собрать, используя приведенные выше инструкции для создания полезной библиотеки
Когда я настраиваю библиотеки FlexUnit, Cairngorm, mock-as3 и hamcrest-as3 в качестве библиотек RSL, когда для местоположения .swf установлено что-то существующее, я получаю ошибку времени выполнения:
VerifyError: Error #1014: Class IMXMLObject could not be found.
Это может быть следствием порядка библиотек, дополнительного дерьма, встроенного в библиотеку mock-as3, или чего-то еще. SWF-файлы RSL оптимизируются, если это имеет значение, с помощью этой команды:
optimizer -keep-as3-metadata="Bindable,Managed,ChangeEvent,NonCommittingChangeEvent,Transient" \
-input library.swf \
-output $swf_file
В любом случае, это немного разбросано, но суть в следующем: как же я собираю сторонние файлы .swc, сторонние файлы .swf, сторонние исходные пакеты и мой проект в рабочее приложение?