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

问题描述 投票:35回答:5

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

  • 插件需要位于远离主项目的单独文件夹中
  • 当我使用cordova build android构建项目时,cordova从我的插件文件夹中复制java文件并将其放入platforms/android/src文件夹中。
  • 因此,我不应该手动修改Android项目中的插件的.java文件,我必须在我的插件文件夹中编写我的代码。
  • 但我无法将插件文件夹导入IDE项目,因此我没有代码完成。
  • 没有IDE支持,编写Java / Objective-C基本上是不可能的

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

java android cordova android-studio cordova-plugins
5个回答
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

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

  • Android:使用Android Studio打开位于yourCordovaAppFolder/platforms/android的构建Android项目,其中包含“导入项目(Eclipse ADT,Gradle等)” 打开Project工具窗口:查看>工具窗口>项目,或⌘+ 1 打开位于以下位置的插件类文件: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插件的最终解决方案,因为它不是这种方式而是针对插件而是制作应用程序(并且它是可能与Visual Studio for Apache Cordova相同)。

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


13
投票

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

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

哪个(至少在Mac上,可能是Linux)创建了插件目录的符号链接,而不是复制它。然后,使用Android Studio在'platforms / 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.

1
投票

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

enter image description here


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可以自动化,我个人从来没有这样做过。


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)。我不会将插件移动到其他目录,因为我不需要它,但您可以设置目录并手动插入插件,然后使用脚本包含插件。

© www.soinside.com 2019 - 2024. All rights reserved.