mxmlc и framework linkage - как указать связь как rsl - PullRequest
5 голосов
/ 01 ноября 2010

Я пытаюсь построить свой проект 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>

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

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

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

1 Ответ

6 голосов
/ 22 февраля 2011

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

static-link-runtime-shared-library = false

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

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

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

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

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


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

...