如何在cordova应用程序中添加自定义cordova插件

时间:2016-12-26 10:55:31

标签: cordova cordova-plugins visual-studio-cordova

我使用plugman命令在cordova中创建插件

它创建了所需的所有必要文件。然后我在插件中添加了android平台。

然后我尝试在cordova app中添加它。我成功地添加了它,但是当我尝试构建应用程序时,它会给出以下错误

enter image description here

我做错了什么。如何在cordova app中添加我的自定义插件。

以下是.java文件的代码。

 package cordova-plugin-test-cordova-plugin;

 import org.apache.cordova.CordovaPlugin;
 import org.apache.cordova.CallbackContext;

  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
      /**
      * This class echoes a string called from JavaScript.
     */
   public class TestCordovaPlugin extends CordovaPlugin {

   @Override
   public boolean execute(String action, JSONArray args, CallbackContext     callbackContext) throws JSONException {
    if (action.equals("coolMethod")) {
        String message = args.getString(0);
        this.coolMethod(message, callbackContext);
        return true;
    }
    return false;
}

private void coolMethod(String message, CallbackContext callbackContext) {
    if (message != null && message.length() > 0) {
        callbackContext.success(message);
    } else {
        callbackContext.error("Expected one non-empty string argument.");
    }
}
}

这是我的plugin.xml文件:

        <?xml version='1.0' encoding='utf-8'?>
        <plugin id="cordova-plugin-test-cordova-plugin" version="0.0.1"    xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
         <name>TestCordovaPlugin</name><js-module name="TestCordovaPlugin" src="www/TestCordovaPlugin.js">
<clobbers target="cordova.plugins.TestCordovaPlugin" /></js-module><platform name="android">
  <config-file parent="/*" target="res/xml/config.xml"><feature name="TestCordovaPlugin">
    <param name="android-package" value="cordova-plugin-test-cordova-plugin.TestCordovaPlugin" />
  </feature></config-file><config-file parent="/*" target="AndroidManifest.xml"></config-file>
  <source-file src="src/android/TestCordovaPlugin.java" target-dir="src/cordova-plugin-test-cordova-plugin/TestCordovaPlugin" />
</platform>
 </plugin>

3 个答案:

答案 0 :(得分:4)

我认为你的引用中缺少java代码。要创建自定义Cordova插件,请查看here

请查看您在java文件中的包名称约定,请查看here

这里是创建插件并在离子应用程序中安装的步骤。

要检查来源和样本here

<强>命令:

  1. plugman create --name Test --plugin_id cordova.plugin.test --plugin_version 0.0.1
  2. plugman platform add --platform_name android
  3. plugman platform add --platform_name ios
  4. 离子启动IonicCordovaPluginTestApp空白
  5. (在App Dir中)离子插件添加[您的本地测试插件路径]

      

    示例:   离子插件添加/用户/工作区/测试/ CordovaPluginSampleTest /测试

  6. 离子平台添加android或ios

  7. 以下列方式更新plugin.xml文件

          <?xml version='1.0' encoding='utf-8'?>
          <plugin id="cordova.plugin.test.cordova.plugin" version="0.0.1"    xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
             <name>TestCordovaPlugin</name>
             <js-module name="TestCordovaPlugin" src="www/TestCordovaPlugin.js">
                <clobbers target="cordova.plugins.TestCordovaPlugin" />
             </js-module>
             <platform name="android">
                <config-file parent="/*" target="res/xml/config.xml">
                   <feature name="TestCordovaPlugin">
                      <param name="android-package" value="cordova.plugin.test.cordova.plugin.TestCordovaPlugin" />
                   </feature>
                </config-file>
                <config-file parent="/*" target="AndroidManifest.xml"></config-file>
                <source-file src="src/android/TestCordovaPlugin.java" target-dir="src/cordova/plugin/test/cordova/plugin/TestCordovaPlugin" />
             </platform>
          </plugin>
    

    希望这会对你有帮助!!!

答案 1 :(得分:2)

从第一行错误消息中,我认为您的java源代码中存在语法错误。您在TestCordovaPlugin.java文件的第一行中错过了分号 简单来说,我认为你在导入声明后错过了分号 解决方法是,您可以先在Cordova项目中直接修改java源代码,然后将修改同步到独立插件。

答案 2 :(得分:0)

你可以做一件事。你可以用plugman再次创建这个插件,但是使用不同的命令,即

plugman create --name AmILate --plugin_id cordovapluginamilate --plugin_version 0.0.1

然后再次执行相同的步骤。

我已经正确使用了它并且它有效 但是当我使用javascript和java类在cordovapluginamilate中创建另一个名为myMethod的函数时出现错误为custom plugin error

我在github上分享了我的插件代码https://github.com/vishuhanda001/cordovaaddcustomplugin

我已经评论了coolMethod,而是尝试在javascript和java文件中使用myMethod,但是在访问它时遇到了上述错误,但是如果我取消注释coolMethod我的插件为coolmethod函数只有work.dont知道发生了什么 请帮忙 ?