Как мне использовать compc для создания swc, который динамически связывает компоненты Flex?
В Flash Builder 4.6 при управлении проектом Flex в параметрах "Путь сборки" для проекта библиотеки Flex я могу выбирать между "внешней" и "объединенной в код" структурной связью с "внешним" по умолчанию.
Как я могу использовать внешнюю связь при вызове compc напрямую?
Похоже, что compc по умолчанию помещает компоненты Flex в library-path
раздел, а не в external-library-path
раздел (глядя на сгенерированный -dump-config
файл).
Кажется, что опция, доступная в Flash Builder, должна быть доступна через какую-то опцию в compc или через некоторую комбинацию аргументов. Я просмотрел документацию по параметрам compc и, к сожалению, оказался пустым. Любая помощь будет оценена.
1 ответ
Сначала взгляните на flex-config.xml
файл. Вы найдете это в [flex_sdk_path]/frameworks/flex-config.xml
, Теперь найдите узлы под названием runtime-shared-library-path
, Здесь вы найдете список всех библиотек, которые будут объединены при компиляции с помощью compc (узлы называются runtime-shared-library-path
потому что RSL является связью по умолчанию при использовании mxmlc). Это файлы, на которые вам нужно ссылаться извне.
У вас есть два варианта сделать это:
- Создайте свой собственный файл конфигурации, в который вы переводите все
runtime-shared-library-path
узлы дляexternal-library-path
узлы. Загрузите этот файл вместо файла по умолчанию, добавив-load-config=my-config.xml
к команде компилятора. - Сохраните файл конфигурации по умолчанию, но переопределите связь с параметрами команды. Просто добавьте каждый SWC в путь к внешней библиотеке:
-external-library-path+=libs/framework.swc
и так далее.
Когда вы компилируете приложение с помощью mxmlc, по умолчанию используется RSL. Вы также можете переопределить это и сделать его "объединенным". В этом случае вам сначала нужно сбросить путь RSL: -runtime-shared-library-path=
(верно, ничего после =
). Затем добавьте каждый SWC к -library-path: -library-path+=libs/framework.swc
В качестве альтернативы (предупреждение! Бесстыдная самореклама в пути), вы можете использовать инструмент сборки GradleFx. Если вы создаете файл сборки только с этой строкой:
type = 'swc'
он скомпилирует вашу библиотеку с интегрированной структурой. Вы можете переопределить это значение по умолчанию, если это необходимо:
type = 'swc'
frameworkLinkage = 'merged'