【问题标题】:Cocoapods 1.0: Header files not foundCocoapods 1.0:找不到头文件
【发布时间】:2016-09-19 12:50:03
【问题描述】:

我刚刚尝试从 cocoapods 0.39.x 更新到 Cocoapods 1.0。 跑步

吊舱安装

来自终端不会导致警告。一切似乎都很正常。但是,当我尝试构建我的项目时,它会输出:

AFNetworking/AFNetworking.h 文件未找到

我的 pod 文件看起来像这样(还有一些依赖项,但我只列出了一部分):

platform :ios, '8.0'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

target 'MyApp' do
    pod 'AFNetworking', '~> 2.6'
    pod 'BEMCheckBox'
    pod 'ActionSheetPicker-3.0', '~> 2.0.5'
    pod 'SCLAlertView'
    pod 'DZNEmptyDataSet'
    pod 'SSZipArchive'
end


target 'MyAppTests' do

end

由于有些项目是用 Objective-C 编写的,所以我创建了一个桥接头:

#import <AFNetworking/AFNetworking.h>
#import <ActionSheetPicker_3_0/ActionSheetPicker.h>
#import <SSZipArchive/SSZipArchive.h>
#import <DZNEmptyDataSet/UIScrollView+EmptyDataSet.h>

我在Header Search PathsUser Header Search pathsFramework Search paths 中明确包含$(inherited),但错误并没有消失。 有人知道如何解决这个问题吗?

【问题讨论】:

  • 一些建议开始...与您的问题无关,但如果您使用 Swift 编码,请尝试使用 Alamofire 而不是 AFNetworking。他们都有相同的创建者,但 Alamofire 基本上是 AFNetworking 的 Swift 版本。它使事情变得容易一些。其次,确保您将项目作为 xcworkspace 而不是 xcodeproj 打开。 Cocoapods 只能在 xcworkspace 中工作。如果这不是问题,我可以尝试进一步提供帮助。
  • 感谢您的建议。是的,我完全同意。但我必须使用 AFNetworking,因为另一个依赖项是用 Objective C 编写的,并且使用 AFNetworking 而不是 Alamofire。我已经在 xcworkspace 工作了,实际上这是一个 use_frameworks 问题。
  • 明白了。您是否尝试过只运行您的应用程序?我在收到“找不到文件”错误之前遇到过这个问题,但是我清理了构建并运行了应用程序,它清除了所有问题。这几乎就像错误是一个错误。
  • 是的,我试过了,但它没有编译,我仍然有同样的错误。我通过从我的桥接头中删除一些导入来修复它,如我的回答中所述。

标签: ios swift cocoapods bridging-header


【解决方案1】:

错误信息非常具有误导性。 起初我以为我的标题搜索路径有问题,所以我基本上尝试了我在 stackoverflow 上找到的所有内容。

如果您在 Podfile 中使用 use_frameworks!,则不必在桥接头中包含每个 Objective-C pod。 如果 pod 分发为一个静态库,而不是一个框架。

我做了以下

  1. Cmd + option + shift + k 清理您的构建文件夹
  2. 运行pod install
  3. 删除桥接头中告诉您找不到头文件的行,并在您想在一个特定的 Swift 文件中使用该模块时使用简单的导入语句,例如import AFNetworking

【讨论】:

  • 如果我不使用 'use_frameworks' 怎么办?我的错误并没有消失,也没有找到它们作为模块。我尝试分解和清洁。它与我构建并提交给应用商店的代码库相同。有什么建议吗?
  • 你的应用是 Swift 还是 Objective-C?这:guides.codepath.com/ios/CocoaPods 可能对您有用。如果你的应用是 Swift 的,我会一直使用 use_frameworks。 use_frameworks 使您能够添加 Swift pod。不幸的是,并非所有的 Objective-C pod 都可以作为一个框架进行分发。如果您遇到问题,您可能需要在桥接头中导入 pod 的标头(仅当 Objective-C pod 未作为框架分发时。)。如果系统没有找到标题,您必须开始修改标题搜索路径(您是否尝试过“递归”选项)?
  • 当我使用 import AFNetworking 时出现错误:没有这样的模型 AFNetworking
  • @Eduardo:你的应用是 Swift 还是 Objective-C?
  • @slashburn :我的项目是Objective C。我正在实施你所说的。问题是我混合了以 pod 形式分发的 pod,而不是 :(
【解决方案2】:

我尝试删除 ~/Library/Developer/Xcode/DerivedData/* 并重建项目,它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2014-05-14
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多