FlashBuilder4.5を使用したかなり大きなFlex/FlashBuilderプロジェクトがあります。元のプロジェクトのコンポーネントの一部を使用する別のプロジェクトを作成したいと思います。新しいプロジェクトでは、リソースを元のプロジェクトにリンクします。これは正常に機能しますが、新しいプロジェクトのファイルサイズはかなり大きくなります。コンポーネントとアセットのごく一部しか使用していませんが、元のプロジェクトのファイルサイズに近いです。新しいプロジェクトのファイルサイズを最小化するためにこれを行うためのより良い方法はありますか?
2 に答える
すべての一般的な再利用可能なコードを1つ以上のライブラリプロジェクトに分離する必要があります。FlashBuilderでは、プロジェクトの性質をアプリケーションからライブラリに変換できないため、空のライブラリプロジェクトを作成し、両方のプロジェクトで使用できるようにするコードをコピーする必要があります。
最も単純な形式では、プロジェクト構造は次のようになります。
Flex app project A (swf) \
Flex library project (swc)
Flex app project B (swf) /
そのライブラリを使用するには、[プロパティ]> [Flexビルドパス]に移動し、[プロジェクトの追加...]ボタンをクリックして、作成したライブラリプロジェクトを選択します。
そのプロジェクトにリンクしたので、参照されるコンポーネントをリンクする方法を選択します。(「リンクタイプ」をダブルクリックして編集します。)
プロジェクトをリンクする方法で、FBは明らかにプロジェクトAからプロジェクトBにすべてのクラスをコンパイルしました。それは明らかにあなたが望むものではありません。これらは(アプリケーションプロジェクトの)リンケージオプションです。
- コードにマージ:実際に参照されているコードのみがメインアプリケーションにコンパイルされます。したがって、libプロジェクトのClassAが参照されず、ClassBが参照される場合、ClassBのみがメインアプリケーションにコンパイルされます。
- RSL:メインアプリケーションには何もコンパイルされませんが、ライブラリは実行時にロードされます。完全に、どのクラスが必要になるかわからないので。ただし、このライブラリはクライアントにキャッシュされるため、ロード時間は1回だけ長くなります。メインアプリケーションは、「マージされた」リンケージよりも小さくなります。
どのオプションを選択するかは状況によって異なり、完全にあなた次第です。自分で違いを確認することをお勧めします(ローカルサーバーでは読み込み時間の感覚がわからないため、実際のサーバーを使用してください)。
また、外部リンケージオプションがあります。これは、クラスをメインアプリにコンパイルせず、実行時にそれらをロードしません。これは主に、同じメインアプリケーションでRSLとして使用されるライブラリ間の依存関係に使用されます。
-link-report
フラグを使用してコンパイルするとどうなるかを必ず確認する必要があります。これにより、依存関係マップが印刷され、なぜこれほど多くのリソースを使用しているのかがわかります。
方法がわからない場合:プロジェクト設定にコンパイラ引数を追加できる場所があります-通常、FBはそこに-locale = en_USを追加します(実際にはおそらく必要ありません)、-link-report=を追加しますreport.xmlとコンパイル。プロジェクトのルートディレクトリにxmlファイルが生成されます。それを開いて調べます。
http://www.kahunaburger.com/2008/03/08/air-link-report-visualizer/私はこのプログラムを使用しませんでしたが、依存関係を視覚的に表現できるようです。これも役立つ可能性があります。