【问题标题】:Pod Error in Xcode "Id: framework not found Pods"Xcode 中的 Pod 错误“Ld:找不到框架 Pod”
【发布时间】:2015-09-17 07:47:11
【问题描述】:

我正在尝试从 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)

编辑这是 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

有没有我遗漏的步骤?

谢谢!

【问题讨论】:

  • 你必须使用cocoapods
  • 您是否已将 pod 框架添加到嵌入式二进制文件中?如果您想在真实设备上构建,这通常是必要的
  • @Pami -- 你也可以发布你的 Podfile 吗?
  • @Dean 我刚刚将 pod 框架添加到了嵌入式二进制文件中——它们无法启动,但不幸的是,当我尝试构建时,我仍然遇到同样的错误。还有其他建议吗?

标签: ios xcode git cocoapods ios-frameworks


【解决方案1】:

这已经为我解决了:

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

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

【讨论】:

  • 在删除 Pods 框架、关闭 Xcode、运行 pod 更新、然后清理/构建之后也为我工作。
  • 这个问题还有很多其他错误的答案>。>感谢您分解步骤!
  • 从“嵌入式二进制文件”中删除“Pod.framework”对我有用
  • 感谢您的解决方案。在我将可可豆荚升级到 1.0 后发生这种情况
  • 另一种解决方案可能是; $ pod deintegrate && rm Podfile.lock && pod install
【解决方案2】:

有时在重命名目标或移动某些东西后,您可能会损坏您的 pod 安装。幸运的是,有一种比sudo make install 的解决方案更简单的方法来解决它。

  1. 运行 pod deintegrate 以从您的项目中删除任何 Cocoapods 痕迹。
  2. 再次运行pod install 将其全部添加回来。

就是这样,修复。

【讨论】:

  • 这在 Firebase pod 出现问题并且需要在我的测试目标中使用 inherit! :complete 时也有效
  • 在重命名我的项目后也为我工作,必须编辑 Podfile 并在那里更改我的项目名称,然后添加 Firebase 和 Crashlytics pod
【解决方案3】:

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

target 'Project' do
   pod 'xxx'
end

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

target 'ProjectTests' do
   pod 'xxx'
end

【讨论】:

  • 测试目标也可以嵌套在其他目标中,然后将继承所有这些 pod。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    将 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,因为我在AlamofireImage 中定义的测试中明确使用了typealias Image

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

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

    target 'MyProjectTests' do
       pod 'OnlyThatFrameworkYouImportIntoYourTest' 
    end
    

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

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      相关资源
      最近更新 更多