如何在IDE支持下设置Cordova插件项目?

时间:2015-09-18 09:53:01

标签: java android cordova android-studio cordova-plugins

我一直在努力设置我的cordova插件项目。主要是由于事实:

  • 插件需要位于远离主项目的单独文件夹中

  • 当我使用cordova build android构建项目时,cordova从我的插件文件夹中复制java文件并将其放入platforms/android/src文件夹。

  • 因此我不应该手动修改Android项目中的插件的.java文件,我必须在我的插件文件夹中编写我的代码。

  • 但我无法将插件文件夹导入IDE项目,因此我没有完成代码。

  • 在没有IDE支持的情况下编写Java / Objective-C基本上是不可能的

如何为我的插件开发设置代码完成的IDE(例如Android Studio)项目?

5 个答案:

答案 0 :(得分:37)

开发Cordova插件有点痛苦。

这是一种方法:

  1. 在插件的单独文件夹中创建插件的基本文件(plugin.xml文件,适用于Android插件的.java文件,适用于iOS的.h.m个文件
  2. plugin.xml中提供安装插件所需的内容
  3. 在Cordova应用中安装插件:cordova plugin add /path/to/pugin
  4. 构建您想要开发插件的平台。 cordova build androidcordova build ios
  5. 然后,对于每个平台,您必须直接在构建项目中的插件上工作:

    • Android:使用Android Studio打开位于yourCordovaAppFolder/platforms/android内的“导入项目(Eclipse ADT,Gradle等)”的构建Android项目

      1. 打开Project 工具窗口查看>工具窗口>项目,或 + 1
      2. 打开位于以下位置的插件类文件: android> java> com.your.plugin> YourPlugin
    • iOS:使用Xcode打开yourCordovaAppFolder/platforms/ios中构建的iOS项目 在Xcode中,您的插件类文件位于Plugins文件夹

    然后您可以直接为每个平台开发和测试您的插件,而无需一次又一次地重新安装它...只需从Android Studio / Xcode运行项目,不要重新安装您的插件,它会抹掉你在项目中所做的事情

    如果您认为您的开发已经完成(或者您想要),请将您在开发项目中创建的原始插件文件夹中的插件文件替换为正在开发的项目中的插件文件。

    编辑:

    我发现Eclipse去年夏天进行了更新, Eclipse Mars (4.5) 包括Thym(HYbrid Mobile Tools)。

    如果需要,他们会有Github project page

    我已经快速测试了它,它允许创建Cordova项目,轻松添加插件,并直接在所需平台(Android,iOS)上运行。

    微软还制作了Visual Studio for Apache Cordova的免费版本,但我还没有测试过它。

    关于带有Thym的Eclipse,我的第一个快速结论是开发Cordova应用程序是实用的,但不会是开发Cordova插件的最终解决方案,因为它不是这样的,不是这样的为插件而制作的应用程序(对于Apache Cordova的Visual Studio,它可能是相同的)。

    顺便说一句,我在使用Eclipse + Thym启动iOS模拟器方面遇到了一些麻烦,所以即使它看起来已经很好,它仍然需要改进。

答案 1 :(得分:13)

我倾向于使用的解决方案遵循Niko在接受的答案中概述的解决方案。但是,我在添加插件时添加了--link标志:

cordova plugin add --link ../cordova-plugin-example

(至少在Mac上,可能是Linux)创建插件目录的符号链接,而不是复制它。然后,使用Android Studio在'platforms / android'中编辑Android项目中的插件文件实际上会修改插件目录中的文件。这允许将插件目录保持独立(并且在它自己的版本控制下)。删除和添加插件应该 - 至少在理论上 - 不会丢失对插件的更改。

该方法对iOS插件应该同样有用。

请注意,我不知道是否或如何在Windows机器上运行。

提示:我在帮助中找到了这个选项:

cordova help plugin

给出:

     [...]
     [--link] ... when installing from a local path, creates a symbolic link to the plugin
                  instead of copying files. The extent to which files are linked vs copied
                  varies by platform. Useful for plugin development.

答案 2 :(得分:1)

Android Studio和Cordova插件有更简单的解决方案:添加android平台后,cordova在 platforms / android 下创建一个android项目,你可以在 android 下创建一个cordova插件文件夹em>项目并使用命令将插件添加到项目中一次。因此,您不需要使用另一个用于Java。正如我所说,将有两个相同的java文件:/ src和/ PluginDevelopmentFolder。 cordova build android不会操纵任何java文件。我添加了fileTree来确认:

enter image description here

答案 3 :(得分:1)

阅读此https://cordova.apache.org/docs/en/edge/guide_appdev_hooks_index.md.html

我在Debian Jessie上使用NetBeans IDE。 (NetBeans对我来说是最好的IDE,用于QT,PHP和现在的Cordova。但是它使用了大量的RAM。)

在我按下构建按钮后,我的shell脚本删除,安装并运行VirtualBox中新构建的应用程序(使用adb)。我没有将插件移动到其他目录,因为我不需要它,但您可以设置目录并手动插入插件,然后使用脚本包含插件。

答案 4 :(得分:1)

我想建议另一个开发Cordova插件的工作流程。它的方法类似于前面提到的工作流程,不同之处在于我喜欢有一个独立的项目来维护+测试+调试插件代码,而不需要单独的测试应用程序。

工作流程的大纲如下所示。

Step 1 - Prepare the Cordova platform.
1.1 Download android release cordova-android-x.y.z.zip of the version you want from the github source site:
https://github.com/apache/cordova-android

1.2. Expand the archive, go to framework/ directory
1.3. create a local.properties file with contents: 'sdk.dir=/opt/android-sdk'
     Adjust the path so that it points to the location of the Android SDK on your machine.
1.4. Execute: 'ant jar'
The result is a cordova-x.y.z.jar

Step 2 - Create/test the plugin with IDE support.
2.1. Create an empty Android project using Android Studio.
2.2. Copy the cordova-x.x.x.jar to the app/libs directory of your project.
2.3. Create the plugin code + unit tests (you have code completion and can build the code using the unit tests).
2.4. OPTIONAL If necessary you can add a webview and test the code inside the webview as described here
https://cordova.apache.org/docs/en/latest/guide/platforms/android/webview.html

Step 3 - Package plugin files.
3.1. Create a plugin project with plugman.
3.2. Copy the files from the development project into the plugin project
3.3. Deploy and reuse.

最后一步3可以自动化,我个人从来没有这样做过。