Как мне использовать 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). Это файлы, на которые вам нужно ссылаться извне.

У вас есть два варианта сделать это:

  1. Создайте свой собственный файл конфигурации, в который вы переводите все runtime-shared-library-path узлы для external-library-path узлы. Загрузите этот файл вместо файла по умолчанию, добавив -load-config=my-config.xml к команде компилятора.
  2. Сохраните файл конфигурации по умолчанию, но переопределите связь с параметрами команды. Просто добавьте каждый 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'
Другие вопросы по тегам