Cordova 插件和依赖项

Posted

技术标签:

【中文标题】Cordova 插件和依赖项【英文标题】:Cordova Plugins and dependencies 【发布时间】:2016-01-12 15:13:53 【问题描述】:

我想为 ios 创建一个使用其他预制 Cordova 插件并对其进行修改的 Cordova 插件。

例如,我想创建一个插件来上传 mp3 类型的音频文件,现在我想使用提供这些基本功能的“媒体”插件来录制、停止录制、播放、停止播放音频文件。不同的文件格式(默认媒体插件使用 Wav 格式,我想使用 mp3)而不修改“媒体”插件本身。

有什么办法可以做到吗?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

实现这一点的方法是继承(来自本机代码而不是 js)。

创建您自己的自定义插件(与普通 Cordova 插件相同的文件结构,带有 plugin.xml 文件、WWW 文件夹、Src 等)。

在您的 plugin.xml 文件中,将 Media 插件声明为依赖项,当您安装自定义插件时,它将动态带入您的项目(请注意,根据您机器上的 Cordova 版本,“Media”插件本机代码可能会有一些差异)。

<dependency id="org.apache.cordova.media"/>

当您创建自己的类并将其命名为 CDVYourClass 并使其成为 CDVSound 的子类时,“媒体”插件类 (IOS) 称为“CDVSound”。

从这里您可以覆盖您想要更改的方法(例如,如果您想要录制 .m4a 文件而不是媒体插件默认的 .WAV)。

有关构建 Cordova 插件插件的更多信息,请参阅 Cordova 文档。

https://cordova.apache.org/docs/en/4.0.0/guide/cli/

这是关于自定义插件的好读物。

http://docs.telerik.com/platform/appbuilder/cordova/using-plugins/using-custom-plugins/making-plugman-compatible/create-modify-plugin-xml

除了这个答案之外,还有一些“私有”方法,您最初无法覆盖这些方法来克服这个问题,使用 Objective C 类别来扩展父类(在这种情况下为 CDVSound),然后在类别 .m 文件中声明它,然后您可以将类别类导入父类并覆盖私有方法。

【讨论】:

以上是关于Cordova 插件和依赖项的主要内容,如果未能解决你的问题,请参考以下文章

将Pod依赖项添加到cordova插件

Cordova 构建错误:相机插件缺少 android.support.v4 库依赖项

无法安装“cordova-plugin-media-capture”:CordovaError

生成 apk 时出现 Cordova-plugin-file 错误

Cordova - 构建版本 - “无法解决配置 ':_debugCompile' 的所有依赖项?

极光推送cordova插件修改android原生sdk依赖的方法