5

Flex プロジェクトがあり、swf で RSL を使用してフラッシュ ビルダーを使用してアプリケーションのリリース バージョンをビルドすると、115k になります。ただし、ant を使用して同じアプリケーションをビルドすると、swf は 342k になります。RSL がない場合、swf は 520k です。

swf を FlashBuilder でビルドしたものと同じくらい小さくするにはどうすればよいですか?

これが私のantファイルです。rslsをコピーする別のタスクがあります。

<project name="EUI Client Application" default="compileClientApp">

<target name="compileClientApp" depends="compileClientBundles">
    <mxmlc 
        file="${CLIENT_PROJECT.dir}/src/${CLIENT_PROJECT.app}.mxml" 
        output="${DEPLOY.dir}/${CLIENT_PROJECT.app}.swf" 
        keep-generated-actionscript="false" 
        actionscript-file-encoding="UTF-8" 
        incremental="false"
        >

        <runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/framework.swc">
            <url rsl-url="flex4_4.0.0.7791.swf"/>
            <url rsl-url="framework_4.0.0.7791.swf"/>
            <url rsl-url="framework_textLayout_4.0.0.7791.swf"/>
            <url rsl-url="rpc_4.0.0.7791.swf"/>
            <url rsl-url="textLayout_451.swf"/>
        </runtime-shared-library-path>

        <source-path path-element="${CLIENT_PROJECT.dir}/src" />

        <compiler.library-path dir="${LIBS.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>
        <compiler.library-path dir="${DEPLOY_BIN.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>

    </mxmlc>
</target>

<target name="generateWrapper">
    <html-wrapper 
        title="${CLIENT_APP_TITLE}" 
        file="${CLIENT_PROJECT.app}.html" 
        height="100%" width="100%" 
        bgcolor="white" application="app" 
        swf="${CLIENT_PROJECT.app}" 
        version-major="10" version-minor="0" version-revision="0" 
        history="true" output="${DEPLOY.dir}" />
</target>

<target name="compileClientBundles">
    <compileBundle bundleName="Modules" source="${CORE_PROJECT.dir}/locale" />
</target>

4

4 に答える 4

2

返信ありがとうございますが、どちらでもありませんでした。

これはすでにflex-config.xmlファイルにあるため、runtime-shared-library-pathのものを削除するだけで済みました。また、 static-link-runtime-shared-libraries を false に変更する必要がありました (動的であるため)。

flex-config.xml ファイルをビルド ディレクトリにコピーし、それを使用して安全に変更できるようにしました。

これは Flex 4 での話です。

私のantファイルは次のようになります。

<project name="EUI Client Application" default="compileClientApp">

<target name="compileClientApp" depends="compileClientBundles">
    <mxmlc 
        file="${CLIENT_PROJECT.dir}/src/${CLIENT_PROJECT.app}.mxml" 
        output="${DEPLOY.dir}/${CLIENT_PROJECT.app}.swf" 
        keep-generated-actionscript="false" 
        actionscript-file-encoding="UTF-8" 
        optimize="true" incremental="false"
        link-report="${DEPLOY_BIN.dir}/app_link_report.xml"
        >

        <load-config filename="${basedir}/flex-config.xml" />

        <define name="CONFIG::stub" value="false" />
        <define name="CONFIG::release" value="true" />

        <source-path path-element="${CLIENT_PROJECT.dir}/src" />

        <compiler.library-path dir="${LIBS.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>
        <compiler.library-path dir="${DEPLOY_BIN.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>
    </mxmlc>
</target>

<target name="generateWrapper">
    <html-wrapper 
        title="${CLIENT_APP_TITLE}" 
        file="${CLIENT_PROJECT.app}.html" 
        height="100%" width="100%" 
        bgcolor="white" application="app" 
        swf="${CLIENT_PROJECT.app}" 
        version-major="10" version-minor="0" version-revision="0" 
        history="true" output="${DEPLOY.dir}" />
</target>

<target name="compileClientBundles">
    <compileBundle bundleName="Modules" source="${CORE_PROJECT.dir}/locale" />
</target>

于 2009-08-07T10:31:10.060 に答える
1

-external-library-pathオプションを使用して、外部ライブラリへのパスを指定する必要があるでしょう。

詳細については、ドキュメントを参照してください。

アプリケーションのコンパイル時に RSL を使用するには、次のアプリケーション コンパイラ オプションを使用します。

* runtime-shared-libraries Provides the run-time location of the shared library.
* external-library-path|externs|load-externs Provides the compile-time location of the libraries. The compiler requires this for dynamic linking.

アプリケーションが実行時に RSL としてロードする SWF ファイルの場所を指定するには、runtime-shared-libraries オプションを使用します。アプリケーションの配置場所を基準にして、SWF ファイルの場所を指定します。たとえば、library.swf ファイルを Web サーバーの web_root/libraries ディレクトリに格納し、アプリケーションを Web ルートに格納する場合は、libraries/library.swf を指定します。

このオプションで 1 つ以上のライブラリを指定できます。複数のライブラリを指定する場合は、各ライブラリをカンマで区切ります。

external-library-path オプションを使用して、アプリケーションがコンパイル時に参照するライブラリの SWC ファイルまたはオープン ディレクトリの場所を指定します。コンパイラは、このオプションで指定されたライブラリを使用して、コンパイル時のリンク チェックを提供します。externs オプションまたは load-externs オプションを使用して、個々のクラスまたはライブラリの内容を定義する XML ファイルを指定することもできます。

次のコマンド ラインの例では、2 つのライブラリを使用する MyApp アプリケーションをコンパイルします。

mxmlc -runtime-shared-libraries= ../libraries/CustomCellRenderer/library.swf, ../libraries/CustomDataGrid/library.swf -external-library-path=../libraries/CustomCellRenderer, ../libraries/CustomDataGrid MyApp .mxml

基本クラスは、それらを使用するクラスの前にロードする必要があるため、ライブラリの順序は重要です。

次の例に示すように、構成ファイルを使用することもできます。

../libraries/CustomCellRenderer ../libraries/CustomDataGrid ../libs/playerglobal.swc ../libraries/CustomCellRenderer/library.swf ../libraries/CustomDataGrid/library.swf

runtime-shared-libraries オプションは、アプリケーションがデプロイされたときの library.swf ファイルの相対的な場所です。external-library-path オプションは、コンパイル時の SWC ファイルまたは開いているディレクトリの場所です。このため、アプリケーションをコンパイルするときに、アプリケーションに対するライブラリの配置場所を知っておく必要があります。compc コマンドラインコンパイラを使用して SWC ファイルを作成するため、ライブラリを作成するときにデプロイメント構造を知る必要はありません。

于 2009-08-06T13:36:49.553 に答える
1

RSL を独自の引数に分けてみてください。ビルドでの使用方法は次のとおりです。

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/framework.swc">
    <url rsl-url="${rsl.url}/framework_3.2.0.3958.swz" />
    <url rsl-url="${rsl.url}/framework_3.2.0.3958.swf" />
</runtime-shared-library-path>

<runtime-shared-library-path path-element="${FLEX_HOME}/frameworks/libs/datavisualization.swc">
    <url rsl-url="${rsl.url}/datavisualization_3.2.0.3958.swz" />
    <url rsl-url="${rsl.url}/datavisualization_3.2.0.3958.swf" />
</runtime-shared-library-path>
于 2009-08-06T13:42:56.270 に答える
0

RSL を使用する場合は、use-network パラメーターを true に設定することを忘れないでください。そうしないと、コンパイルされた swf が別の場所で実行されたときにセキュリティ エラー (RSL を読み込めない) が発生します。

于 2010-07-07T06:14:20.087 に答える