Edited at

Cordova plugin.xmlの内容について

More than 1 year has passed since last update.


Cordovaの作成時に文献が無くて困って調査したメモ

会社のプロジェクトで、Cordovaのプラグインを”使う”のではなく、”作る”必要が出てきて、色々調査をしましたが、最終的にはTryAndErrorで解決した結果を纏めています。

基本的に、Android環境でしか評価していませんが、志はiPhoneもWindowsも変わらないと思うので、同じようなやり方で進められるでしょう。(無保証)


Cordovaの構成

CordovaでPluginを使った場合の基本の構成は、以下の図のようになります。



今更ながらな話ですが、Cordovaを使った構成で、Nativeなリソースを使った処理がしたい場合など、こんなことをしないといけません。

問題となるのは、Pluginとして作ったものを配置するコマンド「cordova plugin add (Plugin名称)」の定義ファイルである「plugin.xml」です。

それでは、実際のXMLですが、次のような感じです。


plugin.xml

<?xml version='1.0' encoding='utf-8'?>

<plugin id="cordova-plugin-nyanko" version="0.1.0" xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<name>cordova-plugin-helloworld</name>
<js-module name="nyanko-js" src="www/nyanko.js">
<clobbers target="nyanko" />
</js-module>
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="nyanko-java">
<param name="android-package" value="ko.nyan.nyanko.Nyanko"/>
</feature>
</config-file>
<source-file src="src/Nyanko.java" target-dir="src/ko.nyan/nyanko/"/>
</platform>
</plugin>

直感でわかりそ~なところと、分からないところがります。


xmlns,xmlins:android

私の中では、オマジナイです。


id

一番大事かも。Cordova内部では、このキーを元に管理してるみたいです。


version

自己管理用です。制御は掛かりません。


name

人にとって大事な項目。cordova plugin lsコマンドでDescription的に表示されます。


description

細かい説明です。これって、どこかでみるところあるのかなー。私はみたことがない。。。


js-module


src

IFのJavaをどこに保存するかです。

src側が自分で作ったプラグインの置き場所(ローカルのファイルとか、GitにおいてるんだったらGitのパスとか)からの相対パスです。


name

ココに付けた名前がCordova内部での識別用の記号としてdefineされます。


clobbers

設定した値でjsのWindowオブジェクトの子要素としてアクセス出来るようになります。例えば、上記の例で、行くと、windows.nyankoとかでアクセスが出来るようになるってことですね。

逆に言えば、JavaScriptでWindowオブジェクトの予約語を設定してはイケナイということです。ちなみに、私は位置情報関連のプラグインを作成してた時にlocationて名付けて痛い目見ました。


platform name

ターゲット端末ですね。今回はandroidのみです。


config-file

Androidのconfig.xmlに、今回追加するconfig.xmlに追記するための宣言です。

今回追加する、Java側のクラス情報を記載すれば良いはずです。


source-file

実際のJavaファイルをどこからどこにコピーするかですね。

js-moduleと考え方は一緒です。

srcのファイルをdstにコピーします。

srcのディレクトリは、最終的な展開先と同じくパッケージ名の設定にするのも有るみたいですが、個人的には短い方が間違いもないので好みです。

で、各々の連携はこんな感じになります。