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

时间:2015-06-30 13:26:08

标签: ios xcode git cocoapods ios-frameworks

I am trying to clone a project from a bitbucket repository and am getting an error Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation) when trying to run an Xcode project in workspace. These are the steps I have followed, if anyone could let me know what I am doing wrong, that would be great!

  1. git clone (link to bitbucket)
  2. changed the configuration settings in the Xcode pods project to none for both debug and release
  3. performed pod install
  4. opened Xcode workspace file
  5. tried to build in Xcode and received the error Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)

Edit Here is the podfile:

# 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

Is there a step I am missing?

Thank you!

5 个答案:

答案 0 :(得分:128)

这已经为我解决了这个问题:

  1. 打开工作区。
  2. 点击屏幕左侧的蓝色项目图标(展开到您的文件树中)
  3. 在右边,选择"目标" (而不是"项目" - 项目是蓝色的,目标就像铅笔和尺子以及制作三角形的画笔)
  4. 单击“常规”选项卡
  5. 转到"链接的框架和图书馆"部分(一直在底部)
  6. 删除Pods框架
  7. 添加Alamofire和SwiftyJSON
  8. 就我而言,除非我删除了pods框架,否则它没有用,但我觉得这是一种解决方法。也许有经验的人可以评论。

答案 1 :(得分:28)

有时在重命名目标或移动某些内容后,您可能会损坏您的pod安装。幸运的是,有一种比sudo make install解决方案更容易解决的问题。

  1. 运行pod deintegrate以从项目中删除任何Cocoapods痕迹。
  2. 再次运行pod install将其全部添加回来。
  3. 就是这样,修好了。

答案 2 :(得分:5)

我的问题是当我运行测试时出现此错误。因为我只是将它安装在我的

target 'Project' do
   pod 'xxx'
end

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

target 'ProjectTests' do
   pod 'xxx'
end

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

示例:

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的定义复制到我的测试类文件中。

如果您认为自己真的需要这种导入,请继续回答William Hu的问题。他回答的一个脚注:

target 'MyProjectTests' do
   pod 'OnlyThatFrameworkYouImportIntoYourTest' 
end

您只需要将那些pod添加到您的(需要)明确导入的测试目标。