mxmlc и framework linkage - как указать связь как rsl

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

Мой текущий 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>

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

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

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

1 ответ

Решение

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

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

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

Определяет, компилировать ли против библиотек статически или использовать RSL. Установите для этого параметра значение true, чтобы игнорировать RSL, указанные в параметре runtime-shared-library-path. Установите для этой опции значение false, чтобы использовать RSL. Значение по умолчанию верно.

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

Вот ссылка на документацию. "О настройках компилятора приложения"

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


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

Другие вопросы по тегам