iPhone アプリケーションのデバッグ

開発コンピューターの ADL でアプリケーションを実行しながら、アプリケーションをデバッグできます。iPhone 上でアプリケーションをデバッグすることもできます。

iPhone 上でサポートされない AIR 機能の中には、(開発コンピューター上で)ADL を使用してアプリケーションをテストする際に利用できるものがあります。デスクトップ上でコンテンツをテストする際にこれらの違いについて気を付けてください。詳しくは、 モバイルデバイスでサポートされていない ActionScript 3.0 API を参照してください。

開発コンピューターでのアプリケーションのデバッグ

開発コンピューターで Flash Professional CS5 を使用してアプリケーションをデバッグするには:

デバッグ/ムービーをデバッグ/AIR Debug Launcher(モバイル)を使用を選択します。

コマンドラインから ADL を呼び出してアプリケーションをデバッグすることもできます。シンタックスは次の通りです。

adl –profile mobileDevice appDescriptorFile

appDescriptorFile をアプリケーション記述ファイルへのパスに置き換えます。

-profile mobileDevice オプションを必ず指定してください。

iPhone でのアプリケーションのデバッグ

iPhone でアプリケーションをデバッグするには:

  1. デバッグサポートを使用してアプリケーションをコンパイルします。

  2. アプリケーションを iPhone にインストールします。

  3. iPhone で Wi-Fi を有効にし、開発コンピューターと同じネットワークに接続します。

  4. 開発コンピューターでデバッグセッションを開始します。Flash Professional CS5 で、デバッグ/リモートデバッグセッションを開始/ActionScript 3.0 を選択します。

  5. iPhone でアプリケーションを実行します。

    アプリケーションのデバッグ版で、開発コンピューターの IP アドレスを入力するように求められます。IP アドレスを入力して、「OK」ボタンをタップします。開発コンピューターの IP アドレスを入手する手順を次に示します。

    • Mac OS で、Apple メニューのシステム環境設定を選択します。システム環境設定ウィンドウで、ネットワークアイコンをクリックします。ネットワーク環境設定ウィンドウに IP アドレスが表示されます。

    • Windows で、コマンドラインセッションを開始し、 ipconfig コマンドを実行します。

デバッグセッションで、アプリケーションからの trace() 出力が表示されます。

iPhone にインストールされているアプリケーションをデバッグする場合、Flash Professional CS5 では、すべてのデバッグ機能(ブレークポイントの制御、コードのステップ実行、変数の監視など)をサポートします。

GPU レンダリング診断を使用したデバッグ

GPU レンダリング診断機能を使用すると、アプリケーションによるハードウェアアクセラレーション(GPU レンダリングモードを使用するアプリケーション向け)の使用状況を確認することができます。この機能を使用するには、コマンドラインで PFI ツールを使用してアプリケーションをコンパイルします。この際に、次のように -renderingdiagnostics オプションを含めます。

pfi -package -renderingdiagnostics -target ipa-debug -connect ...

-renderingdiagnostics フラグは -package フラグの次に指定する必要があります。

GPU レンダリング診断機能は、すべての表示オブジェクトに対して次の色の長方形を表示します。

  • 青 - 表示オブジェクトはビットマップではないか、ビットマップとしてキャッシュされておらず、レンダリングされます。

    変更中ではない表示オブジェクトで繰り返し青が表示される場合、移動中の表示オブジェクトと交差している可能性があります。例えば、表示オブジェクトが、移動中の表示オブジェクトの背景である可能性があります。この表示オブジェクトをビットマップとしてキャッシュすることを検討してください。

    キャッシュされているはずのオブジェクトで青が表示される場合は、GPU が適用できない効果をそのオブジェクトが使用している可能性があります。このような効果には、特定のブレンドモード、色変換、 scrollRect プロパティおよびマスクがあります。

    また、GPU にアップロードされる表示オブジェクトがメモリの制限容量を超える場合にも、アプリケーションは青を表示します。

    アプリケーションは青の各長方形についてログメッセージを出力します。アプリケーションはこれらのメッセージを、他の trace() ッセージやデバッグ出力メッセージと共に出力します。

  • 緑 - 表示オブジェクトはビットマップであるか、ビットマップとしてキャッシュされていて、GPU へ初回のアップロードが実行されます。

    表示オブジェクトに対して緑が繰り返し表示される場合、アプリケーション内のコードはその表示オブジェクトを再作成しています。例えば、タイムラインが表示オブジェクトを作成するフレームに戻る場合に、このような状況が発生します。同じオブジェクトの再作成を防止するために、コンテンツを修正することを検討してください。

  • 赤 - 表示オブジェクトはビットマップであるか、ビットマップとしてキャッシュされていて、GPU に再アップロードされます。

    赤は、アプリケーションがビットマップ表現を再レンダリングする必要があるような状態で表示オブジェクトが変更されたタイミングで表示されます。例えば、 cacheAsBitmapMatrix プロパティが設定されていない 2D オブジェクトは、拡大 / 縮小または回転時に再レンダリングされます。再レンダリングは、子表示オブジェクトが移動したり変更されたりした場合にも発生します。

色の付いた各長方形は、4 つの画面再描画サイクルの間に色付けの理由が発生しない限り、このサイクルの実行後に消えます。ただし、画面上で変更がない場合、この診断による色は変化しません。

例えば、ビットマップとしてキャッシュされないベクター背景の手前のビットマップ表示オブジェクト(バナナ)を考察します。バナナが最初にレンダリングされると、緑になります。背景が最初にレンダリングされると、青になります。

バナナが移動すると、CPU が背景を再レンダリングする必要があるため、背景上に青の陰影が表示されます。

背景上の青の陰影は、GPU に送る必要のある、再描画された領域を表します。

ただし、背景がビットマップとしてキャッシュされている場合、バナナが移動しても、レンダリング診断機能は色を表示しません。

診断機能が色を表示しないのは、GPU が背景ビットマップを保持しているからです。GPU は CPU を使用せずに、バナナと背景を合成することができます。

バナナが cacheAsBitmapMatrix プロパティを設定していない 2D 表示オブジェクトであるとします。この表示オブジェクトが回転(または拡大 / 縮小)すると、レンダリング診断機能は赤を表示します。これは、アプリケーションが新しいバージョンの表示オブジェクトを GPU にアップロードする必要があることを示しています。