plugmanを使用して独自のcordovaプラグインを作成する
8799 ワード
cordova作成プラグイン
ヒント:
カスタムプラグインを追加エラーが発生した場合:cordova plugin addがエラーを報告します「Error:Invalid Plugin!D:/*/**needs a valid package.json」plugman createpackagejson[プラグインパス]を使用してください
一.前提:cordovaインストールOKここのマニュアルに従ってcordovaをインストールする:http://cordova.apache.org/#getstarted 自分でプロジェクトを作った: cordova create ABCD 工程目録入り: cd ABCD 2つのプラットフォームを追加: インストールplugman: npm install -g plugman デバイスプラグインをインストールしてみる: cordova plugin add cordova-plugin-device プラグインの削除: cordova plugin rm cordova-plugin-device
以上、Androidとiosの開発環境が必要です
試験工事が完成した
2.プラグインテンプレートの作成にplugmanを使用する例えばMyMath、ID SimpleMath、バージョン番号1.0というプラグインを作成する.0のカード: 生成されたプラグインファイル構造:
プラグインテンプレートの作成が完了しました
3.テンプレートの変更
見てごらんxmlの内容
ここではプレゼンテーションをするだけで、他のファイルはありません.だからconfig-fileラベルをカスタマイズしないで、デフォルトでいいです.AndroidのAndroidマニフェストが必要ならxmlは変更され、このラベルでできます.主に権限の申明を増やし、activity、receiverなどを登録します.
この文書はAndroidプラットフォームでしか修正されていません.
source-file src=“src/android/MyMath.java” target-dir=“src/SimpleMath/MyMath”
次のようになります.
source-file src=“src/android/MyMath.java” target-dir=“src/SimpleMath”
なぜここを修正するのか:修正しなければ、MyMath.JAvaはsrc/SimpleMath/MyMathというパッケージにコピーします.などと対応できないので、これはplugmanのバグだろう.
Androidプラットフォームの下でpluginxmlの下:
param name=“android-package” value=“SimpleMath.MyMath”
Androidプラットフォームの下の最下位実装パッケージ名を定義する.クラス:SimpleMathはパッケージ名、MyMathはクラス名が対応していない場合は、パスまたはxmlを変更します.
その後、他のクラスファイルが開発された場合、so,framework.公式のプラグインを参照してxmlラベルを追加してください
ここにはいくつかの定義がありますが、理解したほうがいいです.clobbers:とても重要です.フロントエンドエンジニアはこのclobbersを使ってwww/MyMathを呼び出します.jsの公開方法 featureタグ定義(サービス名)name param name="ios-package"value="MyMath"iOSプラットフォームの下の実装を定義***クラス名:MyMath param name="android-package"value="SimpleMath.MyMath"Androidプラットフォームの下で実装パッケージ名を定義する.クラス:SimpleMath.MyMath
見てみろjs
加算と減算の2つの方法が実装されると仮定します.ここで変更します.変更後:
注意:このcordovaメソッドexecのパラメータは、それぞれ次のとおりです.
【success】:成功コールバック【error】:失敗コールバック【MyMath】:サービス名(plugin.xmlで定義されたサービス名と一致しなければならない)【Plus】:Actionアクション名.(アクション文字列による呼び出しを下位で実現する方法)【arg 0】:パラメータは配列でなければならない.jsonのデータ:[{"key":"value","key":"value":"value"}]------------------[value 1],[value 2],[value 3],...]
もう一度説明します:このjsにはmoduleがあります.exports、フロントエンド呼び出し時に直接使うと思います
MYMATHFUNC.plus(arg0, success, error)
.しかし、テストではpluginを使うことがわかりました.xml定義のclobbers:
cordova.plugins.MyMath.plus(arg0, success, error)
四.ここまで来れば考えを整理することができる.js呼び出し-->cordova.plugins.MyMath.plus(arg0, success, error) cordovaのインタフェースexec-->exec(success,error,「MyMath」,「Plus」,arg 0); 各プラットフォーム(iosまたはAndroid)下のクラスMyMathを実装するために下位層を呼び出す.
Androidで呼び出されます
このときパラメータString action="Plus"であり,argsからパラメータを得ることができる.
jsパラメータは、[[value 1]、[10]、[value 3]、[...]の場合に使用できます.
最初のパラメータ:args.getString(0)2番目のパラメータ:args.getInt(1)3番目のパラメータ:args.getString(2)…
jsパラメータは[{"key":"value","key":"value"}]の場合、次のように使用できます.
JSONArray jsonarray = new JSONArray(args.getString(0)); JSONObject json = jsonarray.getJSONObject(0);//キーに基づいて値をとる
iosで呼び出されます
-(void)Plus:(CDVInvokedUrlCommand*)command
パラメータはcommandによって取得されます.
コールバックID:command.callbackId
jsパラメータは、[[value 1]、[10]、[value 3]、[...]の場合に使用できます.
1番目のパラメータ:[command.arguments objectAtIndex:0]2番目のパラメータ:[command.arguments objectAtIndex:1]//3番目のパラメータ:[command.arguments objectAtIndex:2]
jsパラメータは[{"key":"value","key":"value"}]の場合、次のように使用できます.
NSDictionary *dict = [command.arguments objectAtIndex:0];
最後にプラグインディレクトリで使用します.
sudo plugman createpackagejson . packageを生成できます.json、プラグインのインストール時に現れるのを防止します:Error:Invalid Plugin!xxxxx needs a valid package.json
五.オリジナルコード実装
次に、この最下位のコードを実現するために、このプラグインを前に作成したプロジェクトに追加します.
cd ABCD ~$ cordova plugin add …/MyMath Installing “SimpleMath” for android Installing “SimpleMath” for ios
Android
IDEを開き、cordovaエンジニアリングにplatforms/androidをインポートします.編集java
次のように変更します.
ios
cordovaプロジェクトでplatforms/ios/HelloCordovaをダブルクリックします.xcodeproj、xcodeプロジェクトを開き、MyMathを編集します.m
次のように変更します.
ここではA-B>0を規定し,最下位は成功した結果を返し,A-B<=0は失敗したヒントA+B<100は成功した結果を返し,A+B>=100は失敗したヒントを返す.
六.プラグインのテスト
js呼び出しテスト
index.js
index.html
cordovaディレクトリABCDの下で、wwwの下indexをそれぞれ置換.htmlとjs/index.js cordova prepareの実行 Android IDE工事で直営. xcodeで直接運転する.
最終テストのプロジェクトダウンロードリンク:http://download.csdn.net/detail/b2259909/9625520
ヒント:
カスタムプラグインを追加エラーが発生した場合:cordova plugin addがエラーを報告します「Error:Invalid Plugin!D:/*/**needs a valid package.json」plugman createpackagejson[プラグインパス]を使用してください
一.前提:cordovaインストールOK
cordova platform add ios android
以上、Androidとiosの開発環境が必要です
試験工事が完成した
2.プラグインテンプレートの作成にplugmanを使用する
#
plugman create --name MyMath --plugin_id SimpleMath --plugin_version 1.0.0
#
cd MyMath
#plugin.xml Android
plugman platform add --platform_name android
#plugin.xml iOS
plugman platform add --platform_name ios
|MyMath
----|src
---------|android
--------------MyMath.java
---------|ios
--------------MyMath.m
----|www
---------|MyMath.js
----plugin.xml
プラグインテンプレートの作成が完了しました
3.テンプレートの変更
見てごらんxmlの内容
MyMath
ここではプレゼンテーションをするだけで、他のファイルはありません.だからconfig-fileラベルをカスタマイズしないで、デフォルトでいいです.AndroidのAndroidマニフェストが必要ならxmlは変更され、このラベルでできます.主に権限の申明を増やし、activity、receiverなどを登録します.
この文書はAndroidプラットフォームでしか修正されていません.
source-file src=“src/android/MyMath.java” target-dir=“src/SimpleMath/MyMath”
次のようになります.
source-file src=“src/android/MyMath.java” target-dir=“src/SimpleMath”
なぜここを修正するのか:修正しなければ、MyMath.JAvaはsrc/SimpleMath/MyMathというパッケージにコピーします.などと対応できないので、これはplugmanのバグだろう.
Androidプラットフォームの下でpluginxmlの下:
param name=“android-package” value=“SimpleMath.MyMath”
Androidプラットフォームの下の最下位実装パッケージ名を定義する.クラス:SimpleMathはパッケージ名、MyMathはクラス名が対応していない場合は、パスまたはxmlを変更します.
その後、他のクラスファイルが開発された場合、so,framework.公式のプラグインを参照してxmlラベルを追加してください
ここにはいくつかの定義がありますが、理解したほうがいいです.
見てみろjs
var exec = require('cordova/exec');
exports.coolMethod = function(arg0, success, error) {
exec(success, error, "MyMath", "coolMethod", [arg0]);
};
加算と減算の2つの方法が実装されると仮定します.ここで変更します.変更後:
var exec = require('cordova/exec');
var myMathFunc = function(){};
myMathFunc.prototype.plus = function(arg0, success, error) {
exec(success, error, "MyMath", "Plus", arg0);
};
myMathFunc.prototype.minus = function(arg0, success, error) {
exec(success, error, "MyMath", "Minus", arg0);
};
var MYMATHFUNC = new myMathFunc();
module.exports = MYMATHFUNC;
注意:このcordovaメソッドexecのパラメータは、それぞれ次のとおりです.
【success】:成功コールバック【error】:失敗コールバック【MyMath】:サービス名(plugin.xmlで定義されたサービス名と一致しなければならない)【Plus】:Actionアクション名.(アクション文字列による呼び出しを下位で実現する方法)【arg 0】:パラメータは配列でなければならない.jsonのデータ:[{"key":"value","key":"value":"value"}]------------------[value 1],[value 2],[value 3],...]
もう一度説明します:このjsにはmoduleがあります.exports、フロントエンド呼び出し時に直接使うと思います
MYMATHFUNC.plus(arg0, success, error)
.しかし、テストではpluginを使うことがわかりました.xml定義のclobbers:
cordova.plugins.MyMath.plus(arg0, success, error)
四.ここまで来れば考えを整理することができる.
Androidで呼び出されます
public boolean execute(String action, CordovaArgs args,
CallbackContext mCallbackContext) throws JSONException
このときパラメータString action="Plus"であり,argsからパラメータを得ることができる.
jsパラメータは、[[value 1]、[10]、[value 3]、[...]の場合に使用できます.
最初のパラメータ:args.getString(0)2番目のパラメータ:args.getInt(1)3番目のパラメータ:args.getString(2)…
jsパラメータは[{"key":"value","key":"value"}]の場合、次のように使用できます.
JSONArray jsonarray = new JSONArray(args.getString(0)); JSONObject json = jsonarray.getJSONObject(0);//キーに基づいて値をとる
iosで呼び出されます
-(void)Plus:(CDVInvokedUrlCommand*)command
パラメータはcommandによって取得されます.
コールバックID:command.callbackId
jsパラメータは、[[value 1]、[10]、[value 3]、[...]の場合に使用できます.
1番目のパラメータ:[command.arguments objectAtIndex:0]2番目のパラメータ:[command.arguments objectAtIndex:1]//3番目のパラメータ:[command.arguments objectAtIndex:2]
jsパラメータは[{"key":"value","key":"value"}]の場合、次のように使用できます.
NSDictionary *dict = [command.arguments objectAtIndex:0];
最後にプラグインディレクトリで使用します.
sudo plugman createpackagejson . packageを生成できます.json、プラグインのインストール時に現れるのを防止します:Error:Invalid Plugin!xxxxx needs a valid package.json
五.オリジナルコード実装
次に、この最下位のコードを実現するために、このプラグインを前に作成したプロジェクトに追加します.
cd ABCD ~$ cordova plugin add …/MyMath Installing “SimpleMath” for android Installing “SimpleMath” for ios
Android
IDEを開き、cordovaエンジニアリングにplatforms/androidをインポートします.編集java
次のように変更します.
ios
cordovaプロジェクトでplatforms/ios/HelloCordovaをダブルクリックします.xcodeproj、xcodeプロジェクトを開き、MyMathを編集します.m
次のように変更します.
ここではA-B>0を規定し,最下位は成功した結果を返し,A-B<=0は失敗したヒントA+B<100は成功した結果を返し,A+B>=100は失敗したヒントを返す.
六.プラグインのテスト
js呼び出しテスト
index.js
index.html
最終テストのプロジェクトダウンロードリンク:http://download.csdn.net/detail/b2259909/9625520