如何捆绑Cocoapod依赖与Cordova插件?

我正在开发Cordova插件,而对于iOS平台,我想join一些现有的(非cordova特定的)Cocoapods。 我一直没有find任何有关如何使这个工作的信息或例子,我会希望这是一个相当常见的用例。

请注意,我并不是试图将Cordova作为Cocoapod来使用,而Cocoapod中有相当多的信息,而是从我正在开发的Cordova插件的iOS平台中使用Cocoapods。

Cordova的plugin.xml通常需要列出所有的项目依赖关系来正确地包装事物。 有谁知道cordova或PhoneGap插件内部使用Cocoapods?

我只是浪费了几个小时,所以我想我会把这个放在这里给任何有兴趣的人。 cordovaCordova-CLI版本6.4.0 /cordovaiOS 4.3.0版本支持与CocoaPods直接集成。

详细信息在这里: https : //cordova.apache.org/docs/en/latest/plugin_ref/spec.html

只需添加如下内容:

 <platform name="ios"> ...Other iOS platform specific declerations... <framework src="OpenSSL" type="podspec" spec="~> 1.0.0" /> </platform> 

到您的插件的plugin.xml文件。 Cordova自动生成一个.xcworkspace。 使用它而不是xcodeproj文件,你很好。

我也找不到这方面的信息,所以我写了一个Cocoapods插件来帮助: https : //github.com/xdissent/cocoapods-cordova它自动pipe理你的plugin.xml并build立一个通用的静态库,它只链接非Cordova依赖关系。 目前是WIP,但是我在一些插件上成功地使用了它。

我正在遇到类似的情况。

这里有两个解决方法。

  1. 将Cordova集成到插件开发环境中,即将纯Xcode项目转换为基于Cordova的项目。 如果我们想在iOS上使用cordova插件,也可以通过Cocoapods使用。

  2. 将Cocoapods引入由Cordova生成的Xcode项目。 这样,我们需要将生成的代码放到源代码pipe理中,并且在添加其他插件时要小心,因为我们修改的文件可以由cordova修改。

我不知道哪一个是更好的select。

以下豆荚信息对解决方法#1有帮助。

pod search cordova

– > Cordova(4.0.1)Cordova iOS pod'Cordova','〜> 4.0.1' – 主页: https : //github.com/apache/cordova-ios – 资料来源: https : //github.com/apache /cordova-ios.git – 版本: 4.0.1,3.9.1,3.8.0,3.7.0,3.6.0,3.5.0,3.4.1,3.4.0,3.3.0,3.2.0,3.1 3.0.0,2.9.0,2.8.0,2.7.0,2.6.0,2.5.0,2.4.0,2.3.0,2.2.0,2.1.0,2.0.0,1.9.0 ,1.8.1,1.8.0,1.7.0,1.6.1,1.6.0,1.5.0,1.4.1,1.4.0,1.3.0,1.2.0,1.1.0,1.0.0 [master回购]

– > Cordova-Lib(3.9.1)镜像自github,部署在git.oschina.net解决国内访问的连接速度.Apache Cordova是一个使用HTML,CSS和JavaScript构build原生移动应用程序的平台。 pod'Cordova-Lib','〜> 3.9.1' – 主页: https : //git.oschina.net/liubiqu/cordova-ios – 资料来源: https : //git.oschina.net/liubiqu/cordova-ios .git – 版本:3.9.1,3.9.0,3.8.0 [master repo]

我无法find这个问题的一个很好的解决scheme,所以我创build了一个插件, https://github.com/blakgeek/cordova-plugin-cocoapod-support 。 它增加了对plugin.xml中定义Cocoapod依赖关系的支持。 它应该被包含作为另一个插件的依赖,然后该插件可以在plugin.xml的ios平台部分添加条目。 它支持所有的pod依赖规范,如git repo,configuration,subspecs等,希望这可以帮助别人。