Android
Plugin
Cordova

Cordova plugin.xmlの内容について

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

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

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

Cordovaの構成

CordovaでPluginを使った場合の基本の構成は、以下の図のようになります。
CordovaPlugin.png
今更ながらな話ですが、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のディレクトリは、最終的な展開先と同じくパッケージ名の設定にするのも有るみたいですが、個人的には短い方が間違いもないので好みです。
で、各々の連携はこんな感じになります。

CordovaFileCoop.png