0

汎用のライブラリ プロジェクト (ブラウザ、モバイル、およびデスクトップ プロファイルをサポート) と、ブラウザで実行され、このライブラリに依存する Flex プロジェクトがあります。Flash Builder 内からメイン アプリケーションのリリースをデバッグまたは作成すると、ブラウザで問題なく動作します。しかし、Ant タスクから SWF を作成すると、実行時に複数のエラーが発生します。

エラー:

VerifyError: Error #1014: Class flash.data::SQLConnection could not be found.

エラー:

ReferenceError: Error #1065: Variable _class_embed_css_Assets_swf_1175738391_mx_skins_cursor_BusyCursor_347371275 is not defined.

エラー:

ReferenceError: Error #1065: Variable _class_embed_css_Assets_swf_1175738391_cursorStretch_1614050290 is not defined.

エラー:

ReferenceError: Error #1065: Variable ImageButtonSkin__embed_mxml_Assets_swf___brokenImage_1468354307 is not defined.

これが私のANTタスクです:

<!-- Build and output the Application.swf -->
<target name="Compile Flex" >

    <mxmlc file="${PROJECT_MXML_APPLICATION}" output="${PROJECT_OUTPUT_SWF}">

        <include-libraries dir="${FCLIB_BIN}" append="true">
            <include name="FcLibrary.swc" />
        </include-libraries>

    </mxmlc>
</target>

AIR クラスが SWF にコンパイルされているようです。また、defaults.css が FcLibrary の defaults.css によって上書きされているようです。解決方法もわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1
  1. include-libraryは使用するタグが間違っています。それはまさに「ライブラリ全体を、コード内で参照されているかどうかに関係なく、そこにあるものは何でも結果の SWF に配置することを意味します。したがって、<library-path dir="/where/is/your/library/">子ノードを使用して に変更してみてください<include name="my.swc"/>

  2. そもそも、両方のランタイムで FcLibrary.swc をコンパイルするのは悪い考えでした。どちらか一方に個別のビルドを用意してください。また、そこに外部コードを埋め込んでいないことも確認してください。外部とは、たとえば、Flex フレームワーク コードを意味します。最終ビルドからそのコードを参照する必要があります。

  3. 以前に SDK をコンパイルしたことがあり、何を行っているかを理解している場合を除き、SDK ソースに対してコンパイルしないでください。これは時間的にも悪く、コンパイル プロセスが非常に複雑になります。たとえば、一部のソースは PBJ コンパイラの存在に依存していますが、他のソースは、アセットを含む特定のディレクトリ、またはライブラリ、ロケール、またはその他の設定を含む特定のパスを想定しているため、最初は間違いを犯す可能性があります。

  4. コメントのエラーは関係ありませんが、これが意味することは次のとおりです。 でコンパイルしたstatic-link-runtime-shared-libraries="false"、つまり、RSL があると思われる場所から RSL をロードするコードを生成するようにコンパイラに指示しました。これは通常、良いことです。 Flex フレームワークを使用するプロジェクトで作業する場合は、フレームワーク ライブラリの複数の読み込みを処理し、アプリケーションのキャッシュを節約できるためです。ただし、問題は、エラー メッセージに示されているディレクトリに対する Flash Player へのアクセスを許可していないことです。ネットワークにアクセスするために作成された SWF 内のローカル ファイルの読み込みは、デフォルトで制限されています。有効にするには、http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.htmlにアクセスしてください。ディレクトリを許可リストに追加します。通常、開発環境でそれが行われます (実際には、インターネットにアクセスせずにローカルで行うこともできます) が、最初の方法は単純です。

于 2012-11-27T17:20:34.533 に答える
0

SWC を含めるのではなく、ソース パスを参照することで問題を解決しました。

<target name="Compile Flex" >

    <mxmlc file="${PROJECT_MXML_APPLICATION}" output="${PROJECT_OUTPUT_SWF}">

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

    </mxmlc>
</target>

FCLIB_SRC は、「/Users/user/Documents/Workspace/FCLibrary/src」のようなものになります。

于 2012-11-26T22:24:12.790 に答える