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は、ターゲットプロジェクトがエンジンの制約を満たしていないプラグインに対して、ゼロ以外のコードで異常終了します。何も
注:**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.0 とcordova-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 ブール値 |
デフォルト: falsetrue の場合、use_frameworks! 属性がPodfileで宣言されます。 |
inhibit-all-warnings ブール値 |
デフォルト: falsetrue の場合、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>