How to make cordova 3.X plugin (only android)

|

1. 플러그인 저장폴더 만들기(저장소)



다음과 같이 폴더를 구성합니다.



이 연습용 플러인 이름은 echo 입니다.


이렇게 만들어진 플러그인은 echo 폴더를 그대로 업로드 하는 방식으로 웹서버나 git을 통해서 간단하게 배포될수있습니다.


플러그인전체 구성을 정의해주는 plugin.xml 파일을 만들어 보겠습니다.


<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"

        xmlns:rim="http://www.blackberry.com/ns/widgets"

        xmlns:android="http://schemas.android.com/apk/res/android"

        id="플러그인고유식별자"

        version="0.0.1">

    <name>플러그인이름</name>

    <description>플러그인설명</description>

    <license>Apache 2.0</license>

    <keywords>플러그인 검섹키워드</keywords>


    <!-- android -->

    <platform name="android">

        <config-file target="res/xml/config.xml" parent="/*">

            <feature name="모듈이름(자바클래스이름)" >

                <param name="android-package" value="패키지이름을포함한모듈이름"/>

            </feature>

        </config-file>


        <source-file src="소스파일경로(pluin.xml파일이있는폴더기준)" target-dir="타겟경로(코도바프로잭트루트기준)" />

    </platform>

</plugin>


echo 플러그인을 위한 pulgin.xml 을 다음과 같이 만들어 보았습니다.


<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"

        xmlns:rim="http://www.blackberry.com/ns/widgets"

        xmlns:android="http://schemas.android.com/apk/res/android"

        id="com.gunpower.cordova.echo"

        version="0.0.1">

    <name>echo</name>

    <description>Cordova echo Plugin</description>

    <license>Apache 2.0</license>

    <keywords>cordova,echo</keywords>


    <!-- android -->

    <platform name="android">

        <config-file target="res/xml/config.xml" parent="/*">

            <feature name="Echo" >

                <param name="android-package" value="com.gunpower.cordova.echo.Echo"/>

            </feature>

        </config-file>


        <source-file src="src/android/Echo.java" target-dir="src/com/gunpower/cordova/echo" />

    </platform>

</plugin>



pluign.xml 파일에서 정의한 대로 src/android/Echo.java 경로로 파일을 작성합니다.


package com.gunpower.cordova.echo;


import org.apache.cordova.CallbackContext;

import org.apache.cordova.CordovaArgs;

import org.apache.cordova.CordovaInterface;

import org.apache.cordova.CordovaPlugin;

import org.apache.cordova.CordovaWebView;

import org.json.JSONArray;

import org.json.JSONException;


import android.util.Log;


public class Echo extends CordovaPlugin {

public static final String TAG = "Echo";


@Override

public void initialize(CordovaInterface cordova, CordovaWebView webView) {

// TODO Auto-generated method stub

super.initialize(cordova, webView);

Log.d(TAG, "echo pluin initialize");

}


@Override

public boolean execute(String action, String rawArgs,

CallbackContext callbackContext) throws JSONException {

// TODO Auto-generated method stub

return super.execute(action, rawArgs, callbackContext);

}


@Override

public boolean execute(String action, JSONArray args,

CallbackContext callbackContext) throws JSONException {

// TODO Auto-generated method stub

final String result = args.isNull(0) ? null : args.getString(0);

        

        if ("echo".equals(action)) {

        //인자 다시 자바스크립트로 전달하기 

            callbackContext.success(result);

            return true;

        } 

        

return super.execute(action, args, callbackContext);

}


@Override

public boolean execute(String action, CordovaArgs args,

CallbackContext callbackContext) throws JSONException {

// TODO Auto-generated method stub

return super.execute(action, args, callbackContext);

}


}



이상으로 플러그인 저장소가 만들어졌습니다.


2. 프로잭트에 플러그인 설치


cordova create myapp com.gbox.myapp myapp

cordova platform add android


myapp 으로 코도바 프로잭트를 만들고 플랫폼으로 안드로이드를 추가 합니다.




커멘드라인툴로 다음과같이 명령어를 주어서 플러그인을 myapp 프로잭트에 추가합니다.


cd myapp

cordova plugin add ../echo


3. 플러그인사용하기


cordova.exec 함수를 사용합니다.



자바스크립트쪽에서 cordova.exec 함수를 써서 Echo플러그인(service)의 echo 함수(action)를 호출하는 예 입니다.


cordova.exec(function(param) {

            console.log(param);

        }, function(err) {

            console.log('Nothing to echo.');

        }, "Echo", "echo", ['hello plugin!']);











And