Cordova-plugin-cocoapods-support的Cordova编译问题修补程序

cordova-plugin-cocoapods-support是一个Cordova / PhoneGap插件,它允许您在XML文件中为iOS定义插件或项目CocoaPods依赖项。 但是,当与cordova-ios@4.5.2或更高版本一起使用时,Cordova编译命令将失败。 本文将指出导致此问题的更改以及使iOS构建再次通过的潜在解决方案。

当Cordova发布cordova-ios@4.5.2时,引入了新变量location ,其中包含了必要的信息,以供平台构建器获取捆绑包标识符。 新变量的属性之一是pbxproj文件的路径。 该文件位于xcodeproj目录中。

在Cordova准备项目之后,将执行cordova-plugin-cocoapods-support插件的after_prepare挂钩脚本,并对平台构建脚本进行修改。 执行的修改之一是非常松散的查找,并将xcodeproj所有实例替换为xcworkspace 。 由于意外更改,生成器在尝试从xcworkspace目录解析pbxproj文件时失败,因为找不到文件。

该问题只能通过cordova compile命令看到,而不能通过cordova build命令看到。 这是因为build命令执行所有构建步骤,并从缓存中维护包标识符信息,并且不需要解析pbxproj文件。

此解决方案无需多说。

如果您是插件开发人员,并且有可能,那么删除插件依赖项并将Cordova的本机实现用于CocoaPods支持将是理想的选择。

这是有关如何使用Cordova的实现加载OpenSSL Pod文件的示例。

   
<framework src=" OpenSSL " type=" podspec " spec=" 1.0.210 " />

您可以在此处找到更多详细信息。

如果您不是插件开发人员,并且不能删除插件依赖项,则可以创建自己的挂钩脚本来还原重大更改。

首先,我们将需要创建钩子脚本,最后将其添加到项目的config.xml中,以便使用它。

创建脚本

让我们创建一个名为beforeCompileCocoapodsHotfix.js的新文件,并将其添加到hooks文件夹中。 路径应类似于以下/hooks/beforeCompileCocoapodsHotfix.js

接下来,我们将添加脚本内容。

该脚本将仅显式搜索重大更改并还原。 这不会还原插件的所有更改。

最后,我们将向项目的config.xml添加对新钩子脚本的引用,以在编译前执行。 由于这是一个iOS依赖项,因此我们将其添加到iOS平台声明中。

  <platform name =“ ios ”> 
<hook type =“ before_compile ” src =“ hooks / beforeCompileCocoapodsHotfix .js ” /> ...

现在,您可以继续编译iOS版本!

一旦不再使用插件依赖项或使用更永久的解决方案更新了插件,便可以删除此修补程序。

快乐的编码。