2010-11-01 3 views
5

Я пытаюсь построить свой проект flex 4 с помощью муравья. В Flash Builder 4 в свойствах проекта можно установить связь «Framework» с одним из «Объединенный в код», «Общая библиотека Runtime (RSL)» или «Использовать стандартную по умолчанию SDK-библиотеку». Как установить эквивалент в качестве параметров mxmlc в файле build.xml?mxmlc и фреймворк - как указать ссылку как rsl

Мой текущий build.xml выглядит следующим образом:

<target name="myapp"> 
    <mxmlc 
     file="${PROJECT_ROOT}/myapp.mxml" 
     output="${DEPLOY_DIR}/myapp.swf" 
     actionscript-file-encoding="UTF-8" 
     keep-generated-actionscript="false" 
     warnings="false" optimize="true" incremental="false" > 

     <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 

     <source-path path-element="${FLEX_FRAMEWORKS}"/> 

     <compiler.debug>true</compiler.debug> 

     <runtime-shared-library-path path-element="${FLEX_FRAMEWORKS}/libs/framework.swc"> 
      <url rsl-url="framework_4.0.0.14159.swz"/> 
      <url rsl-url="framework_4.0.0.14159.swf"/> 
     </runtime-shared-library-path>      

     <compiler.source-path path-element="src"/> 

     <!-- List of external libraries --> 
     <compiler.source-path path-element="${MY_LIB}/src" /> 

     <!-- List of SWC files or directories that contain SWC files. --> 
     <compiler.library-path dir="libs" append="true"> 
      <include name="*.swc" /> 
     </compiler.library-path> 

     <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swz"/> 
     <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swf"/> 

    </mxmlc> 
</target> 

Я предположил, что установка директивы выполнения-разделяемой библиотекой путь и копирования рамочное SWF, SWZ файлы в моей целевой папке будет делать работу, но это, похоже, не так.

Как я оцениваю, работает ли это следующим образом: я использую пользовательский предварительный загрузчик, и для его работы мне нужно иметь фреймворк в качестве RSL. С «объединенным в код» мой предварительный загрузчик застрял в определенной точке и не переходит в мое приложение swf. Это то же поведение, которое я вижу, когда использую приведенный выше файл build.xml, что заставляет меня думать, что SWF строится с привязкой фреймворка к коду (а не к RSL).

Связанный с этим вопрос, как определить, использует ли мой swf RSL или нет. Думаю, я мог бы посмотреть размер скомпилированного вывода. Но, похоже, должен быть способ узнать, использую ли я внешний файл фреймворка или как-то его связывает в SWF, без моего ведома.

ответ

6

Это немного сложно, потому что документация немного скудна на этом. Вероятно, вам нужно установить следующий параметр в командной строке или в файле конфигурации.

статических канальные выполнения-разделяемая библиотека = ложная

Документация от Adobe дает следующее несколько зашифрованного описание того, что делает этот вариант.

Определяет, следует ли компилировать файлы из библиотек статически или использовать RSL. Установите для этой опции значение true, чтобы игнорировать RSL, указанные в параметре «путь к общей библиотеке». Установите для этой опции значение false, чтобы использовать RSL. Значение по умолчанию верно.

Эта опция полезна, так что вы можете быстро переключаться между статически и динамически связанным приложением, не изменяя опцию runtime-shared-library-path, которая может быть многословной или редактировать файлы конфигурации.

Вот ссылка на документацию. "About the application compiler options"

Обратите внимание, что из документации значение по умолчанию равно true. ОДНАКО, если вы загружаете файл flex-config.xml (по умолчанию или обычай), вы также должны проверить, присутствует ли этот параметр в этом файле и что это такое. По моему опыту, значение по умолчанию для frameworks/flex-config.xml фактически неверно. Однако представляется, что в приведенном выше примере это можно установить другим способом.


(Мы используем другую систему сборки, чем ANT, так что я не знаком с синтаксисом build.xml вам потребуется.)

+1

Я на самом деле обманывал, чтобы решить эту проблему. Я закончил использование [sourcemate] (http://www.elementriver.com/sourcemate), чтобы экспортировать мой проект в качестве файла сборки муравьев, а затем смог получить все, что работает.Это было намного быстрее, чем отладка того, что adobe ожидало от меня вставить в мой файл! – cybertoast

+2

Джастин, я даю вам правильный ответ, потому что это похоже на правильное направление. Фактическая опция : . Благодарю. – cybertoast

+0

Это исправило мою проблему thx. В моем случае, используя ant для выполнения командной строки mxmlc, мне пришлось добавить Guian