Как Flash Builder определяет, какие библиотеки SDK включить? - PullRequest
8 голосов
/ 02 июля 2011

При создании нового проекта в Flash Builder, как он определяет, какие библиотеки SDK включить в путь сборки?

Если я создаю новый простой Actionscript проект и выбираю Flex 4.1 в пути сборки отображаются следующие библиотеки:

  • playerglobal
  • textLayout
  • osmf
  • flash-интеграции
  • flex
  • утилиты

Если я вернусь и переключусь на Flex 3.5 , он включает только:

  • playerglobal
  • flex
  • утилиты

Если я создаю новый проект Flex Web и выбираю Flex 3.5 , он включает:

  • playerglobal
  • Framework
  • Automation
  • Automation_agent
  • Automation_DMV
  • Automation_Flashflexkit
  • datavisualization
  • qtp
  • rpc
  • утилиты

Являются ли эти значения жестко заданными в Flash Builder илиэто как-то читает их из конфигурационных файлов SDK?Я просмотрел все XML-файлы конфигурации, такие как flex-config.xml и air-config.xml, и похоже, что эта информация нигде не существует.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 07 июля 2011

Да, он встроен в фреймворк SWC.Вы можете найти ссылки и места их ссылки в файле /frameworks/build.xml в вашей директории Framework.

Таким образом, вы можете отредактировать этот файл сборки, пересобрать swcs, а затем использовать их, и они 'сошлюсь так, как вам нравится.

Например, (из файла сборки Flex 4.5.1):

  <target name="authoringsupport" description="Builds authoringsupport.swc">
<compc static-link-runtime-shared-libraries="true" fork="true" output="${basedir}/libs/authoringsupport.swc" include-classes="AuthoringSupportClasses" locale="" accessible="true">
  <source-path path-element="${authoringsupport.dir}/src"/>
  <library-path dir="${authoringsupport.dir}/libs"><include name="FlexContentHolderThumbnail.swc"/></library-path>
  <external-library-path dir="${basedir}/libs">
      <include name="player/${playerglobal.version}/playerglobal.swc"/>
      <include name="framework.swc"/><include name="mx/mx.swc"/>
      <include name="flash-integration.swc"/>
      <include name="textLayout.swc"/>
  </external-library-path>
  <jvmarg line="${compc.jvm.args}"/>
</compc>

Так что это технически не жестко закодировано во Flash Builder, нов SWC для этого SDK.(но вы можете изменить это, как отмечено выше).: D

4 голосов
/ 13 июля 2011

После многих проб и ошибок и некоторой проверки с помощью декомпилятора у меня есть ответ:

  1. Flash Builder загружает файл flex-config.xml или air-config.xml (в зависимости от типа проекта) из каталога каркасов sdk.
  2. Он проходит через каждую запись, указанную в library-path, а library-external-path добавляет ее в путь к классам, если это SWC. Если запись является каталогом, она сканирует этот каталог на наличие SWC и включает их.
  3. Каждый тип проекта имеет жестко запрограммированный список исключений, который сообщает Flash Builder, какие SWC-файлы следует исключить из пути к классам. Для простого проекта ActionScript в этом списке 17 пунктов. Для проекта Flex Web список состоит только из flex.swc. Этот список исключений записывается в файл .actionScriptProperties.
  4. Все оставшиеся (не исключенные) SWC автоматически добавляются в путь к классам. В файле .actionScriptProperties запись не требуется. (То есть вы можете выбросить любой файл с расширением .swc в каталог frameworks / libs, и Flash Builder включит его.)
2 голосов
/ 07 июля 2011

Я создал проект Flex 4.1 и проверил flex-config SDK Flex 4.1 в следующем месте.Я думаю, что именно отсюда берутся включенные SWC-файлы в пути сборки - они соответствуют моему проекту:

C: \ Program Files \ Adobe \ Adobe Flash Builder 4 \ sdks \ 4.1.0 \ frameworks \flex-config.xml

enter image description here

...