ヘッダーをスキップ

Oracle® Mobile Application Framework Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発 2.1.1.0.0 E64867-01 |
| 目次

前 | 次 |

# 30 MAFアプリケーションのテストおよびデバッグ

この章では、iOSとAndroidの両方のプラットフォーム用に開発されたMAFアプリケーションのテストとデバッグに関する情報を行う方法について説明します。

この章の内容は次のとおりです。

- 第30.1項「MAFアプリケーションのテストおよびデバッグの概要」

- 第30.2項「MAFアプリケーションのテスト」

- 第30.3項「MAFアプリケーションのデバッグ」

- 第30.4項「ロギングの使用方法と構成」

## 30.1 MAFアプリケーションのテストおよびデバッグの概要

MAFアプリケーションのテストとデバッグを開始する前に、そのアプリケーションを次のいずれかにデプロイする必要があります。

- iOSデバイス

- iOSデバイス・シミュレータ

- Androidデバイス

- Androidデバイス・エミュレータ

MAFアプリケーションは、デプロイしないと実行できません。詳細は、第27章「MAFアプリケーションのデプロイ」を参照してください。

MAFアプリケーションのテストとデバッグを行うには、通常、次の手順を実行します。

1. スプラッシュ画面、アプリケーション機能のナビゲーション、認証、プリファレンスなど、アプリケーションのインフラストラクチャをテストして、うたわれているすべてのアプリケーション機能が使用可能であることを確認します。

2. アプリケーションにMAF AMXコンテンツが含まれている場合は、このアプリケーション機能のロジック、ページ・フロー、データ・コントロールおよびUIコンポーネントをテストします。

3. 必要に応じてアプリケーションに変更を加えます。

4. モバイル・デバイスを再接続するか、シミュレータを再起動し、さらなるテストおよびデバッグのためにアプリケーションをデプロイして実行します。

詳細は、次を参照してください。

- 第30.3項「MAFアプリケーションのデバッグ」

- 第30.2項「MAFアプリケーションのテスト」

## 30.2 MAFアプリケーションのテスト

MAFアプリケーションをテストするには、次の2つの方法があります。

1. モバイル・デバイス上でのテスト: この方法では常に、最も正確な動作が提供されます。アプリケーションのパフォーマンスを測定する場合も、この方法をとる必要があります。ただし、テスト実行者がテスト対象のすべてのデバイスを入手できるとはかぎらないため、デバイスのテストは確実なものとは言えません。

2. モバイル・デバイス・エミュレータまたはシミュレータ上でのテスト: この方法は通常、よりよいパフォーマンスとより高速なデプロイを提供し、便利です。ただし、デバイスのエミュレータまたはシミュレータは、対応する物理デバイスに近似したものであるとは言え、動作の相違やエミュレートできる機能の制限が存在する場合があります。

通常、両方の方法を組み合せて使用することで、最良の結果が得られます。

### 30.2.1 iOSデバイス上でアクセシビリティのテストを実行する方法

iOSデバイス用に開発されたMAFアプリケーションのアクセシビリティをテストするには、次の方法を組み合せて使用してください。

- iOSデバイス・シミュレータ上でアクセシビリティ・インスペクタを使用してテストする。

  詳細は、iOS Developer Library にある`『Accessibility Programming Guide for iOS』の「Testing the Accessibility of Your iPhone Application」`を参照してください。

- iOSデバイス上でVoiceOverを使用してテストする。

  詳細は、iOS Developer Library にある`『Accessibility Programming Guide for iOS』の「Using VoiceOver to Test Your Application」`を参照してください。

## 30.3 MAFアプリケーションのデバッグ

JDeveloperには、Javaプログラムをデバッグ・モードで実行し、標準のブレークポイントを使用してアプリケーションの実行をモニターおよび制御することを可能にするデバッグ・メカニズムが備わっています。詳細は、『Oracle Fusion Middleware Oracle JDeveloperユーザーズ・ガイド』のアプリケーションのデバッグに関する項を参照してください。

MAFアプリケーションはJDeveloper内部で実行できないため、デバッグの方法が異なります。JDeveloperデバッガを使用して、モバイル・デバイスまたはシミュレータ上のJava仮想マシン・インスタンスに接続し、デプロイ済のMAFアプリケーションのJavaの部分を制御します。

MAFは、デバッグ用にプロジェクト・プロパティを自動的に構成します(第30.3.1項「デバッグ構成に関する必知事項」を参照)。JDeveloperを使用してMAFアプリケーション内のJavaコードをデバッグするために実行する必要のある手順は、次のとおりです。

アプリケーションをテストまたはデバッグするには:

1. JDeveloperのメイン・メニューから、「実行」→「アクティブな実行構成を選択」をクリックして、アクティブな実行構成を選択します。

2. 「アプリケーション」ウィンドウで、テストするファイルを右クリックし、「実行」を選択します。

   あるいは、デバッグを有効にした状態でアプリケーションを実行する場合は、「デバッグ」を選択します。

   ヒント: 「ソース」ビューでMAFアプリケーションのファイルを開き、右クリックして、「実行」または「デバッグ」を選択します。

   注意: 事前定義済の実行構成セットを持たない既存のアプリケーションを使用する場合は、新しい実行構成を作成します(第30.3.1項「デバッグ構成に関する必知事項」を参照)。

詳細は、次を参照してください:

- 第27.1.1.2項「JVMライブラリのデプロイメント」

- 第30.3.1項「デバッグ構成に関する必知事項」

### 30.3.1 デバッグ構成に関する必知事項

新しいMAFアプリケーションを作成する場合、作成ウィザードでは、デバッグ用にアプリケーション・プロパティが自動的に構成されます。これには、iOSシミュレータまたはAndroidエミュレータやデバイスでMAFアプリケーションの実行またはデバッグを行うために使用できるデフォルトの実行構成の作成が含まれます。これらの実行構成では、JDeveloperの「実行」または「デバッグ」ボタンをクリックすると、MAFアプリケーションの構築、デプロイ、実行またはデバッグができます。JDeveloperの「実行」または「デバッグ」ボタンをクリックし、MAF実行構成を選択すると、実行構成に関連付けられたデプロイメント・プロファイルが実行され、アプリケーションが構築されてターゲット・デバイスにデプロイされます。アプリケーションはデプロイされると、自動的に起動します。「デバッグ」ボタンを選択すると、アプリケーションがデバッガとともに起動します。

新しい構成を作成するか、既存の構成を変更するには、次のように「実行構成の編集」ダイアログに入力します(図30-1を参照)。

1. JDeveloperのメイン・メニューで、「アプリケーション」→「プロジェクト・プロパティ」をクリックして、「プロジェクト・プロパティ」ダイアログを開きます。

2. 「プロジェクト・プロパティ」ダイアログで、左側のツリーから「実行/デバッグ」を選択します。

   あるいは、「実行」→「アクティブな実行構成を選択」→「実行構成の管理」を選択します。

3. 新しい実行構成を作成するか、既存の実行構成を変更します。

   共有設定を使用する場合、「共有設定の編集」をクリックして、新しいMAF実行構成の作成または編集ができるダイアログを開きます。プロジェクト設定を使用する場合は、「新規作成」または「編集」をクリックします。共有設定の場合、実行構成はすべてのプロジェクトで共有されます。「共有設定の使用」はデフォルトのオプションであり、この場合、プロジェクトの追加時に存在するMAF実行構成を使用できます。

4. 次のように、「実行構成の編集」ダイアログに入力します。

   - 左側のツリーから「モバイル実行構成」を選択します。

   - ターゲット・プラットフォームを選択します。

   - デプロイメント・プロファイルを選択します。

   - 最大5桁の長さでポート番号を入力します。この数字は、当初は`maf.properties`ファイルに含まれている`java.debug.port property`の値によってシードされ、ヒント・テキストとして表示されます。ポートに値が指定されていない場合は、シードされた値が使用されます。

   - iOSの場合、次のオプションを設定します。

     - 「アプリケーション引数」: アプリケーションの実行時の動作をカスタマイズするために、起動時のMAFアプリケーションに渡すことができる引数を入力します。たとえば、`-consoleRedirect=/``<path>``/``<to>`/`log.txt`では、指定されたファイルにログが出力されます。ログ・ファイルを取得するには、パスは絶対パスである必要があります。場所は、現在のユーザーにとって書込み可能である必要があります。

     - 「シミュレータ」: アプリケーションをデプロイする先のシミュレータを選択します。オプションは、インストールされているiOS SDKのバージョンによって異なります。

     - 「iOSバージョン」: シミュレータが使用するiOSのバージョンを選択します。ドロップダウン・メニューには、選択したデバイスがサポートしているiOSのバージョンが表示されます。

   - Androidの場合、次のオプションを設定します。

     - 「ターゲット」: デプロイメント・ターゲット(「エミュレータ」または「デバイス」)を選択します。

     - 「最大試行回数」: 許可する接続試行の最大回数を選択します。

     - 「間隔」(秒): 接続試行間の間隔の長さを秒単位で選択します。

       ヒント: Androidデバイスまたはエミュレータの動作が遅いか、またはタイムアウトになる場合、「最大試行回数」または「間隔」を増やして、Javaが初期化し、Androidスターターを強制的に長く待機させるために十分な時間を確保するか、終了する前に試行を増やしてください。

   図30-1 「モバイル実行構成」ダイアログ

### 30.3.2 iOSプラットフォームでのデバッグ方法

iOSプラットフォームでJDeveloperを使用してMAFアプリケーションをデバッグするには、第30.3項「MAFアプリケーションのデバッグ」で説明されているデバッグ手順に従います。

iOSデバイスまたはシミュレータの構成方法、およびデバッグのためのMAFアプリケーションのデプロイ方法については、次を参照してください。

- 第27.4.1項「iOSシミュレータへのiOSアプリケーションのデプロイ方法」

- 第27.4.2項「iOSデバイスへのアプリケーションのデプロイ方法」

- 第27.4.4.2項「テストおよびデバッグ用のAppleデバイスの登録」

### 30.3.3 Androidプラットフォームでのデバッグ方法

AndroidプラットフォームでJDeveloperを使用してMAFアプリケーションをデバッグするには、第30.3項「MAFアプリケーションのデバッグ」で説明されているデバッグ手順に従います。

Androidデバイスまたはエミュレータの構成方法、およびデバッグのためのMAFアプリケーションのデプロイ方法については、第27.3.1項「AndroidエミューレータへのAndroidアプリケーションのデプロイ方法」を参照してください。

Androidデバイスまたはエミュレータで実行中のMAFアプリケーションのデバッグを可能にするには、図30-2のように、`maf-application.xml`ファイルの「ネットワーク」デバイス・アクセスのオプションを有効にします。

図30-2 Androidによるデバッグの有効化

### 30.3.4 MAF AMXコンテンツのデバッグ方法

MAFアプリケーションにMAF AMXコンテンツが含まれている場合は、デバイスまたはエミュレータの構成後、JDeveloperの他のアプリケーションをデバッグするときと同じように、ブレークポイントの設定、変数の内容の表示およびメソッド・コール・スタックのインスペクトを行うことができます。

注意: デバッグできるのは、JavaコードおよびJavaScriptのみです(第30.3.5項「JavaコードおよびJavaScriptのデバッグを有効にする方法」を参照)。EL式または他の宣言要素のデバッグはサポートされていません。

### 30.3.5 JavaコードおよびJavaScriptのデバッグを有効にする方法

`maf.properties`ファイルでは、JVMの起動パラメータおよびMAFのWebビューを指定して、JavaコードおよびJavaScriptのデバッグを有効にできます。`maf.properties`ファイルは自動的に作成され、「アプリケーション・リソース」の`Descriptors/META-INF`ディレクトリ内に配置されます(第30.4項「ロギングの使用方法と構成」を参照)。この場所は、アプリケーション・ファイル・システム内の`<application_name>``/src/META-INF`の場所に対応しています。

MAF実行構成を実行すると、`maf.properties`ファイルに次のデバッグ・プロパティが自動的に設定されます。

- `java.debug.enabled`: デバッグ・セッションを行う場合は`true`に設定し、実行セッションを行う場合は`false`に設定します。

  注意: `java.debug.enabled`が`true`に設定されている場合、JVMは、デバッガが接続を確立するのを待ちます。デバッガが接続に失敗すると、MAF AMXアプリケーション機能のロードが失敗します。

- `java.debug.port`: 実行対象のMAF実行構成で構成されているポート番号に設定します。

- `javascript.debug.enabled`: デバッグ・セッションを行う場合は`true`に設定し、実行セッションを行う場合は`false`に設定します。Androidにのみ適用されます。

  注意: iOSシミュレータまたはiOSデバイスでMAFアプリケーションが実行されている場合、JavaScriptデバッグを有効にするためには`javascript.debug.enabled`プロパティは必要ありません。

`maf.properties`ファイルの内容は、次のようなものです。

    java.debug.enabled=true
    java.debug.port=8000

    javascript.debug.enabled=true

JDeveloperを使用してJavaコードをデバッグする方法については、第30.3項「MAFアプリケーションのデバッグ」を参照してください。

#### 30.3.5.1 iOS 7およびiOS 8プラットフォーム上でのiOSデバイス・シミュレータを使用したJavaScriptのデバッグに関する必知事項

iOS 7またはiOS 8プラットフォームで作業している場合、Safariブラウザを使用してJavaScriptをデバッグできます。これを行うには、Safariのプリファレンスを開き、「Advanced」を選択した後、「Show Develop menu in menu bar」を選択して、ブラウザ内の「Develop」メニューを有効にします(図30-3を参照)。

図30-3 Safariブラウザ・オプションの有効化

「Develop」メニューが有効になったら、「iPhone Simulator」または「iPad Simulator」を選択し(図30-4および図30-5を参照)、デバッグするUIWebViewを選択します(図30-6を参照)。

注意: 「Develop」メニューにiPhone Simulatorオプションが表示されるか、iPad Simulatorオプションが表示されるかは、どちらのデバイス・シミュレータが起動しているかによって決まります。

図30-4 Safariブラウザの「Develop」メニューを使用したiPhone Simulator上でのデバッグ

図30-5 Safariブラウザの「Develop」メニューを使用したiPad Simulator上でのデバッグ

図30-6 Safariブラウザの「Develop」メニューを使用したUIWebViewの選択

図30-7および図30-8に、CSS、DOMおよびHTMLをデバッグ中のSafariのリモートWebインスペクタを示します。

図30-7 リモートWebインスペクタ

図30-8 実行時にリモートWebインスペクタによって解析されたAMXページ

図30-9および図30-10に、Safariブラウザでのブレークポイントを使用したJavaScriptのデバッグを示します。

図30-9 SafariブラウザでのJavaScriptのデバッグ

図30-10 実行時にデバッグされたAMXページ

## 30.4 ロギングの使用方法と構成

サポートされるすべてのプラットフォームでMAFアプリケーションのロギングを有効にするには、JavaScript (第30.4.2項「JavaScriptのロギングの使用方法」を参照)および埋込みコード(第30.4.3項「埋込みロギングの使用方法」)で、単一ファイルへのログ出力を含む単一構成を使用します。このログ出力には、`System.out.println`および`System.err.println`文によって生成された出力が含まれます。

デフォルトのMAFのロギング・プロセスは、次のとおりです。

- アプリケーションの起動時、ロギングが開始されます。

- アプリケーションの以前の実行で生成された既存のログ・ファイルが削除され、現在の実行の内容のみが使用可能になります。

- アプリケーションをiOSデバイス・シミュレータ上で実行している場合、Javaロギング出力へのアクセスに使用できるファイルは、出力のリダイレクションに伴って生成された直後に、その名前と場所が通知されるファイルのみです。このファイルの一般的な場所として、`/Users/``<userid>``/Library/Developer/CoreSimulator/Devices/``<device_id>``/data/Containers/Data/Application/``<container_id>``/application.log` (`<device_id>`と`<container_id>`の参照は、アプリケーションのインストール時にiOSによって作成されたUUIDの長い文字列を表します)などがあります。これらの参照の値は予測できないので、複数のシミュレータまたはアプリケーションがインストールされている場合は、デプロイメント時に使用されるシミュレータに対応するフォルダを特定することは困難です。そのため、`-consoleRedirect=/``<path>``/``<to>`/`log.txt`を使用して、既知の場所にログを出力することをお薦めします。

  注意: ログ・ファイルを取得するには、パスは絶対パスである必要があり、場所は現在のユーザーにとって書込み可能である必要があります。

  iOSデバイス上でアプリケーションを実行している場合、コンソール出力は、アプリケーションの`Documents/logs`ディレクトリにある`application.log`ファイルにリダイレクトされます。

  Androidでは、出力は、アプリケーションと同じ名前のテキスト・ファイルにフォワードされます。出力ファイルの場所は`/sdcard`です。この場所が存在していないか、読取り専用として構成されている場合、ログ出力は、アプリケーションの書込み可能データ・ディレクトリに再ルーティングされます。

- `logging.properties`ファイルは自動的に作成され、「アプリケーション・リソース」の`Descriptors/META-INF`ディレクトリ内に配置されます(第30.4項「ロギングの使用方法と構成」を参照)。この場所は、アプリケーション・ファイル・システム内の`<application_name>``/src/META-INF`の場所に対応しています。このファイルでは、すべてのログ出力で`java.util.logging.ConsoleHandler`および`SimpleFormatter`を使用することが定義され、ログ・レベルが`SEVERE`に設定されます。このファイルを編集して、別のロギング動作を指定できます(第30.4.1項「プロパティ・ファイルを使用したロギングの構成方法」を参照)。

  注意: MAFアプリケーションでは、`java.util.logging`パッケージからのロガーを使用することはできません。

MAFのロガーは、次のとおり`oracle.adfmf.util.Utility`クラスで宣言されます。

    public static final String APP_LOGNAME = "oracle.adfmf.application";
    public static final Logger ApplicationLogger = Logger.getLogger(APP_LOGNAME);

    public static final String FRAMEWORK_LOGNAME = "oracle.adfmf.framework";
    public static final Logger FrameworkLogger = Logger.getLogger(FRAMEWORK_LOGNAME);

MAFアプリケーションで使用するロガーは、`ApplicationLogger`です。

`oracle.adfmf.util.logging.Trace`クラスのメソッドを使用することもできます。

詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスを参照してください。

### 30.4.1 プロパティ・ファイルを使用したロギングの構成方法

例30-1は、ロギングの構成で使用する`logging.properties`ファイルを示しています。

例30-1 logging.propertiesファイル

    # default - all loggers to use the ConsoleHandler
    .handlers=java.util.logging.ConsoleHandler
    # default - all loggers to use the SimpleFormatter
    .formatter=java.util.logging.SimpleFormatter

    oracle.adfmf.util.logging.ConsoleHandler.formatter=
                 oracle.adfmf.util.logging.PatternFormatter
    oracle.adfmf.util.logging.PatternFormatter.pattern=
                 [%LEVEL%-%LOGGER%-%CLASS%-%METHOD%]%MESSAGE%

    #configure the framework logger to only use the adfmf ConsoleHandler
    oracle.adfmf.framework.useParentHandlers=false
    oracle.adfmf.framework.handlers=oracle.adfmf.util.logging.ConsoleHandler
    oracle.adfmf.framework.level=SEVERE

    #configure the application logger to only use the adfmf ConsoleHandler
    oracle.adfmf.application.useParentHandlers=false
    oracle.adfmf.application.handlers=oracle.adfmf.util.logging.ConsoleHandler
    oracle.adfmf.application.level=SEVERE

`oracle.adfmf.util.logging.ConsoleHandler`は、カスタム・フォーマッタの受信者としての役割を果たします。

`oracle.adfmf.util.logging.PatternFormatter`では、ログ・メッセージの出力を可能にする、次の高度なフォーマット・トークンが許可されています。

- `%LEVEL%`: ロギング・レベル。

- `%LOGGER%`: 出力が書き込まれるロガーの名前。

- `%CLASS%`: ログに記録されるクラス。

- `%METHOD%`: ログに記録されるメソッド。

- `%TIME%`: ロギング・メッセージが送信された時間。

- `%MESSAGE%`: 実際のメッセージ。

使用可能なロギング・レベルは、次のとおりです。

- `SEVERE`: 重大な障害を示すメッセージ・レベルです。

- `WARNING`: 潜在的な問題を示すメッセージ・レベルです。

- `INFO`: 情報メッセージのメッセージ・レベルです。

- `FINE`: トレース情報を提供するメッセージ・レベルです。

- `FINER`: このレベルは、かなり詳細なトレース・メッセージを示します。

- `FINEST`: このレベルは、非常に詳細なトレース・メッセージを示します。

注意: ロギング・レベルの詳細度を選択するときは、`SEVERE`、`WARNING`および`INFO`レベルで出力の詳細度を上げると、アプリケーションのパフォーマンスに悪影響を及ぼすことに留意してください。

`logging.properties`ファイルで定義されているロガーは、`oracle.adfmf.util.Utility`クラスから取得されるロガーと一致します(第30.4項「ロギングの使用方法と構成」を参照)。ロギング・レベルも一致します。`INFO`よりも詳細なロギング・レベルを使用する場合は、`ConsoleHandler`のロギング・レベルを、例30-2に示されているものと同じレベルに変更する必要があります。

例30-2 非常に詳細なロギング・レベルの設定

    oracle.adfmf.util.logging.ConsoleHandler.formatter=
                 oracle.adfmf.util.logging.PatternFormatter
    oracle.adfmf.util.logging.ConsoleHandler.level=FINEST
    oracle.adfmf.util.logging.PatternFormatter.pattern=
                 [%LEVEL%-%LOGGER%-%CLASS%-%METHOD%]%MESSAGE%

### 30.4.2 JavaScriptのロギングの使用方法

JavaScriptは、`console.log` or`.error/.warn/.info`に出力を書き込みます。この出力は、`System.out`ユーティリティによってファイルにリダイレクトされます。

メッセージを指定することで、ログの出力をカスタマイズできます。次のJavaScriptコードでは、`"Message from JavaScript"`出力が生成されます。

    <script type="text/javascript" charset="utf-8">
       function test_function() { console.log("Message from JavaScript"); }
    </script>

ロギング・ファイルに定義されているプロパティを利用するには、`adf.mf.log`パッケージ、およびそれによって提供される`Application`ロガーを使用する必要があります。

使用可能なロギング・レベルは、次のとおりです。

- `adf.mf.log.level.SEVERE`

- `adf.mf.log.level.WARNING`

- `adf.mf.log.level.INFO`

- `adf.mf.log.level.CONFIG`

- `adf.mf.log.level.FINE`

- `adf.mf.log.level.FINER`

- `adf.mf.log.level.FINEST`

ロギングをトリガーするには、`adf.mf.log.Application`ロガーの`logp`メソッドを使用し、そのメソッドのパラメータで次のものを指定します。

- ロギング・レベル

- 文字列としての現在のクラス名

- 文字列としての現在のメソッド

- 文字列としてのメッセージ文字列

例30-3は、MAFアプリケーションでの`logp`メソッドの使用方法を示しています。

例30-3 ロギング・メソッドの使用方法

    adf.mf.log.Application.logp(adf.mf.log.level.WARNING,
                                "myClass",
                                "myMethod",
                                "My Message");

`logp`メソッドを実行すると、次の出力が生成されます。

    [WARNING - oracle.adfmf.application - myClass - myMethod] My Message

詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework JSDocリファレンスを参照してください。

### 30.4.3 埋込みロギングの使用方法

埋込みロギングでは、例30-4に示されているとおり、`java.util.logging.Logger`を使用します。`EmbeddedClass`はプロジェクトで定義されるJavaクラスを表します。

例30-4 埋込みロギングの使用方法

    import java.util.logging.Level;
    import java.util.logging.Logger;
    import oracle.adfmf.util.logging.*;
    ...
       Utility.ApplicationLogger.logp(Level.WARNING,
                                      EmbeddedClass.class.getName(),
                                      "onTestMessage",
                                      "embedded warning message 1");
       Logger.getLogger(Utility.APP_LOGNAME).logp(Level.WARNING,
                        this.getClass().getName(),
                        "onTestMessage",
                        "embedded warning message 2");
       Logger.getLogger("oracle.adfmf.application").logp(Level.WARNING,
                                                    this.getClass().getName(),
                                                    "onTestMessage",
                                                    "embedded warning message 3");

このコードによって生成される出力は、次のとおりです。

    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 1
    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 2
    [WARNING - oracle.adfmf.application - EmbeddedClass - onTestMessage] embedded warning message 3

### 30.4.4 iOSプラットフォームでのデバッグおよびロギングにXcodeを使用する方法

MAFプロジェクトの操作にXcodeを使用することは、JDeveloperを使用した次回のデプロイメント中に一部またはすべての変更を失う可能性があるため推奨されませんが、例外的な状況ではこれを使用できます。

始める前に

アプリケーションをJDeveloperからiOSシミュレータにデプロイします。

生成されたプロジェクトを直接Xcodeで開く手順は次のとおりです。

1. `workspace_directory``\deploy\``デプロイメント・プロファイル名``\temporary_xcode_project\`に移動します。

2. `Oracle_ADFmc_Container_Template.xcodeproj`というXcodeプロジェクトを開きます。

開発用コンピュータでMac OS 10.8.nを実行し、Xcodeを使用してMAFアプリケーションをデバッグしている場合、IDE内(JDeveloperコンソールまたはXcodeコンソール上)にはJavaを表示できません。この出力は、ファイルにリダイレクトされます(第30.4項「ロギングの使用方法と構成」を参照)。アプリケーションのスキーマに次の引数を追加すると、この動作を無効にし、iOSデバイスまたはそのシミュレータ上でデバッグを実行するときに、XcodeからJava、JavaScriptおよびObjective-Cのログ出力にリアルタイムでアクセスできるようになります。

`-consoleRedirect=FALSE`

### 30.4.5 アプリケーション・ログへのアクセス方法

次のAPIを使用して、アプリケーションのログ情報にアクセスできます。

- `oracle.adfmf.framework.api.PerfMon`

- `oracle.adfmf.framework.api.LogEntry`

- `oracle.adfmf.util.HOTS`

詳細は、Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスを参照してください。

### 30.4.6 ロギングを無効にする方法

ロギングの出力がアプリケーション・ログ・ファイルに送られないようにすることができます。この場合、ログ・ファイルは空白のままになるか、作成されません。ロギングが無効になっている場合、アプリケーション・ログにトレース文がなく、`stderr`および`stdout`に送られた出力は`null`の場所またはエンド・ユーザーがアクセスできないその他の場所にリダイレクトされます。

すべてのロギングを無効にするには、アプリケーションの`adf-config.xml`ファイルで次のように`disableLogging`プロパティを`true`に設定します。

    <adf-property name="disableLogging" value="true"/>

デフォルトでは、ロギングはMAFアプリケーションで有効化され、`disableLogging`プロパティは`false`に設定されます。

`adf-config.xml`ファイルの詳細は、付録C「MAFアプリケーションとプロジェクト・ファイルの概要」を参照してください。