これまで、4回にわたりCordovaプラグインを理解するための説明を行いました。過去4回の説明については、以下を参照していください。
- Cordovaプラグインを理解しよう(構成編)
- Cordovaプラグインを理解しよう(plugin.xml 設定編)
- Cordovaプラグインを理解しよう(SamplePlugin.js 設定編)
- Cordovaプラグインを理解しよう(ビルドエラー解消編)
上記の説明では、Cordovaプラグインを管理するためのPlugmanというツールで作成できる雛形のCordovaプラグインを使用したため、Cordovaプラグインの設定については、最小限の設定になっています。
基本的に、Cordovaプラグインの設定は、plugin.xmlで行います。今回は、Cordovaコミュニティーが提供しているCordovaプラグインを参考に、利用頻度が高いplugin.xmlの設定について説明していきたいと思います。
plugin.xmlで利用できる設定については、以下を参照してください。
<engines> 要素
<engines> 要素では、Cordovaが提供しているフレームワークのバージョンを指定することで、Cordovaプラグインをインストールする対象を指定する事ができます。<engines> 要素を利用する場合は、子要素として<engine> 要素が必要になります。
cordova-plugin-camera@8.0.0のplugin.xmlでは、以下の<engines> 要素が設定されています。
<engines>
<engine name="cordova" version=">=9.0.0"/>
<engine name="cordova-android" version=">=12.0.0" />
<engine name="cordova-ios" version=">=5.1.0" />
</engines>
Monacaプロジェクトをビルドした際に、<engines> 要素の設定を満たしていない場合は、以下のようなビルドエラーが出力されます。
Discovered saved plugin "cordova-plugin-camera". Adding it to the project
Installing "cordova-plugin-camera" for android
Plugin doesn't support this project's cordova-android version. cordova-android: 8.0.0, failed version requirement: >=12.0.0
Skipping 'cordova-plugin-camera' for android
<preference> 要素
<preference> 要素では、plugin.xml内で使用できる変数を作成する事ができます。cordova-plugin-geolocation@5.0.0のplugin.xmlでは、以下の<preference> 要素が設定されています。default属性を指定することで、デフォルト値を設定する事ができます。
<preference name="GPS_REQUIRED" default="true"/>
<preference> 要素で指定した変数を利用する場合は、Cordovaプラグインをインストールする際に、下記のvariableオプションで指定します。
cordova plugin add cordova-plugin-geolocation --variable GPS_REQUIRED="false"
Monacaプロジェクトでcordova-plugin-geolocationのvariableオプションを指定する場合は、MonacaクラウドIDEのメニュー、
- 設定>Cordovaプラグインの管理>有効なプラグイン>cordova-plugin-geolocation
の設定画面を開き、インストールパラメータ項目に、
GPS_REQUIRED=false
を入力し、OKボタンをクリックします。

plugin.xml内では、$PREFERENCE_NAMEという構文を使用して参照する事ができます。cordova-plugin-geolocation@5.0.0のplugin.xmlでは、以下のように設定されています。
<uses-feature android:name="android.hardware.location.gps" android:required="$GPS_REQUIRED" />
<dependency> 要素
<dependency> 要素では、Cordovaプラグインが依存する他のCordovaプラグインを指定できます。
cordova-plugin-media@7.0.0のplugin.xmlでは、以下の<dependency> 要素が設定されています。
<dependency id="cordova-plugin-file" version="^8.0.0" />
設定内容から、cordova-plugin-media@7.0.0では、依存するCordovaプラグインとして、cordova-plugin-fileのバージョン8系が指定されています。cordova-plugin-media@7.0.0がインストールされる際には、cordova-plugin-fileのバージョン8系の最新版もインストールされます。
注意点として、ビルド時のCordovaプラグインのインストールの順番は、Monacaプロジェクトに有効またはインポートされたCordovaプラグインの順番でインストールされます。
そのため、cordova-plugin-media@7.0.0を有効にする前に、cordova-plugin-file@7.0.0を有効にした場合は、ビルド時にバージョンの競合が発生し、以下のようなビルドエラーが発生します。
Adding cordova-plugin-file to package.json
Discovered plugin "cordova-plugin-media". Adding it to the project
Installing "cordova-plugin-media" for android
Failed to install 'cordova-plugin-media': CordovaError: Version of installed plugin: "cordova-plugin-file@7.0.0" does not satisfy dependency plugin requirement "cordova-plugin-file@^8.0.0". Try --force to use installed plugin as dependency.
at /root/.nvm/versions/node/v18.16.1/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:526:43
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Version of installed plugin: "cordova-plugin-file@7.0.0" does not satisfy dependency plugin requirement "cordova-plugin-file@^8.0.0". Try --force to use installed plugin as dependency.
ビルドエラーを解消する場合は、cordova-plugin-file@7.0.0を無効にします。

<framework> 要素
<framework> 要素では、Cordovaプラグインが依存するフレームワークを指定できます。<framework> 要素で依存するフレームワークを指定する際に、バージョンも一緒に指定されているケースがあります。
cordova-plugin-camera@8.0.0のplugin.xmlでは、以下の<framework> 要素が設定されています。
<preference name="ANDROIDX_CORE_VERSION" default="1.6.+"/>
<framework src="androidx.core:core:$ANDROIDX_CORE_VERSION" />
cordova-plugin-camera@8.0.0では、<preference> 要素のANDROIDX_CORE_VERSIONがバージョンに設定されているため、利用者側で任意のバージョンが指定できる形になっています。
Androidで<framework> 要素を使用する場合、以下のようにcustom属性、type属性を指定することで、src属性で指定したgradleファイルを使用して設定を行うこともできます。
<framework src="relative/path/rules.gradle" custom="true" type="gradleReference" />
おわりに
今回は、利用頻度が高いplugin.xmlの設定について説明しました。
で説明した内容と今回説明した内容を理解することで、数多く公開されているサードパーティー製Cordovaプラグインのplugin.xmlの設定内容を理解できるようになると思います。
Cordovaプラグインは、ネイティブ機能を利用する際には、必須のツールになります。今回の説明を機に、plugin.xmlの設定について理解を深めてください。