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

Posted

技术标签:

【中文标题】如何设置具有 IDE 支持的 Cordova 插件项目?【英文标题】:How to set up Cordova plugin project with IDE support? 【发布时间】:2015-12-15 10:17:45 【问题描述】:

我一直在努力设置我的 cordova 插件项目。主要是因为:

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

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

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

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

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

如何为我的插件开发设置带有代码完成功能的 IDE(例如,用于 Android Studio)项目?

【问题讨论】:

这里有同样的问题..刚开始使用 Cordova / Ionic..我可以让一个自定义插件工作,但它缺乏代码完成..如果你知道如何启用它,请提供更新(最好intellij) 谢谢 @DutchKev 我目前正在使用一个虚拟插件文件夹作为我的主项目的兄弟,然后使用cordova plugin add ../my_plugin 将其注册到科尔多瓦的内部插件注册表。然后使用命令行构建应用程序。然后使用“从 gradle 脚本导入”将项目导入 Android Studio。然后你可以像普通的android项目一样编写你的插件。但是要注意,在你的主项目的plugin文件夹中写你的js接口,在你的android项目的src文件夹中写.java文件。并在 Android Studio 中构建。如果你改变你的 js 界面,你必须使用 CLI。 感谢分享解决方法!我有点害怕它会像那样跳来跳去,在 IDE 中跳来跳去。我会按照你的方式走,如果我找到一个一体化的解决方案,我会在这个主题中告诉你。谢谢! 这不是一个很好的解决方案,但我开始执行以下操作.. 我打开了第二个编辑器,它有一个有效的 android 项目和一个与 cordova 插件具有相同文件结构的包,并包含 Cordova Java 文件,因此它也需要完成 Cordova 的代码。我在有效的 android IDE 中编写了他的插件,并在完成后将所有内容复制/粘贴到插件 IDE 中。这节省了我一些时间。希望它有所帮助。跨度> 你能分享一个我可以处理的模板项目吗? @DutchKev 【参考方案1】:

开发 Cordova 插件有点痛苦。

这是一种方法:

    在插件的单独文件夹中创建插件的基本文件(plugin.xml 文件、.java 文件用于 Android 插件、.h.m 文件用于您的插件) 在您的plugin.xml 中提供安装插件所需的内容 在您的 Cordova 应用程序中安装您的插件:cordova plugin add /path/to/pugin 构建您想要开发插件的平台。 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(混合移动工具)。

如果需要,他们有一个Github project page。

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

微软也做了Visual Studio for Apache Cordova的免费版,不过我没有测试过。

关于带有 Thym 的 Eclipse,我的第一个快速结论是开发 Cordova 应用程序是实用的,但不会是开发 Cordova 插件的最终解决方案,因为它不是面向这种方式的,也不是为插件而生,但为应用程序而生(Visual Studio for Apache Cordova 可能也是如此)。

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

【讨论】:

嘿,我不知道您是否检查过我的 cmets,在您回答问题之前我使用了完全相同的解决方案。您可以在 CLI 中安全地使用 cordova build android,它只会替换您的 javascript 代码,而您的 Java 代码将保持原样 哦,确实,感谢您指出我错过了您的评论,抱歉。我会把我的答案留给有需要的人,当我有更好的解决方案时我会在这里分享 我对允许开发 Cordova 应用程序的 IDE 进行了一些更新 :-) 如果您正在考虑使用 Eclipse(与 THyM)作为可能的 IDE,我建议您查看this JBoss Developer Studio plugin。在学习 Cordova 时,它真的对我帮助很大,他们有一些很好的演示项目,你可以从中学到很多东西。 这些选项中是否有任何对插件的调试支持?我的主要问题是我无法调试 JS 后面的 .java 或 ios 代码,并且 Thym 不支持编辑除 www 文件夹之外的任何内容。否则就吓坏了。【参考方案2】:

我倾向于使用 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.

【讨论】:

【参考方案3】:

我想建议另一个开发 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 可以自动化,我个人从来没有这样做过。

【讨论】:

【参考方案4】:

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

【讨论】:

这是不可取的,有时您需要手动添加/删除平台。所以cordova platform rm android 实际上会删除这个文件夹及其所有内容。 是的,这是正确的,但需要编辑那些将坚持项目的 java 文件。删除的意义何在? 很多时候你会遇到插件没有正确添加的情况,或者你做的一切都正确但插件功能没有执行。在这种情况下,您必须重新删除并添加平台。它发生了。它就在那里。 你可以编辑你的答案是......这样做(你发布的方法),然后将整个 .java(或文件内容)文件复制到实际的插件目录中。这是大多数开发人员现在正在做的事情。 PS。它更容易使用 Android Studio。【参考方案5】:

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

【讨论】:

以上是关于如何设置具有 IDE 支持的 Cordova 插件项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cordova 获取 iOS 用户设置的设备名称?

如何使用cordova命令行创建好一个工程

如何在ionic 3中使用cordova插件蓝牙?

Ionic/Cordova - 是不是有具有工作轨迹栏功能的媒体/媒体播放器插件?

Ionic2使用第三方cordova插件(非Ionic2官方支持的native cordova插件)

Ionic 2:将 cordova 插件与具有自己命名空间的 Typescript 一起使用