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つのプラットフォームを追加:
  •  cordova platform add  ios  android
    
  • インストール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のカード:
  • #    
    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ラベルを追加してください
    ここにはいくつかの定義がありますが、理解したほうがいいです.
  • 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
    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)
    四.ここまで来れば考えを整理することができる.
  • js呼び出し-->cordova.plugins.MyMath.plus(arg0, success, error)
  • cordovaのインタフェースexec-->exec(success,error,「MyMath」,「Plus」,arg 0);
  • 各プラットフォーム(iosまたはAndroid)下のクラスMyMathを実装するために下位層を呼び出す.

  • 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
    使用plugman 创建一个自己的cordova插件_第1张图片
    次のように変更します.
    使用plugman 创建一个自己的cordova插件_第2张图片
    ios
    cordovaプロジェクトでplatforms/ios/HelloCordovaをダブルクリックします.xcodeproj、xcodeプロジェクトを開き、MyMathを編集します.m
    使用plugman 创建一个自己的cordova插件_第3张图片
    次のように変更します.
    使用plugman 创建一个自己的cordova插件_第4张图片
    ここではA-B>0を規定し,最下位は成功した結果を返し,A-B<=0は失敗したヒントA+B<100は成功した結果を返し,A+B>=100は失敗したヒントを返す.
    六.プラグインのテスト
    js呼び出しテスト
    index.js
    使用plugman 创建一个自己的cordova插件_第5张图片
    index.html
    使用plugman 创建一个自己的cordova插件_第6张图片
  • cordovaディレクトリABCDの下で、wwwの下indexをそれぞれ置換.htmlとjs/index.js
  • cordova prepareの実行
  • Android IDE工事で直営.
  • xcodeで直接運転する.

  • 最終テストのプロジェクトダウンロードリンク:http://download.csdn.net/detail/b2259909/9625520