ヘッダーをスキップ

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

前 | 次 |

# A トラブルシューティング

この付録では、MAFアプリケーションの様々な側面の問題、およびそれらの問題の診断方法と解決方法について説明します。

この付録の構成は、次のとおりです。

- 第A.1項「iOSシミュレータでの入力コンポーネントの問題」

- 第A.2項「アドレス・ポイント数を制限する地理マップ・コンポーネント」

- 第A.3項「コード署名が原因でデプロイメントが失敗する」

- 第A.4項「credentials属性によりデプロイメントが失敗する」

## A.1 iOSシミュレータでの入力コンポーネントの問題

問題:

iOSシミュレータにデプロイされたMAFアプリケーションでは、マウスを使用してあるフィールドから別のフィールドに移動すると、`<amx:inputText>`コンポーネント・フィールドに入力されたテキストが、その別のフィールドに入力されたテキストの先頭に添付されます。たとえば、名、ミドル・ネーム、姓を入力するテキスト・フィールドがあるページで、名のフィールドにJohnと入力し、ミドル・ネームのフィールドをクリックしてPと入力すると、テキストはJohnPと表示されます。同様に、姓のフィールドをクリックしてSmithと入力すると、そのフィールドのテキストは、図A-1に示されているように、JohnPSmithと表示されます。

図A-1 以降の<amx:inputText>フィールドにおけるテキスト値の連結

注意: この動作は、iOSシミュレータとWebページでのみ発生し、実際のデバイスでは発生ません。

解決策:

シミュレータで、入力テキスト・フィールド間を移動する場合は、マウスではなく、キーボードを使用します。

## A.2 アドレス・ポイント数を制限する地理マップ・コンポーネント

問題:

Googleマップがマップ・プロバイダとして使用されているときは、地理マップ・コンポーネントはすべてのアドレス・ポイントを解決できるわけではありません。この問題の原因には、ビジネス・ライセンスを持たないユーザーのみが、アドレス解決を可能にするジオコーディング・サービスに制限付きアクセスができるというライセンスがあります。

解決策:

MAFは、ジオコーディング・サービスによって生成されるエラー・メッセージ用のハンドラを提供します。アドレス・ポイントの最大許容数を超過する場合、実行時にこれらのメッセージは表示されます。1秒当たり10リクエストに制限されているリクエストの数、および冗長リクエストの数はジオコーディングAPIに送られません。

表A-1に示すエラー・メッセージは、モニタリングする必要があります。

表A-1

エラーID | メッセージ | 説明
--- | --- | ---
`OVER_QUERY_LIMIT` | GeoCoder割当て制限を超過しました。 | 割当て制限を超過していることを示しています。
`REQUEST_DENIED` | リクエストが拒否されました。APIキーおよびクライアントIDを確認します。 | リクエストには`result_type`または`location_type`パラメータが入っていても、APIキーもクライアントIDも入っていないため、リクエストが拒否されたことを示しています。

## A.3 コード署名が原因でデプロイメントが失敗する

問題:

iOS開発環境では、コード署名エラーにより、MAFアプリケーションのデプロイメントが失敗する場合があります。

解決策:

確実にMAFアプリケーションに署名するには、`CODESIGN_ALLOCATE`を使用して環境を構成することによって、コード署名データをMach-O (Machオブジェクト)ファイルに追加します。たとえば、ターミナルから次の文字列を入力します。

    export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"

詳細は、iOS Developer Library (http://developer.apple.com/library/ios/navigation/)で入手可能な`『codesign_allocate(1) OS X Manual Page』および『OS X ABI Mach-O File Format Reference』`を参照してください。

## A.4 credentials属性によりデプロイメントが失敗する

問題:

`maf-feature.xml`ファイルの`adfmf:feature`要素に定義された`credentials`属性が存在すると、JDeveloperではデプロイメントが取り消され、デプロイメント・ログに次のようなエラーが書き込まれます。

    XML validation failed for file
    /Users/jsmith/jdeveloper/mywork/MobileApplication/ViewController/src/META-INF/maf-feature.xml.
    [12:26:44 PM] The file contains the following errors:
    Error (Line 3, Column 44): Attribute credentials not defined on element adfmf:feature
    Error (Line 10, Column 49): Attribute credentials not defined on element adfmf:feature
    Error (Line 19, Column 51): Attribute credentials not defined on element adfmf:feature
    Error (Line 35, Column 69): Attribute credentials not defined on element adfmf:feature
    Error (Line 50, Column 65): Attribute credentials not defined on element adfmf:feature
    [12:26:50 PM] Deployment canceled.
    [12:26:50 PM] ----  Deployment incomplete  ----.
    [12:26:50 PM] XML validation failed.

解決策:

ADFモバイルで作成したアプリケーションを移行する場合、`maf-feature.xml` (`<adfmf:feature id="feature1" name="feature1" credentials="remote">`など)で一度定義された認証モードが、`connections.xml`ファイルの`authenticationMode`属性を使用して定義されていることを確認する必要があります。JDeveloperの監査ルールにより、`credentials`属性が存在することを検出し、`maf-feature.xml`ファイルからこの属性を削除することができます。

`autneticationMode`属性に対して有効な値は`local`および`remote`のみであるため、`none` (`<adfmf:feature id="feature1" name="feature1" credentials="none">`)の値を`authenticateionMode`属性に移行するとデプロイメントが失敗するため、移行しないでください。詳細は、第29.3項「MAFアプリケーションの認証プロセスの概要」を参照してください。