Plugin.xml API

Plugin.xmlファイルは、プラグインに必要な構造と設定を定義します。プラグインの詳細を提供するいくつかの要素があります。

plugin

plugin要素は、プラグインマニフェストの最上位要素です。

属性 説明
xmlns
文字列
必須
プラグインのネームスペース、https://apache.dokyumento.jp/cordova/ns/plugins/1.0です。ドキュメントにAndroidの場合の`AndroidManifest.xml`ファイルに追加されるタグなど、他のネームスペースからのXMLが含まれる場合、それらのネームスペースも要素に含める必要があります。
id
文字列
必須
プラグインのnpmスタイルの識別子。
version
文字列
必須
プラグインのバージョン番号。Semver構文がサポートされています。

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="https://apache.dokyumento.jp/cordova/ns/plugins/1.0"
    xmlns:android="http://schemas.android.com/apk/res/android"
    id="my-plugin-id"
    version="1.0.2">

enginesとengine

<engines>要素の子要素は、このプラグインがサポートするApache Cordovaベースのフレームワークのバージョンを指定します。CLIは、ターゲットプロジェクトがエンジンの制約を満たしていないプラグインに対して、ゼロ以外のコードで異常終了します。何もタグが指定されていない場合、CLIは指定されたCordovaプロジェクトディレクトリに盲目的にインストールしようとします。

注:**Cordova 6.1.0以降**では、プラットフォーム、プラグイン、CLIの依存関係を指定する推奨される場所は、プラグインの`package.json`です。Cordova依存関係の指定の詳細については、そちらを参照してください。

属性 説明
name
文字列
必須
エンジンの名前。サポートされているデフォルトのエンジンは次のとおりです。`cordova`、`cordova-plugman`、`cordova-android`、`cordova-browser`、`cordova-ios`、`windows-os`、`android-sdk`(インストールされている最高のAndroid APIレベルを返します)、`apple-xcode`(Xcodeのバージョンを返します)、`apple-ios`(インストールされている最高のiOSバージョンを返します)、`apple-osx`(macOSのバージョンを返します)。デフォルト以外のカスタムフレームワークを指定することもできます。
version
文字列
必須
フレームワークがインストールするために持つ必要があるバージョン。Semver構文がサポートされています。
scriptSrc
文字列
カスタムフレームワークのみ
必須
plugmanにカスタムフレームワークのバージョンを伝えるスクリプトファイル。理想的には、このファイルはプラグインディレクトリの最上位ディレクトリ内にある必要があります。
platform
文字列
カスタムフレームワークのみ
必須
フレームワークがサポートするプラットフォーム。ワイルドカード`*`を使用してすべてのプラットフォームでサポートされていることを示したり、`android|ios`のようにパイプ文字で複数を指定したり、`android`のように単一のプラットフォームを指定したりできます。

<engines>
  <engine name="cordova-android" version="=1.8.0" />
</engines>

Engine要素は、繰り返しを避け、基礎となるプラットフォームが更新された場合のメンテナンスを減らすために、`>`、`>=`などを用いたあいまいな一致も指定できます。

<engines>
  <engine name="cordova-android" version=">=1.8.0" />
</engines>

<engine>タグは、Cordovaが存在する主要なプラットフォームのすべてをデフォルトでサポートしています。cordovaエンジンタグを指定すると、すべてのプラットフォーム上のすべてのバージョンのCordovaがエンジンのバージョン属性を満たす必要があります。キャッチオールのcordovaエンジンをオーバーライドするために、特定のプラットフォームとそのバージョンをリストすることもできます。

<engines>
  <engine name="cordova" version=">=1.7.0" />
  <engine name="cordova-android" version=">=1.8.0" />
  <engine name="cordova-ios" version=">=1.7.1" />
</engines>

カスタムフレームワークの例

<engines>
  <engine name="my_custom_framework" version="1.0.0" platform="android" scriptSrc="path_to_my_custom_framework_version"/>
  <engine name="another_framework" version=">0.2.0" platform="ios|android" scriptSrc="path_to_another_framework_version"/>
  <engine name="even_more_framework" version=">=2.2.0" platform="*" scriptSrc="path_to_even_more_framework_version"/>
</engines>

name

name要素は、プラグインの名前を指定するために使用されます。この要素はまだローカライズに対応していません。

<name>Foo</name>

description

description要素は、プラグインの説明を指定するために使用されます。この要素はまだローカライズに対応していません。

<description>Foo plugin description</description>

author

author要素の内容には、プラグインの作成者の名前が含まれています。

<author>Foo plugin author</author>

keywords

keywords要素の内容には、プラグインを説明するためのコンマ区切りのキーワードが含まれています。

<keywords>foo,bar</keywords>

license

この要素は、プラグインのライセンスを指定するために使用されます。

<license>Apache 2.0 License</license>

asset

この要素は、Cordovaアプリの`www`ディレクトリにコピーされるファイルまたはディレクトリをリストするために使用されます。<platform>要素内にネストされている<asset>要素は、プラットフォーム固有のWebアセットを指定します。

属性 説明
src
文字列
必須
`plugin.xml`ドキュメントを基準としたプラグインパッケージ内のファイルまたはディレクトリの場所。指定されたsrcの場所にファイルが存在しない場合、CLIは停止してインストールプロセスを元に戻し、競合に関する通知を発行し、ゼロ以外のコードで終了します。
target
文字列
必須
`www`ディレクトリを基準としたCordovaアプリ内のファイルまたはディレクトリの場所。ファイルが既にターゲットの場所に存在する場合、CLIは停止してインストールプロセスを元に戻し、競合に関する通知を発行し、ゼロ以外のコードで終了します。

<!-- a single file, to be copied in the root directory -->
<asset src="www/foo.js" target="foo.js" />
<!-- a directory, also to be copied in the root directory -->
<asset src="www/foo" target="foo" />

アセットはサブディレクトリにもターゲットを指定できます。これにより、`www`ディレクトリ内に`js/experimental`ディレクトリが作成され(存在しない場合)、`new-foo.js`ファイルがコピーされて`foo.js`に名前変更されます。

<asset src="www/new-foo.js" target="js/experimental/foo.js" />

js-module

ほとんどのプラグインには、1つ以上のJavaScriptファイルが含まれています。各<js-module>タグはJavaScriptファイルに対応し、プラグインのユーザーが各ファイルに対して<script>タグを追加する必要がなくなります。自動的に追加されるため、ファイルをcordova.defineでラップしないでください。モジュールはクロージャでラップされ、モジュール、エクスポート、およびrequireは、AMDモジュールの通常どおりスコープ内です。<platform>内に<js-module>要素をネストすると、プラットフォーム固有のJavaScriptモジュールバインディングが宣言されます。

属性 説明
src
文字列
`plugin.xml`ファイルを基準としたプラグインディレクトリ内のファイルを指します。srcが既存のファイルに解決されない場合、CLIは停止してインストールを元に戻し、問題の通知を発行し、ゼロ以外のコードで終了します。
name
文字列
モジュール名の最後の部分を指定します。一般的には何でもかまいませんが、JavaScriptコードでプラグインの他の部分をcordova.requireを使用してインポートする場合にのみ重要になります。<js-module>のモジュール名は、プラグインのidとnameの値を組み合わせたものです。

以下の例を使用してプラグインをインストールすると、socket.jsは`www/plugins/my-plugin-id/socket.js`にコピーされ、`www/cordova_plugins.js`のエントリとして追加されます。ロード時に、`cordova.js`のコードはXHRを使用して各ファイルを読み取り、HTMLに<script>タグを挿入します。

<js-module src="socket.js" name="Socket">
</js-module>

また、この例では、プラグインidが`chrome-socket`の場合、モジュール名は`chrome-socket.Socket`になります。

clobbers

<js-module>要素内で許可されます。`window`オブジェクトの下のネームスペースを指定するために使用され、そこにmodule.exportsが挿入されます。好きなだけ<clobbers>を持つことができます。`window`で使用できないオブジェクトは作成されます。

属性 説明
target
文字列
module.exportsが挿入されるネームスペース。

<js-module src="socket.js" name="Socket">
  <clobbers target="chrome.socket" />
</js-module>

ここでは、module.exportsは`window.chrome.socket`として`window`オブジェクトに挿入されます。

merges

<js-module>要素内で許可されます。`window`オブジェクトの下のネームスペースを指定するために使用され、そこにmodule.exportsが既存の値とマージされます。キーが既に存在する場合、モジュールのバージョンが元のバージョンを上書きします。好きなだけ<merges>を持つことができます。`window`で使用できないオブジェクトは作成されます。

属性 説明
target
文字列
module.exportsがマージされるネームスペース。

<js-module src="socket.js" name="Socket">
  <merges target="chrome.socket" />
</js-module>

ここでは、module.exportsは`window.chrome.socket`にある既存の値とマージされます。

runs

<js-module>要素内で許可されます。コードは`cordova.require`で指定する必要がありますが、`window`オブジェクトにインストールされないことを意味します。これは、モジュールを初期化したり、イベントハンドラーをアタッチしたりする場合に便利です。<runs/>タグは1つまでしか持つことができません。<clobbers/>または<merges/>と共に<runs/>を含めることは冗長です。なぜなら、それらもcordova.requireでモジュールを要求するからです。

<js-module src="socket.js" name="Socket">
  <runs/>
</js-module>

dependency

<dependency>タグを使用すると、現在のプラグインが依存する他のプラグインを指定できます。プラグインは、一意のnpm idまたはgithub urlで参照されます。

属性 説明
id
文字列
プラグインのIDを指定します。
url
文字列
プラグインのURL。これは、CLIがクローンしようとするgitリポジトリを参照する必要があります。
commit
文字列
これは、`git checkout`で理解されるgit参照です。ブランチ名またはタグ名(例:`master`、`0.3.1`)、またはコミットハッシュ(例:`975ddb228af811dd8bb37ed1dfd092a3d05295f9`)。
subdir
文字列
ターゲットとするプラグインの依存関係がgitリポジトリのサブディレクトリとして存在することを指定します。これは、リポジトリに複数の関連プラグインを含めることができ、それぞれ個別に指定できるため便利です。
<dependency>タグの`url`を`.`に設定し、`subdir`を指定すると、依存するプラグインは、<dependency>タグを指定する親プラグインと同じローカルまたはリモートのgitリポジトリからインストールされます。
subdirは、親プラグインではなく、Gitリポジトリのルートからの相対パスを常に指定します。これは、プラグインをローカルパスで直接インストールした場合でも当てはまります。CLIはGitリポジトリのルートを見つけ、そこから他のプラグインを見つけます。
version
文字列
依存するプラグインのバージョン。Semver構文がサポートされています。

<dependency id="cordova-plugin-someplugin" url="https://github.com/myuser/someplugin" commit="428931ada3891801" subdir="some/path/here" />
<dependency id="cordova-plugin-someplugin" version="1.0.1" />

platform

関連付けられたネイティブコードを持つプラットフォーム、または設定ファイルの変更が必要なプラットフォームを識別します。この仕様を使用するツールは、サポートされているプラットフォームを特定し、Cordovaプロジェクトにコードをインストールできます。<platform>タグのないプラグインは、JavaScriptのみであると想定され、すべてのプラットフォームにインストールできます。

属性 説明
name
文字列
必須
許容値: ios, android, browser, electron
プラットフォームがサポートされていることを示し、その要素の子をそのプラットフォームに関連付けます。

<platform name="android">
  <!-- android-specific elements -->
</platform>

source-file

プロジェクトにインストールする必要がある実行可能ソースコードを識別します。

属性 説明
src
文字列
必須
plugin.xmlからのファイルの相対位置。srcファイルが見つからない場合、CLIはインストールを停止して元に戻し、問題に関する通知を発行し、ゼロ以外のコードで終了します。
target-dir
文字列
ファイルをコピーするディレクトリで、Cordovaプロジェクトのルートからの相対パスです。実際には、Javaベースのプラットフォームで最も重要であり、com.alunny.fooパッケージのファイルはcom/alunny/fooディレクトリ内に配置する必要があります。ソースディレクトリが重要でないプラットフォームでは、この属性を省略する必要があります。
framework
ブール値
デフォルト: false
trueに設定すると、指定されたファイルもプロジェクトのフレームワークとして追加されます。
compiler-flags
文字列
設定されている場合、特定のソースファイルに指定されたコンパイラフラグを割り当てます。

<!-- android -->
<source-file src="src/android/Foo.java" target-dir="src/com/alunny/foo" />
<!-- ios -->
<source-file src="src/ios/CDVFoo.m" />
<source-file src="src/ios/someLib.a" framework="true" />
<source-file src="src/ios/someLib.a" compiler-flags="-fno-objc-arc" />

header-file

これは<source-file>要素に似ていますが、ソースファイル、ヘッダー、リソースを区別するiOSやAndroidなどのプラットフォーム専用です。

属性 説明
src
文字列
必須
plugin.xmlからのファイルの相対位置。srcファイルが見つからない場合、CLIはインストールを停止して元に戻し、問題に関する通知を発行し、ゼロ以外のコードで終了します。
target-dir
文字列
ファイルをコピーするディレクトリで、Cordovaプロジェクトのルートからの相対パスです。
type
文字列
この値がBridgingHeaderの場合、ファイルはBridging-Header.hにインポートされ、Swiftプログラムから呼び出すことができます。

iOSの場合

<header-file src="CDVFoo.h" />
<header-file src="CDVSomeHeader.h" type="BridgingHeader" />

resource-file

これは<source-file>要素に似ていますが、ソースファイル、ヘッダー、リソースを区別するiOSやAndroidなどのプラットフォーム専用です。

属性 説明
src
文字列
必須
plugin.xmlからのファイルの相対位置。srcファイルが見つからない場合、CLIはインストールを停止して元に戻し、問題に関する通知を発行し、ゼロ以外のコードで終了します。
target
文字列
ファイルがコピーされるディレクトリのパス。

Androidの例

<resource-file src="FooPluginStrings.xml" target="res/values/FooPluginStrings.xml" />

config-file

変更するXMLベースの設定ファイル、そのドキュメント内での変更場所、変更内容を識別します。この要素で変更テスト済みのファイルタイプは、xmlファイルとplistファイルです。config-file要素では、XMLドキュメントツリーに新しい子要素を追加することしかできません。子要素は、対象ドキュメントに挿入されるXMLリテラルです。

属性 説明
target
文字列
変更するファイルと、Cordovaプロジェクトのルートからの相対パス。指定されたファイルが存在しない場合、ツールは設定変更を無視してインストールを続行します。
ターゲットにはワイルドカード(*)要素を含めることができます。この場合、CLIはプロジェクトディレクトリ構造を再帰的に検索し、最初のマッチを使用します。
iOSでは、プロジェクトディレクトリルートからの設定ファイルの場所は不明なため、config.xmlのターゲットを指定すると、cordova-ios-project/MyAppName/config.xmlに解決されます。
parent
文字列
設定ファイルに追加する要素の親を参照するXPathセレクタ。絶対セレクタを使用する場合は、ワイルドカード(*)を使用してルート要素を指定できます(例:/*/plugins)。セレクタが指定されたドキュメントの子に解決されない場合、ツールはインストールプロセスを停止して元に戻し、警告を発行し、ゼロ以外のコードで終了します。
plistファイルの場合、parentは指定されたXMLを挿入する親キーを決定します。
after
文字列
XMLスニペットを追加する優先順位付きの承認済み兄弟リスト。XML要素の厳密な順序付けが必要なファイルでの変更を指定するのに役立ちます。

XMLの場合

<config-file target="AndroidManifest.xml" parent="/manifest/application">
    <activity android:name="com.foo.Foo" android:label="@string/app_name">
        <intent-filter>
        </intent-filter>
    </activity>
</config-file>

plistの場合

<config-file target="*-Info.plist" parent="CFBundleURLTypes">
    <array>
        <dict>
            <key>PackageName</key>
            <string>$PACKAGE_NAME</string>
        </dict>
    </array>
</config-file>

edit-config

config-fileと同様に、edit-configは、変更するXMLベースの設定ファイル、そのドキュメント内での変更場所、変更内容を識別します。edit-configは、XMLドキュメントツリーに新しい子要素を追加するのではなく、XML要素の属性を変更します。属性変更の種類を決定する2つのモード、mergeまたはoverwriteがあります。edit-configには1つの子要素があり、その子要素には追加する属性が含まれます。

属性 説明
file
文字列
変更するファイルと、Cordovaプロジェクトのルートからの相対パス。指定されたファイルが存在しない場合、ツールは設定変更を無視してインストールを続行します。
ターゲットにはワイルドカード(*)要素を含めることができます。この場合、CLIはプロジェクトディレクトリ構造を再帰的に検索し、最初のマッチを使用します。
iOSでは、プロジェクトディレクトリルートからの設定ファイルの場所は不明なため、config.xmlのターゲットを指定すると、cordova-ios-project/MyAppName/config.xmlに解決されます。
target
文字列
属性変更を行う対象要素を参照するXPathセレクタ。絶対セレクタを使用する場合は、ワイルドカード(*)を使用してルート要素を指定できます(例:/*/plugins)。セレクタが指定されたドキュメントの子に解決されない場合、ツールはインストールプロセスを停止して元に戻し、警告を発行し、ゼロ以外のコードで終了します。
mode
文字列
属性変更の種類を決定するモード。
merge - 指定された属性を対象要素に追加します。指定された属性が対象要素に既に存在する場合は、属性値を置き換えます。
overwrite - 対象要素のすべての属性を指定された属性で置き換えます。

<!-- plugin-1 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="16" android:maxSdkVersion="23" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
    <activity android:name="MainActivity" android:label="NewLabel" android:configChanges="orientation|keyboardHidden" />
</edit-config>

plugin-1を追加する前のAndroidManifest.xml

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            ...
        </activity>
    ...
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" />
</manifest>

plugin-1を追加した後のAndroidManifest.xml

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:maxSdkVersion="23" android:minSdkVersion="16" android:targetSdkVersion="23" />
</manifest>

edit-configの競合の管理

複数のプラグインが同じ属性を変更することはできません。アプリケーションに問題が発生する可能性があるためです。エラーが発生し、プラグインのインストールは失敗します。プラグインを追加する前に、競合するedit-configタグを解決する必要があります。競合するタグを修正して競合を解決し、更新されたプラグインを削除して再追加します。

競合があってもプラグインをインストールする必要があると確信しているユーザー向けにオプションがあります。cordova plugin addでは--forceフラグを使用できます。プラグインを強制的に追加すると、他のプラグインの競合する変更が元に戻され、問題なく追加できます。アプリケーションが期待通りに動作しなくなる可能性があるため、--forceは注意して使用する必要があります。

プラグインが予期せぬ状態になった場合は、すべてのプラグインを削除して再追加します。

上記のplugin-1は既にインストールされていると仮定します。以下のplugin-2をインストールしようとすると、plugin-1が既にAndroidManifest.xmlのuses-sdk要素を変更しているため、エラーが発生します。

<!-- plugin-2 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="15" />
</edit-config>

plugin-2を追加する方法はいくつかあります。

競合を解決する1つの方法は、plugin-2からedit-configタグを削除し、plugin-1のedit-configタグにマージすることです(plugin-1にこの変更に問題がないと仮定します)。両方のプラグインを削除し、これらの変更を加えて再追加します。今度はplugin-2をクリーンに追加できるはずです。

plugin-2からedit-configを削除し、plugin-1にマージする

<!-- plugin-1 -->
<edit-config file="AndroidManifest.xml" target="/manifest/uses-sdk" mode="merge">
    <uses-sdk android:minSdkVersion="15" android:maxSdkVersion="23" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/manifest/application/activity[@android:name='MainActivity']" mode="overwrite">
    <activity android:name="MainActivity" android:label="NewLabel" android:configChanges="orientation|keyboardHidden" />
</edit-config>

両方のプラグインを削除して再追加した後のAndroidManifest.xml

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:maxSdkVersion="23" android:minSdkVersion="15" android:targetSdkVersion="23" />
</manifest>

plugin-2を追加する2番目の方法は、--forceを使用してプラグインを追加することです。plugin-1からの競合するedit-config変更は元に戻され、plugin-2の変更が適用されます。結果のAndroidManifest.xmlには、plugin-2のuses-sdk変更とplugin-1のactivity変更が含まれます。競合していた変更はuses-sdkのみであったため、plugin-1のuses-sdk変更のみがなくなっていることに注意してください。

plugin-2を強制的に追加した後のAndroidManifest.xml

<manifest android:hardwareAccelerated="true" android:versionCode="1" android:versionName="0.0.1" package="io.cordova.hellocordova" xmlns:android="http://schemas.android.com/apk/res/android">
    ...
        <activity android:configChanges="orientation|keyboardHidden" android:label="NewLabel" android:name="MainActivity">
            ...
        </activity>
    ...
    <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="23" />
</manifest>

注: --forceで元に戻された変更は完全に失われます。強制的に追加されたプラグインを削除した後も、再表示されません。元に戻された変更が必要な場合は、関連するすべてのプラグインを削除して再追加する必要があります。

plugins-plist

iOS Cordovaプロジェクトの正しいAppInfo.plistファイルに追加するキーと値を指定します。これはcordova-ios 2.2.0以前のみに適用されるため、非推奨です。新しいバージョンのCordovaでは、<config-file>タグを使用してください。

<plugins-plist key="Foo" string="CDVFoo" />

lib-file

<lib-file>要素は、プロジェクトの**libsディレクトリ**に**.jar**ファイルをインストールするために使用できます。

属性 説明
src
文字列
必須
plugin.xmlからの.jarファイルの場所。srcファイルが見つからない場合、CLIはインストールを停止して元に戻し、問題に関する警告を発行し、ゼロ以外のコードで終了します。

<lib-file src="src/android/libs/foobar.jar"/>

framework

プラグインが依存するフレームワーク(通常はOS/プラットフォームの一部)を識別します。

属性 説明
src
文字列
必須
システムフレームワークの名前、またはプラグインファイルの一部として含まれるフレームワークへの相対パス。
custom
ブール値
フレームワークがプラグインファイルの一部として含まれているかどうかを示します。
weak
ブール値
デフォルト: false
フレームワークを弱リンクするかどうかを示します。
type
文字列
追加するフレームワークの種類を示します。
parent
文字列
デフォルト: .
参照を追加するサブプロジェクトを含むディレクトリへの相対パスを設定します。デフォルトの.は、アプリケーションプロジェクトを意味します。
spec
文字列
type="podspec"とペアで使用され、インストールするCocoaPodのspec文字列です(静的ライブラリのみ)。CocoaPodのサポートは、cordova-ios 4.3.0およびcordova-cli 6.4.0でのみ存在します。プラグインでは、適切な<engine>タグとpackage.json依存関係を追加して、下位互換性を確保してください。
embed
ブール値
デフォルト: false
custom="true"とペアで使用され、カスタムフレームワークをアプリバンドルに埋め込んで、実行時に動的にロードできるようにする場合(動的フレームワーク)にtrueに設定します。これにより、カスタムフレームワークはXcodeプロジェクト設定の「埋め込みバイナリ」セクションに配置されます。cordova-ios@4.4.0cordova-cli@7.0.0の組み合わせでのみサポートされています。
link
ブール値
デフォルト: !embed
フレームワークをリンクする場合は、これをtrueに設定します。これにより、フレームワークはXcodeプロジェクト設定の「ライブラリとリンクするバイナリ」セクションに配置されます。

iOSの場合

<framework src="libsqlite3.dylib" />
<framework src="social.framework" weak="true" />
<framework src="relative/path/to/my.framework" custom="true" />
<framework src="GoogleCloudMessaging" type="podspec" spec="~> 1.2.0" />

Android(cordova-android@4.0.0以降)では、フレームワークタグを使用してMaven依存関係を含めるか、バンドルされたライブラリプロジェクトを含めることができます。

<!-- Depend on latest version of GCM from play services -->
<framework src="com.google.android.gms:play-services-gcm:+" />
<!-- Depend on v21 of appcompat-v7 support library -->
<framework src="com.android.support:appcompat-v7:21+" />
<!-- Depend on library project included in plugin -->
<framework src="relative/path/FeedbackLib" custom="true" />

フレームワークを使用して、カスタム.gradleファイルをメインプロジェクトのbuild.gradleファイルにサブインクルードすることもできます。

<framework src="relative/path/rules.gradle" custom="true" type="gradleReference" />

podspec

プラグインが依存する依存関係を提供するCocoaPods Podfileを識別します。

この要素には、<config>タグと<pods>タグが含まれています。

config

<config>要素は、CocoaPodsのspecを取得するソースURLを識別します。

この要素には、1つ以上の<source>タグが含まれています。

source

属性 説明
url
文字列
必須
pods specのソースURL。

pods

<pods>要素はCocoaPodsライブラリを識別します。

この要素には、CocoaPodsライブラリごとに<pod>タグが含まれています。

属性 説明
use-frameworks
ブール値
デフォルト: false
trueの場合、use_frameworks!属性がPodfileで宣言されます。
inhibit-all-warnings
ブール値
デフォルト: false
trueの場合、inhibit_all_warnings!属性がPodfileで宣言されます。

pod

属性(type) 説明
name
文字列
必須
Pod名
spec
文字列
Pod spec
swift-version
文字列
CocoaPodsライブラリのSwiftバージョンを指定します。
git
文字列
Podのgitオプション。
branch
文字列
Podのbranchオプション。
tag
文字列
Podのtagオプション。
commit
文字列
Pod の commit オプション。
設定
文字列
Pod の configurations オプション。複数の値を指定する場合は、コンマで区切ってください。
http
文字列
Pod の http オプション。
パス
文字列
Pod の path オプション。ローカルファイルシステムにある Pod を指定します。
オプション
文字列
Pod オプションを raw 形式で宣言します。宣言した場合、他の Pod オプションは上書きされます。
例: options=":git => 'https://github.com/Alamofire/Alamofire.git', :tag => '3.1.1'"

    <podspec>
      <config>
        <source url="https://github.com/brightcove/BrightcoveSpecs.git" />
        <source url="https://github.com/CocoaPods/Specs.git"/>
      </config>
      <pods use-frameworks="true">
        <pod name="AFNetworking" spec="~> 3.2" />
        <pod name="SDWebImage" spec="~> 4.0" />
        <pod name="Eureka" swift-version="3.3" />
        <pod name="AcknowList" />
        <pod name="Brightcove-Player-Core" spec="~> 6.3.4" />
        <pod name="Foobar1" git="git@github.com:hoge/foobar1.git" configurations="Debug"/>
        <pod name="Foobar2" git="git@github.com:hoge/foobar2.git" branch="next" configurations="Debug,Release"/>
        <pod name="FoobarSwift" swift-version="4.1" />
      </pods>
    </podspec>

この例は Podfile を生成します。

# DO NOT MODIFY -- auto-generated by Apache Cordova
source 'https://github.com/brightcove/BrightcoveSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'HelloCordova' do
	project 'HelloCordova.xcodeproj'
	pod 'AFNetworking', '~> 3.2'
	pod 'SDWebImage', '~> 4.0'
	pod 'Eureka'
	pod 'AcknowList'
	pod 'Brightcove-Player-Core', '~> 6.3.4'
	pod 'Foobar1', :git => 'git@github.com:hoge/foobar1.git', :configurations => ['Debug']
	pod 'Foobar2', :branch => 'next', :git => 'git@github.com:hoge/foobar2.git', :configurations => ['Debug','Release']
	pod 'FoobarSwift'
end

情報

ユーザーに提供される追加情報。簡単に自動化できない、またはCLIの範囲外の追加手順が必要な場合に役立ちます。このタグの内容は、CLIがプラグインをインストールするときに表示されます。

<info>
You need to install __Google Play Services__ from the `Android Extras` section using the Android SDK manager (run `android`).

You need to add the following line to the `local.properties`:

android.library.reference.1=PATH_TO_ANDROID_SDK/sdk/extras/google/google_play_services/libproject/google-play-services_lib
</info>

フック

特定のアクションが発生したときにCordovaによって呼び出されるカスタムスクリプトを表します(例:プラグインの追加後、またはプラットフォームの準備ロジックが呼び出された後)。デフォルトのCordova機能を拡張する必要がある場合に役立ちます。詳細については、Hooks ガイドを参照してください。

<hook type="after_plugin_install" src="scripts/afterPluginInstall.js" />

uses-permission

場合によっては、プラグインでターゲットアプリケーションに依存する設定変更を行う必要がある場合があります。たとえば、AndroidでC2DMに登録するには、パッケージIDがmy-app-idであるアプリには、次のような権限が必要です。

<uses-permission android:name="my-app-id.permission.C2D_MESSAGE"/>

plugin.xmlファイルから挿入されるコンテンツが事前にわからないような場合、変数はドル記号の後に大文字、数字、またはアンダースコアを続けることで示すことができます。上記の例では、plugin.xmlファイルにはこのタグが含まれます。

<uses-permission android:name="$PACKAGE_NAME.permission.C2D_MESSAGE"/>

CLIは変数参照を指定された値で置き換え、見つからない場合は空文字列で置き換えます。変数参照の値は検出される場合(この場合はAndroidManifest.xmlファイルから)や、ツールのユーザーによって指定される場合があります。正確なプロセスは、特定のツールによって異なります。

Plugmanは、プラグインに必要な変数をユーザーに指定するよう要求できます。たとえば、C2MとGoogleマップのAPIキーはコマンドライン引数として指定できます。

plugman --platform android --project /path/to/project --plugin name|git-url|path --variable API_KEY=!@CFATGWE%^WGSFDGSDFW$%^#$%YTHGsdfhsfhyer56734

$PACKAGE_NAMEのように、特定の変数名は予約する必要があります。これは、パッケージの一意の識別子で、リバースドメインスタイルを使用し、iOSのCFBundleIdentifierまたはAndroidManifest.xmlファイルの最上位manifest要素のpackage属性に対応します。

preference

前のセクションで見たように、プラグインによっては、ユーザーが変数の値を指定する必要がある場合があります。これらの変数を必須にするには、<platform>タグに<preference>タグを含める必要があります。CLIは、これらの必須のプリファレンスが渡されているかどうかを確認します。渡されていない場合は、変数の渡し方をユーザーに警告し、ゼロ以外のコードで終了します。プリファレンスは、$PREFERENCE_NAME構文を使用して、plugin.xml内の他の場所で参照できます。

属性 説明
name
文字列
必須
変数の名前。大文字、数字、およびアンダースコアのみを使用できます。
デフォルト
文字列
変数のデフォルト値。存在する場合、その値が使用され、ユーザーが値を入力しなかった場合でもエラーは発生しません。

<preference name="MY_CUSTOM_STRING" default="default-value" />

<!--
    The preference may be referenced elsewhere in plugin.xml like so:
-->
<config-file target="./res/values/strings.xml" parent="/resources">
    <string name="custom">$MY_CUSTOM_STRING</string>
</config-file>