Xcode "Id: framework not found Pods" 中的 Pod 错误

Pod Error in Xcode "Id: framework not found Pods"

我正在尝试从 bitbucket 存储库克隆项目,但在尝试 运行 工作区中的 Xcode 项目时遇到错误 Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)。这些是我遵循的步骤,如果有人能告诉我我做错了什么,那就太好了!

  1. git clone (link to bitbucket)
  2. 将 Xcode pods 项目中的配置设置更改为 none 用于调试和发布
  3. 执行pod install
  4. 打开了 Xcode 工作区文件
  5. 尝试在 Xcode 中构建并收到错误 Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)

编辑 这是播客文件:

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

target 'Oncarb' do
  pod 'Alamofire'
  pod 'SwiftyJSON', '~> 2.2.0'
end

#target 'OncarbTests' do
#  pod 'Alamofire'
#  pod 'SwiftlyJSON', '~> 2.2.0'
#end

我是否遗漏了一个步骤?

谢谢!

这已经为我解决了:

  1. 打开工作区。
  2. 单击屏幕左侧的蓝色项目图标(展开到您的文件树中)
  3. 就在右边,select "Targets"(相对于 "Project"--Project 是蓝色的,Target 就像铅笔、尺子和画笔组成的三角形)
  4. 单击“常规”选项卡
  5. 转到 "Linked Frameworks and Libraries" 部分(一直在底部)
  6. 删除 Pods 框架
  7. 添加 Alamofire 和 SwiftyJSON

就我而言,除非我删除 pods 框架,否则它不起作用,但我觉得这是一种解决方法。也许有更多经验的人可以评论。

有时在重命名目标或移动某些内容后,您可能会损坏 pods 安装。幸运的是,有比 sudo make install 的解决方案更简单的修复方法。

  1. 运行 pod deintegrate 从您的项目中删除 Cocoapods 的任何痕迹。
  2. 运行 pod install 再次添加。

就是这样,已修复。

就我而言,我有几个框架以红色列出。这些是以前的 Podfile 配置遗留下来的。我简单地删除了这些以红色列出的框架,问题就解决了。

我的问题是当我 运行 测试时我遇到了这个错误。因为我只是把它安装在我的

target 'Project' do
   pod 'xxx'
end

您还应该将其添加到您的测试目标中:

target 'ProjectTests' do
   pod 'xxx'
end

将 Cocoapods 框架 显式 导入到测试 class / 测试目标中的一个可能原因。

示例:

import XCTest
//import AlamofireImage
@testable import MyProject

// instead of importing AlamofireImage:
#if os(iOS) || os(tvOS) || os(watchOS)
    import UIKit
    public typealias Image = UIImage
#elseif os(macOS)
    import Cocoa
    public typealias Image = NSImage
#endif

我首先导入了 AlamofireImage,因为我在我的测试中明确使用了 typealias Image,如 AlamofireImage 中所定义。

如果像我的例子一样容易阻止导入,那就去做吧。我刚刚将 Image 的定义复制到我的测试 class 文件中。

如果您认为您确实需要导入,请继续 William Hu 的回答。他的回答的脚注:

target 'MyProjectTests' do
   pod 'OnlyThatFrameworkYouImportIntoYourTest' 
end

您只需将那些 pods 添加到您的测试目标,您(需要)显式导入。