Как заставить Flex Builder 3 генерировать две сборки: одну "-use-network = true", другую "-use-network = false"? - PullRequest
3 голосов
/ 31 августа 2009

Я создаю приложение Flex, которое нужно будет запускать в двух различных сценариях развертывания:

Во-первых, приложение будет размещено в Интернете. SWF-файл загружает некоторые внешние ресурсы (изображения, текст), поэтому он требует доступа к сети, который является стандартным флагом сборки Flex Builder 3 "-use-network=true". Мне не нужно делать ничего особенного; это просто работает.

Во-вторых, приложение будет записано на компакт-диск с включенным автозапуском для запуска index.html, в котором размещен SWF. SWF все еще должен иметь возможность загружать те же внешние ресурсы, которые находятся на компакт-диске в подпапке. Поскольку эти файлы находятся на компакт-диске, они считаются локальными, поэтому для обеспечения безопасности Flash требуется, чтобы SWF-файл создавался с использованием флага "-use-network=false". Я добавляю это в текстовое поле «Дополнительные аргументы компилятора» в разделе «Компилятор Flex» в диалоговом окне «Свойства» проекта Flex.

Это все работает должным образом, но утомительно необходимо вручную изменить параметры проекта Flex Builder, чтобы добавить или удалить этот флаг в зависимости от ситуации.

В идеале я хотел бы просто собрать проект один раз и иметь несколько выходных папок : одну для сценария развертывания network , а другую для локальный сценарий развертывания.

Какой лучший способ сделать это? Перемещение к Муравью строит путь, или есть более простой путь? Если конфигурация сборки Ant является правильным способом, есть ли у вас пример для совместного использования таких множественных конфигураций сборки?

Спасибо за вашу помощь!

1 Ответ

7 голосов
/ 31 августа 2009

Как только вы разберетесь со сборкой Ant, это сделает вашу жизнь намного проще. Сборка файла с несколькими сборками ничем не отличается от одного файла сборки, вы просто добавите в свою сборку дополнительную задачу с соответствующими настройками (вы также можете использовать цикл в ant, но это добавляет сложности)

Итак, расширяя пример Flex Ant Tasks из документов , примерно так должно работать (не проверено):

<?xml version="1.0" encoding="utf-8"?>
<!-- myMXMLCBuild.xml -->
<project name="My App Builder" basedir="." default="main">
    <taskdef resource="flexTasks.tasks" classpath="${basedir}/flexTasks/lib/flexTasks.jar" />
    <property name="FLEX_HOME" value="C:/flex/sdk"/>
    <property name="APP_ROOT" value="apps"/>
    <property name="DEPLOY_DIR" value="c:/jrun4/servers/default/default-war"/>
    <target name="main" depends="clean, compile1, compile2">
    </target>
    <target name="compile1">
        <mxmlc 
            file="${APP_ROOT}/Main.mxml" 
            output="${DEPLOY_DIR}/Main.swf"
            actionscript-file-encoding="UTF-8"
            keep-generated-actionscript="true"
            incremental="true"
            use-network="true"
        >
            <!-- Get default compiler options. -->
            <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>

            <!-- List of path elements that form the roots of ActionScript
            class hierarchies. -->
            <source-path path-element="${FLEX_HOME}/frameworks"/>

            <!-- List of SWC files or directories that contain SWC files. -->
            <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                <include name="libs" />
                <include name="../bundles/{locale}" />
            </compiler.library-path>

            <!-- Set size of output SWF file. -->
            <default-size width="500" height="600" />
        </mxmlc>
    </target>
    <target name="compile2">
        <mxmlc 
            file="${APP_ROOT}/Main.mxml" 
            output="${CD_DEPLOY_DIR}/Main.swf"
            actionscript-file-encoding="UTF-8"
            keep-generated-actionscript="true"
            incremental="true"
            use-network="false"
        >
            <!-- Get default compiler options. -->
            <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>

            <!-- List of path elements that form the roots of ActionScript
            class hierarchies. -->
            <source-path path-element="${FLEX_HOME}/frameworks"/>

            <!-- List of SWC files or directories that contain SWC files. -->
            <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                <include name="libs" />
                <include name="../bundles/{locale}" />
            </compiler.library-path>

            <!-- Set size of output SWF file. -->
            <default-size width="500" height="600" />
        </mxmlc>
    </target>
    <target name="clean">
        <delete dir="${APP_ROOT}/generated"/>
        <delete>
            <fileset dir="${DEPLOY_DIR}" includes="Main.swf"/>
        </delete>
    </target>
</project>

В качестве примечания: если вы собираетесь запускать сборку Ant в eclipse / Flash Builder, вы также можете увеличить объем памяти .

...