Используя ant, кто-нибудь знает, как создать SWF, состоящий из SWC (которые вы создали), которые включают в себя пакеты ресурсов? - PullRequest
3 голосов
/ 12 февраля 2009

Я пытаюсь написать скрипт сборки ant для создания гибкого приложения моей группы, и я столкнулся с некоторыми препятствиями, которые, я надеюсь, кто-то на SO видел раньше.

У нас есть два проекта, которые мы встраиваем в SWC, и эти компоненты содержат пакеты ресурсов. Один SWC требует другого SWC. У нас есть один проект, который мы встраиваем в наше приложение (SWF), в котором используются оба SWC.

Когда я собираю SWC, у меня нет жалоб на то, что пакеты ресурсов не найдены, и когда я открываю SWC в winzip, я вижу пакеты (например, в / locale / EN_US)

Однако, когда я собираю SWF, я получаю жалобы на невозможность найти комплекты ресурсов в двух SWC, но не жалуюсь на то, что не могу найти какие-либо другие комплекты ресурсов (например, гибкие фреймворки). Вот такое сообщение я получаю от муравья:

[mxmlc] Error: Unable to resolve resource bundle "whatever" for locale "en_US".
[mxmlc]

Конечно, я не первый, кто попал в эту ловушку, так кто-нибудь знает, в чем здесь проблема? Я неправильно строю SWC или SWF?

Для справки, вот одна из моих задач по сборке с использованием compc (по какой-то причине я не могу отобразить открывающий целевой тег)

    <path id="facet.sourcePath">
        <pathelement location="${flex.facet.src}"/>
    </path>
    <property name="facet.sourcePath" refid="facet.sourcePath"/>
    <echo message="sourcePath is ${facet.sourcePath}"/>
    <fileset dir="${facet.sourcePath}" id="facet.sources">
        <include name="**/*.as"/>
    </fileset>
    <pathconvert property="facet.classes" pathsep=" " refid="facet.sources">
        <compositemapper>
            <chainedmapper>
                <globmapper from="*.as" to="*"/>
                <globmapper from="${facet.sourcePath}\*" to="*" handledirsep="true" />
            </chainedmapper>
            <chainedmapper>
                <globmapper from="*.mxml" to="*"/>      
                <globmapper from="${facet.sourcePath}\*" to="*" handledirsep="true" />
            </chainedmapper>
        </compositemapper>                     
    </pathconvert>           
    <echo message="classes: ${facet.classes}"/>
    <compc output="${flex.lib.output}/${facet.swc.name}" locale="EN_US" 
                include-classes="${facet.classes}" directory="false"
                target-player="10.0.0" 
                >
        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
        <include-resource-bundles bundle="foo"/>
        <include-resource-bundles bundle="bar"/>
        <include-resource-bundles bundle="whatever"/>
        <sp path-element="${flex.facet.dir}/locale/{locale}"/>
        <keep-as3-metadata name="Bindable"/>
        <keep-as3-metadata name="Remotable"/>
        <keep-as3-metadata name="Embed"/>
        <keep-as3-metadata name="Event"/>
        <keep-as3-metadata name="ResourceBundle"/>
        <source-path path-element="${flex.facet.src}"/>
    <compiler.library-path append="true" dir="${flex.framework.lib}">
      <include name="*.swc"/>
      <include name="../locale/${locale}"/>
    </compiler.library-path>
    <compiler.library-path append="true" dir="${flex.rsm.lib}">
      <include name="*.swc"/>
    </compiler.library-path>
  </compc>
</target>

и вот мое задание mxmlc:

<target name="flex.webapp.compile" description="compiles your flex app">
      <mxmlc file="${flex.webapp.src}\RSM.mxml"
           output="${flex.webapp.deploy}\ant_test\RSM.swf"
           use-network="true" 
           keep-generated-actionscript="true" 
           debug="true" 
           locale="en_US"
           incremental="true"
           actionscript-file-encoding="utf-8" 
           target-player="10.0.0" 
        >
        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
        <include-resource-bundles bundle="RSM"/>
        <source-path path-element="${FLEX_HOME}/frameworks"/>   
        <source-path path-element="${flex.webapp.src}" />         
        <source-path path-element="${flex.webapp.dir}/locale/en_US" />
        <source-path path-element="${flex.rsm.lib}" />
        <sp path-element="${flex.core.dir}/locale/{locale}"/>
        <sp path-element="${flex.facet.dir}/locale/{locale}" /> 
        <compiler.library-path append="true" dir="${flex.framework.lib}">
            <include name="*.swc"/>
            <!--include name="../locale/${locale}"/-->
        </compiler.library-path>
        <compiler.library-path append="true" dir="${flex.rsm.lib}">
            <include name="*.swc"/>
            <include name="../locale/${locale}" />          
            <!--include name="rsm_rb.swc" /-->
        </compiler.library-path>
    </mxmlc>
</target>

Ответы [ 2 ]

5 голосов
/ 17 февраля 2009

Arrgh!

После многих часов изучения этой проблемы я понял, что проблема все время смотрела мне в лицо.
Задача compc использует 'locale = "EN_US"', а задача mxmlc использует 'locale = "en_US"'.
Если кто-нибудь когда-нибудь напишет «какая самая глупая рабочая проблема, с которой вы когда-либо сталкивались?», Это мой ответ.

0 голосов
/ 25 февраля 2011

Кстати, это не должно быть так сложно (даже в консоли Linux!), Все, что вам нужно, это включить библиотеки ...

daemonna@NES-KOS-29:~/Desktop/FlexUnit4Turnkey_4.0_sdk_4.0.fxp_FILES/src$ mxmlc -library-path=../libs -locale=en_US App.mxml 
Loading configuration file /home/daemonna/Frameworks/flex_sdk_4.1.0.16076/frameworks/flex-config.xml
Error: Unable to resolve resource bundle "components" for locale "en_US".
....bla bla bla...
Error: Unable to resolve resource bundle "controls" for locale "en_US".

daemonna@NES-KOS-29:~/Desktop/FlexUnit4Turnkey_4.0_sdk_4.0.fxp_FILES/src$ mxmlc -library-path=../libs -library-**path=/home/daemonna/Frameworks/flex_sdk_4.1.0.16076/frameworks/locale/en_US/** -locale=en_US App.mxml 
Loading configuration file /home/daemonna/Frameworks/flex_sdk_4.1.0.16076/frameworks/flex-config.xml
/home/daemonna/Desktop/FlexUnit4Turnkey_4.0_sdk_4.0.fxp_FILES/src/App.swf (37964 bytes)
...