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

How to add custom cordova plugin in cordova app

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

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

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

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

以下是.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>

从错误消息的第一行来看,我认为您的 java 源代码中存在语法错误。您在 TestCordovaPlugin.java 文件的第一行中漏掉了一个分号。
作为一个简单的猜测,我想你错过了 import 语句后的分号。
解决方法是,可以先直接修改Cordova工程中的java源码,然后同步到standalone插件中。

根据您的参考,我认为您的 java 代码中缺少。要创建自定义 Cordova 插件,请查看 here

请检查 java 文件中的包名称约定,更多信息请检查 here

这里是在 ionic 应用程序中创建和安装插件的步骤。

来源和示例检查here

命令:

  1. plugman 创建 --name 测试 --plugin_id cordova.plugin.test --plugin_version 0.0.1
  2. plugman平台添加--platform_nameandroid
  3. plugman平台添加--platform_nameios
  4. ionic 启动 IonicCordovaPluginTestApp 空白
  5. (在App Dir) ionic plugin add [你的本地测试插件路径]

    example : ionic plugin add /Users/Workspace/Test/CordovaPluginSampleTest/Test

  6. 离子平台添加android或ios

按以下方式更新 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>

希望对您有所帮助!!!

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

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

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

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

我正在 github https://github.com/vishuhanda001/cordovaaddcustomplugin

上分享我的插件代码

我已经评论了 coolMethod 而不是尝试在 java 脚本和 java 文件中使用 myMethod 但是在访问它时遇到了上述错误,尽管如果我取消注释 coolMethod 我的插件仅用于 coolmethod 函数 works.dont 知道发生了什么 请帮助 ?