ヘッダーをスキップ

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

前 | 次 |

# 9 MAFアプリケーションでのプラグインの使用方法

この章では、MAFに用意されているコア・プラグインを有効にしてMAFアプリケーションで使用する方法、追加プラグインを登録する方法、FARからプラグインをインポートする方法、およびMAFアプリケーションのプラグインをパッケージ化してデプロイする方法について説明します。

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

- 第9.1項「MAFアプリケーションでのプラグインの使用方法の概要」

- 第9.2項「MAFアプリケーションでのコア・プラグインの有効化」

- 第9.3項「MAFアプリケーションでの追加プラグインの登録」

- 第9.4項「MAFアプリケーション組込みプラグインのデプロイ」

- 第9.5項「機能アーカイブ・ファイルからのプラグインのインポート」

## 9.1 MAFアプリケーションでのプラグインの使用方法の概要

MAFには様々なCordovaプラグインがパッケージ化されているので、MAFアプリケーションはこのプラグインを使用してデプロイ先のデバイスと対話できます。MAFに用意されているデフォルトのプラグインはコア・プラグインと呼ばれます。これらのプラグインは`maf-application.xml`ファイルの概要エディタで確認できます。たとえば、MAFアプリケーションでデバイスの電子メール機能やコンタクト先機能へのアクセスに使用する電子メールプラグインやコンタクト先プラグインなどがあります。

MAFには、プラグインを使用するMAFアプリケーション用に、次のバージョンのApache Cordovaが含まれています。

- AndroidプラットフォームのMAFアプリケーション用Apache Cordova 3.6.3

- iOSプラットフォームのMAFアプリケーション用Apache Cordova 3.7.0

各プラグインの説明を表示するには、「コア・プラグイン」リスト(図9-1を参照)でプラグインを選択します。新規作成したMAFアプリケーションでは、1つのコア・プラグイン(ネットワーク情報プラグイン)のみがデフォルトで有効になっています。第9.2項「MAFアプリケーションでのコア・プラグインの有効化」の説明に従って、これらのコア・プラグインを有効または無効にします。

注意: iOSデバイス上のすべてのアプリケーションにネットワーク・アクセスがデフォルトで許可されます。この動作は変更できません。Androidデバイスにデプロイするアプリケーションについては、Androidデバイス上でネットワーク・アクセスを許可しない場合、ネットワーク情報プラグインを無効にします。

MAFに用意されているデフォルトのコア・プラグインではMAFアプリケーションの要件を満たさない場合は、独自に開発した追加プラグインを登録できます。詳細は、第9.3項「MAFアプリケーションでの追加プラグインの登録」を参照してください。

追加プラグインを登録するとMAFアプリケーションがデプロイできなくなる場合、MAFアプリケーションで使用されているプラグイン間でファイル名が競合している可能性があります。または、登録した追加プラグインが正常に機能するために必要な依存プラグインが存在しないことが原因の可能性もあります。詳細は、第9.4項「MAFアプリケーション組込みプラグインのデプロイ」を参照してください。

以前のリリースのMAFで作成したMAFアプリケーションを移行する場合は、アプリケーションで使用されているすべてのプラグインを`maf-plugins.xml`ファイルに登録する必要があります。詳細は、『Oracle Mobile Application Frameworkのインストール』のCordovaプラグインの旧リリースからMAF 2.1.0への移行に関する項を参照してください。

注意: アプリケーションのプラグインを管理するには`maf-application.xml`ファイルを編集しますが、変更を加えると`maf-plugins.xml`ファイルのリビジョンが作成されます。「アプリケーション・リソース」ペインのADF-META-INFノードから、両方のファイルにアクセスします(図9-1を参照)。

図9-1 maf-application.xmlファイルの概要エディタに表示されたプラグイン

## 9.2 MAFアプリケーションでのコア・プラグインの有効化

新規作成したMAFアプリケーションでは、1つのコア・プラグイン(ネットワーク情報プラグイン)のみがデフォルトで有効になっています。他のコア・プラグインを有効または無効にして、関連するデバイスの機能にMAFアプリケーションがアクセスできるようにしてください。

### 9.2.1 MAFアプリケーションでコア・プラグインを有効にする方法

コア・プラグインを有効にするには、MAFアプリケーションの`maf-application.xml`ファイルの概要エディタを使用します。

MAFアプリケーションでコア・プラグインを有効にする手順:

1. 「アプリケーション」ウィンドウで、「アプリケーション・リソース」パネルを開きます。

2. 「アプリケーション・リソース」パネルでDescriptorsを展開し、ADF META-INFを展開します。

3. maf-application.xmlファイルをダブルクリックし、表示される概要エディタで「プラグイン」ナビゲーション・タブをクリックします。

4. 「コア・プラグイン」セクションを展開し、アプリケーションが機能にアクセスできるようにするプラグインを選択します。

   たとえば、MAFアプリケーションでSMSメッセージを送信できるようにするには、SMSプラグインのチェック・ボックスを選択します。

### 9.2.2 MAFアプリケーションでコア・プラグインを有効にする場合の処理

概要エディタでプラグインを有効にすると、JDeveloperによってアプリケーションの`maf-plugins.xml`ファイルが編集され、MAFアプリケーションで有効なプラグインを特定するエントリが追加されます。例9-1に、電子メール、PushPluginおよびネットワーク情報の各プラグインが有効になっているMAFアプリケーションのエントリを示します。デバイスの電子メール・クライアントを使用し、インターネットにアクセスして、デバイスからプッシュ通知を受信しているMAFアプリケーションでは、これらのプラグインの有効化は必須です。

例9-1 maf-plugins.xmlファイル内の有効なコア・プラグイン

    <?xml version="1.0" encoding="UTF-8" ?>
    <maf-plugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/adf/mf">
      <cordova-plugins>
        <core-cordova-plugin id="c1" pluginId="org.apache.cordova.network-information"/>
        <core-cordova-plugin id="c2" pluginId="com.oracle.maf.email"/>
        <core-cordova-plugin id="c3" pluginId="com.phonegap.plugins.PushPlugin"/>
      </cordova-plugins>
    </maf-plugins>

## 9.3 MAFアプリケーションでの追加プラグインの登録

MAFに用意されたコア・プラグインでは提供されていない機能がMAFアプリケーションで必要な場合は、MAFアプリケーションに追加プラグインを登録します。

### 9.3.1 追加プラグインを登録する方法

MAFアプリケーションで使用する追加プラグインを登録するには、MAFアプリケーションの`maf-application.xml`ファイルの概要エディタを使用します。

始める前に、プラグインを登録するアプリケーションと同じドライブに、対象のプラグインが格納されていることを確認します。たとえば、Windows環境で`C:`ドライブにアプリケーションが格納されている場合、そのアプリケーションに登録するプラグインも`C:`ドライブに格納する必要があります。これにより、JDeveloperでは相対パスを使用してアプリケーションにプラグインを正常に登録できます。

MAFアプリケーションに追加プラグインを登録する手順:

1. 「アプリケーション」ウィンドウで、「アプリケーション・リソース」パネルを開きます。

2. 「アプリケーション・リソース」パネルでDescriptorsを展開し、ADF META-INFを展開します。

3. maf-application.xmlファイルをダブルクリックし、表示される概要エディタで「プラグイン」ナビゲーション・タブをクリックします。

4. 「追加のプラグイン」セクションを展開し、「追加」アイコンをクリックしてダイアログを表示し、アプリケーションに登録するプラグインが格納されているディレクトリを参照して選択します。

### 9.3.2 MAFアプリケーションに追加プラグインを登録する場合の処理

MAFアプリケーションで使用するプラグインのソース・ファイルを選択すると、JDeveloperによってアプリケーションの`maf-plugins.xml`ファイルが編集され、MAFアプリケーションで有効なプラグインを特定するエントリが追加されます。例9-2は、MAFアプリケーションにカレンダプラグイン(図9-2を参照)が登録されている場合の`maf-plugins.xml`ファイル内のエントリを示したものです。

図9-2 maf-application.xmlファイルの概要エディタに表示された追加プラグイン

例9-2 maf-plugins.xmlファイル内の追加プラグイン

    <?xml version="1.0" encoding="UTF-8" ?>
    <maf-plugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.oracle.com/adf/mf">
       <cordova-plugins>
         <core-cordova-plugin id="c1" pluginId="org.apache.cordova.network-information"/>
        <cordova-plugin id="c2" pluginId="nl.x-services.plugins.calendar"
                        path="../../../../../z_plugins/Calendar-PhoneGap-Plugin-master/">
          <platform id="p1" name="android" enabled="true"/>
          <platform id="p2" name="ios" enabled="true"/>
        </cordova-plugin>
       </cordova-plugins>
    </maf-plugins>

## 9.4 MAFアプリケーション組込みプラグインのデプロイ

MAFアプリケーション組込みプラグインのデプロイメントは、選択したデプロイメント方法によって異なります。

FARへのデプロイメント

FARへのデプロイメントには、アプリケーションの`maf-plugins.xml`ファイルのコピー(ファイル名: `jar-maf-plugins.xml`)が含まれます。これは、アプリケーションの`maf-plugins.xml`ファイルと同じですが、各プラグインの`path`属性値が空の文字列である点が異なります。FARデプロイメントにはプラグインのソース・ファイルは含まれません。

モバイル・アプリケーション・アーカイブ・ファイルへのデプロイメント

モバイル・アプリケーション・アーカイブ・ファイルへのデプロイメントには、すべての`path`属性が空の文字列に設定された、アプリケーションの`maf-plugins.xml`ファイルのコピーが含まれます。

AndroidまたはiOSデプロイメント・プロファイルを使用したデプロイメント

AndroidまたはiOSデプロイメント・プロファイルを使用してデプロイする場合は、JDeveloperが`maf-helper`コマンドライン・ツールを起動して、構成済プラグインをデプロイします。`maf-helper`コマンドライン・ツールでは、プラグイン・アーティファクトがそれぞれのソースの場所からAndroidまたはiOSのデプロイメント・フォルダにデプロイされます。コマンドライン・ツールでプラグインがデプロイされると、デプロイメントではそのプラグインをプラットフォーム固有のアプリケーションに組み込みます。

プラグイン間における名前の競合の解決

MAFアプリケーションで使用されている複数のプラグインに同じ名前のリソース・ファイルが含まれている場合、名前の競合が原因でデプロイメントに失敗する可能性があります。たとえば、MAFアプリケーションで2つのプラグインを使用し、両方のリソース・ファイルが`arrays.xml`である場合、デプロイメントは失敗します。

このような名前の競合を解決するには、2番目のプラグインのリソース・ファイル名と競合している1番目のプラグインのリソース・ファイル名を変更します。1番目のプラグインの`plugin.xml`ファイル内で、リソース・ファイルへの参照を更新します。この例では、1番目のプラグインの`array.xml`リソース・ファイル名を`pluginone_arrays.xml`に変更して、プラグインの`plugin.xml`ファイルを次のように編集する必要があります。

    <source-file src="src/android/LibraryProject/res/values/pluginone_arrays.xml"
                                                             target-dir="res/values"/>

不足している依存プラグインの追加

MAFアプリケーションで使用する追加プラグインに必要なプラグイン(依存プラグイン)が検出されないと、デプロイメントに失敗する場合があります。このシナリオは、ファイアウォールで保護されている場合に発生する可能性があり、その原因は、デプロイ時にJDeveloperがApache Cordovaのツールを起動してプラグインの依存性を管理するためです。後者のツールは、依存プラグインのダウンロードを許可するようにプロキシ設定が構成されていないと、依存プラグインのダウンロードに失敗する場合があります。このシナリオを回避するには、不足している依存プラグインをダウンロードして、MAFアプリケーションに追加します。不足している依存プラグインの追加は、MAFアプリケーションに他のプラグインを追加する場合と同じ方法で行います。詳細は、第9.3項「MAFアプリケーションでの追加プラグインの登録」を参照してください。依存プラグインを追加したら、`maf-plugins.xml`ファイルで、必要とされるプラグインの前にこのプラグインが表示されていることを確認してください(例9-3を参照)。

例9-3 MAFアプリケーションへの依存プラグインの追加

    <maf-plugins xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.oracle.com/adf/mf">
       <cordova-plugins>
         ....
        <cordova-plugin id="c2" pluginId="com.example.dependent.dependentPlugin"
                        path="../../../../../plugins/Dependent-Plugin-Required-By-PluginWithID_c3/">
          ...
        <cordova-plugin id="c3" pluginId="com.example.plugin"
                        path="../../../../../plugins/AdditionalPlugin/">
          ...
       </cordova-plugins>
    </maf-plugins>

## 9.5 機能アーカイブ・ファイルからのプラグインのインポート

`jar-maf-plugins.xml`ファイルが格納されたFARをアプリケーションにインポートすると、`jar-maf-plugins.xml`ファイルの内容は使用するアプリケーションの`maf-plugins.xml`ファイルにマージされます。JDeveloperではマージに関する情報を「メッセージ」ウィンドウに記録します。FARからインポートするプラグインがすでにコンシューマ・アプリケーションの`maf-plugins.xml`ファイルに存在する場合、プラグインはアプリケーションに存在するのでマージされないというメッセージがJDeveloperによってログに記録されます。FARからインポートするプラグインがコンシューマ・アプリケーションの`maf-plugins.xml`ファイルに存在しない場合、JDeveloperはそのプラグインをアプリケーションの`maf-plugins.xml`ファイルに追加します。このシナリオでは、第9.3項「MAFアプリケーションでの追加プラグインの登録」の説明に従って、新しくインポートしたプラグインへのパスを設定する必要があります。