モジュールをコンパイルする方法は、Flex アプリケーションをコンパイルする方法と似ています。コマンドラインで、mxmlc コマンドラインコンパイラを使用します。次に例を示します。
mxmlc MyModule.mxml
モジュールをコンパイルした結果として、アプリケーションにロードする SWF ファイルが生成されます。モジュールベースの SWF ファイルをスタンドアローンアプリケーションとして実行することや、ブラウザウィンドウにロードすることはできません。1 つのモジュールとしてアプリケーションにロードする必要があります。Adobe® Flash® Player や Adobe® AIR™Aまたはブラウザからモジュールを直接要求しないでください。
モジュールをコンパイルするときには、モジュールとそれを使用するアプリケーションの両方にある冗長な部分を削除することをお勧めします。このためには、アプリケーションのリンクレポートを作成し、レポートに記載されているモジュールのアセットをすべて外部化します。Flex Builder は、この動作を自動的に実行できます。詳細については、モジュールサイズの削減を参照してください。
モジュールサイズは、モジュールで使用されるコンポーネントとクラスによって異なります。デフォルトでは、モジュールにはモジュールのコンポーネントが依存しているすべてのフレームワークコードが含まれます。したがって、アプリケーションのクラスと重複するクラスがリンクされるので、モジュールのサイズが大きくなる場合があります。
モジュールのサイズを削減するには、アプリケーションに含まれているクラスを外部化するようにモジュールに指示することで、モジュールを最適化します。これには、カスタムクラスとフレームワーククラスが含まれます。この結果、モジュールには必要とするクラスのみ含まれ、フレームワークコードと他の依存関係はアプリケーションに含まれます。
コマンドラインコンパイラを使用してフレームワーククラスを外部化するには、モジュールをロードするアプリケーションからリンカーレポートを生成します。このレポートを、モジュールの load-externs コンパイラオプションへの入力として使用します。コンパイラにより、すべてのクラスは、アプリケーションが定義を含むモジュールから外部化されます。この処理は、Flex Builder でメインアプリケーションとは独立したプロジェクトにモジュールがある場合にも必要です。
mxmlc -link-report=report.xml MyApplication.mxml
リンカーレポートのデフォルトの出力場所はコンパイラと同じディレクトリです。この場合は、bin ディレクトリに出力されます。
mxmlc -load-externs=report.xml MyModule.mxml
モジュールを変更しても、そのモジュールが同じプロジェクトにある場合は、そのモジュールを使用するアプリケーションを再コンパイルする必要はありません。これは、アプリケーションは実行時にモジュールをロードしますが、コンパイル時にはモジュールをチェックしないからです。同様に、アプリケーションを変更しても、モジュールを再コンパイルする必要はありません。アプリケーションでコンパイル時にモジュールがチェックされないのと同様に、モジュールでは実行時までアプリケーションがチェックされません。
モジュールが、そのモジュールをロードするアプリケーションとは独立したプロジェクトにある場合は、モジュールを単独で再コンパイルする必要があります。
ただし、リンカーレポートまたは共通コードに影響する可能性のある変更を加えた場合は、アプリケーションとモジュールの両方を再コンパイルする必要があります。
モジュールを使用するアプリケーションをデバッグするには、モジュールをコンパイルするときに、モジュールに対して debug コンパイラオプションを true に設定します。これを行わないと、モジュールに対するブレークポイントの設定や、その他のデバッグ情報のモジュールからの収集を行えません。Flex Builder では、デバッグはデフォルトで有効になっています。コマンドラインでは、デバッグはデフォルトで無効になっています。また、デバッグするモジュールをロードするアプリケーションをコンパイルするとき、debug オプションを true に設定する必要があります。
複数のモジュールを使用するときに発生する一般的な問題は、他のモジュールが使用する必要があるクラス定義をモジュールが所有している場合があることです。クラス定義は子アプリケーションドメインにあるので、最初にクラス定義をロードしたモジュールはそのクラスの定義を使用できますが、他のモジュールがそのクラスを使用しようとするとエラーが発生します。この解決方法は、クラス定義をメインアプリケーションドメインに格上げして、すべてのモジュールでそのクラスを使用できるようにすることです。詳細については、モジュールのドメインを参照してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート