ant を使用して flex 4 プロジェクトをビルドしようとしています。Flash Builder 4 では、プロジェクトのプロパティで、「フレームワーク リンケージ」を「コードに結合」、「ランタイム共有ライブラリ (RSL)」、または「SDK デフォルトを使用 (ランタイム共有ライブラリ)」のいずれかに設定できます。build.xml で mxmlc オプションと同等のものを設定するにはどうすればよいですか?
現在の 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 を使用したときに見られるのと同じ動作であり、(RSL リンクではなく) フレームワーク リンクがコードにマージされて SWF がビルドされていると思われます。
これに関連する質問は、swf が RSL を使用しているかどうかを判断する方法です。コンパイルされた出力のサイズを見ることができると思います。しかし、外部フレームワーク ファイルを使用しているか、SWF に何らかの方法でバンドルされているかを、私の知らないうちに判断する方法があるはずです。