pod更新后,许多构建错误

时间:2017-11-21 14:53:16

标签: ios swift xcode cocoapods

我的项目中安装了很多pod。自上次pod更新以来,一切正常。在上次pod更新后,我有28个构建错误,以&#34开头;无法构建模块xxx"。

enter image description here

这是我的podfile:

target 'projectXXX' do
use_frameworks!
pod 'Firebase'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'
pod 'Firebase/Crash'
pod 'TwitterKit'
pod 'Fabric'
pod 'Crashlytics' end
  • 我尝试卸载 - 安装cocoapods。
  • 我试图从项目中解除pod,安装,删除.workspace文件和deriveData文件夹......仍然遇到这些错误。

我的想法已经不多了。请问,任何其他解决方案? 非常感谢你

修改

我刚刚发现我的Pods.framework处于红色状态,如下面的截图所示。也许这有用吗?

enter image description here

5 个答案:

答案 0 :(得分:0)

更新Xcode可以解决此问题。事实上,pod可能支持多个swift版本,因此pod应该能够指定一系列swift版本。

在更新之前检查是否未删除目标的Build Settings中的PODS_ROOT用户定义器值可能会意外。如果是这样尝试添加PODS_ROOT = $ {SRCROOT} / Pods

答案 1 :(得分:0)

您可能使用旧的pods存储库,并且在更新之后(几个月前),您需要指定要使用的pod存储库。我建议你需要旧的。看看我的pod文件如何查看旧项目:

var database = require('../database/postgresDB.js');
var pg = require('pg');
var html = {};

var connectionString  = "postgres://dabladmin:dabldem@localhost:5432/dablpatient";

var client = new pg.Client(connectionString);
client.connect();

var query = client.query('SELECT * FROM htmlfiles WHERE id = 1', function(err, result){
      console.log(JSON.stringify(result));
      console.log(result.rows[0].htmlfile);
      html = result.rows[0].htmlfile;
      //return result.rows[0].htmlfile;
      //console.dir(html);
});

module.exports = html;

答案 2 :(得分:0)

当您执行pod update更新所有库时 swift4 上的大多数库仍然是 swift3

中的一些库

如果库在swift 4中,而你的项目在swift 3.2中则有两种可能性

1)您可以将项目迁移到swift4

<强>(或)

2)您需要回滚到支持swift 3.2的pod

如果在swift3中的swift4库中进行项目,则需要将这些库迁移到swift4中以解决当前问题

答案 3 :(得分:0)

可能导致问题的原因:
- 破坏Pods / API的变化
- 由于支持/不支持Swift版本而中断更改

如果您使用的是版本控制系统(Git等)。 检索旧版Podfile.lock

阅读该文件(它是一个文本文件,您可以在more somePath/Podfile.lock中执行Terminal.app),以及&#34;显式&#34;您的pod的版本应该在那里。

你应该得到类似的东西:

PODS:
  - GSKStretchyHeaderView (1.0.3)
  - Masonry (1.1.0)
...
PODFILE CHECKSUM: someCheckSum

COCOAPODS: 1.1.1

当你执行pod 'Firebase'时,你没有指定版本,所以你应该得到最后一个版本。但如果某些版本不兼容,您可能会遇到问题。

因此,您可以添加'~> 1.0.3'(例如,如果我以GSKStretchyHeaderView为例)。有关如何使用它的更多信息here

因此,当一切正常时,您应该重新使用旧版本。现在,您可以查看每个pod的文档(以及他们各自的podspec寻找&#34;隐藏&#34;依赖关系)并逐个更新它们,检查哪一个是罪魁祸首,然后可能会升起一个标志(一个问题)如果需要,他们的repo / git。

对于下一个开发者,我建议至少使用&#34;乐观运算符~>&#34;设置&#34;版本&#34;。如果他们尊重版本规则(主要/次要/补丁),那么至少确定主要/次要,补丁不应该破坏任何东西,而是解决问题。未成年人可能会有突破性变化,而主要人员很有可能与以前的工作不兼容(不同的声明,类重命名等)。

如果您不使用像Git这样的版本控制系统,我强烈建议您立即行动。 但如果这是你的情况,你仍然有问题。记住pod update/install之后一切正常的日期。然后,转到您的pod的每个Git,并阅读历史记录以查找该日期的版本,并在该pod的podfile中设置该版本。

答案 4 :(得分:0)

首先尝试完全移除可可豆荚

gem install cocoapods-deintegrate
pod deintegrate
gem install cocoapods-clean
pod clean

然后再次安装

pod setup
open -a Xcode Podfile

在Pod文件中添加如下

# Uncomment this line to define a global platform for your project
platform :ios, '10.0'
# Uncomment this line if you're using Swift
use_frameworks!
target 'TestProject' do
pod 'Firebase'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'
pod 'Firebase/Crash'
pod 'TwitterKit'
pod 'Fabric'
pod 'Crashlytics'
end
target 'ProjectTests' do
end

pod install