如何设置具有IDE支持的Cordova插件项目?

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

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

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

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

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

  • 如果没有IDE支持,基本上不可能编写Java / Objective-C

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


答案 1

开发Cordova插件有点痛苦。

这是一种方法:

  1. 在插件的单独文件夹中创建插件的基本文件(Android插件的文件,以及iOS的文件)plugin.xml.java.h.m
  2. 提供安装插件所需的内容plugin.xml
  3. 在Cordova应用程序中安装您的插件:cordova plugin add /path/to/pugin
  4. 构建要开发插件的平台。 或cordova build androidcordova build ios

然后,对于每个平台,您必须在构建的项目中直接使用插件:

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

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

然后,您可以直接为每个平台开发和测试您的插件,而无需一次又一次地重新安装它...只需从Android Studio / Xcode运行项目,并且不要重新安装插件,它将删除您在项目中所做的工作

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

编辑:

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

如果需要,他们有一个Github项目页面

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

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

关于Eclipse与Thym,我的第一个快速结论是,开发Cordova应用程序是可行的,但不会是开发Cordova插件的最终解决方案,因为它不是以这种方式定向的,也不是为插件而制造的,而是为应用程序制作的(对于Visual Studio for Apache Cordova来说可能是一样的)。

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


答案 2

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

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

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

这种方法应该同样适用于iOS插件。

请注意,我不知道--link是否或如何在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.

推荐