51

我从 GitHub 下载了一个项目,然后 pod 以下文件,其中一些是由 OBJ-C 编写的,我使用了桥头。

pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’

当我使用 Xcode 9.0 beta 2 运行项目时,不幸的是错误日志如下:

错误:未能发出预编译头 '/var/folders/kd/4gh0_kxx3jx4thjb_sssmmcw0000gn/T/EvoRadio-Bridging-Header-97bd5f.pch' 用于桥接头 '/Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadio-桥接-Header.h'

我用谷歌搜索过,但没有这样的问题。错误意味着它需要一个 PCH 文件?这是我的.pch标题配置: 在此处输入图像描述 它无法解决它。

怎么做?

4

22 回答 22

52

我已经尝试了答案中提到的所有上述步骤,但对我没有任何效果,问题基本上出在项目的部署目标版本和 podfile 中。

在我的项目部署目标中是 10.0,而在我的 podfile 中是 11.0。

Scr1

scr2

于 2019-05-17T09:39:50.950 回答
38

请注意,如果您的桥接头导入 Objective-C 代码,而该代码本身通过myproject-Swift.h. 解决方案是为您的 Swift 类型使用前向声明并在.m文件中导入项目 Swift 模块。

@class MySwiftClass或者...

typedef NS_ENUM(NSInteger, MySwiftEnumType)

MySwiftEnumType即使对于类来说也是最低级别的名称。所以 Swift 枚举MyClass.MySwiftEnumType就变成了MySwiftEnumType

于 2018-10-09T12:41:44.217 回答
24

确保您打开了正确的项目工作区,否则,Podfile可能没有编译所需的所有资源。

我在以前运行良好的项目中看到了同样的错误。

我发现我不小心打开了ProjectName.xcodeproj文件而不是ProjectName.xcworkspace文件。打开xcworkspace文件,然后项目又开始工作了!

于 2017-08-31T13:15:17.367 回答
23

在为Encrypted Core Data添加可可豆荚后,我也遇到了完全相同的问题(Xcode9 beta 6)。
这是我的PodFile

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git'

target 'Root' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Root

  target 'RootTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'RootUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

解决方案:
1 我添加$(inherited) non-recursiveSearch Path -> Header Search Paths
2 然后在我的项目的目标构建设置中添加${PODS_ROOT} recursiveSearch Path -> User Header Search Paths
上述两者。

请查看这些 SO 答案:
1 继承标头搜索路径
2 继承用户搜索路径

于 2017-08-25T09:30:45.927 回答
14

对我来说,当我向现有项目添加新的构建配置和方案时,就会出现这个问题。

解决方案是pod install在新创建的方案上运行。之后,项目构建成功。

于 2018-02-26T16:35:53.137 回答
7

我只是在为模拟器而不是为硬件设备编译时遇到了这个问题。有两个编译错误,如:

  • 错误:未能为桥接头标头“Bridging-Header.h”发出预编译标头“Bridging-Header-97bd5f.pch”
  • 在 Bridging Header 中找不到 ActionSheetPicker_3_0/ActionSheetPicker.h(但它在那里被声明)

经过数小时的研究和尝试和错误,事实证明,项目中没有设置有效的架构来编译模拟器。

Project -> Build Settings -> User-Defined -> VALID_ARCHS添加架构x86_64以启用模拟器编译。

于 2020-11-25T11:07:05.417 回答
6

你可以试试这个解决方案。我已经通过这种方式解决了同样的问题。

产品 > 方案 > 编辑方案 > 在左侧菜单中选择“构建”> 查找隐式依赖项

在构建选项卡下,选中“查找隐式依赖项”:

查找隐式依赖项

然后进行清洁并再次构建。

于 2017-11-02T09:24:31.420 回答
5

XCode 可以在某个目标中构建 seccessful,但其他目标则不能。
最后发现Header Search Paths 不一样。(路径:目标>构建设置>搜索路径>标题搜索路径>添加项目)
我复制并粘贴了成功目标的路径。我做到了。太棒了。

在此处输入图像描述

于 2020-07-24T03:58:01.587 回答
3

在我的情况下,我的一个项目文件中出现了相同的编译器错误以及诸如“未知类型”之类的附加错误,所以我只是将它添加到有问题的文件中,它立即解决了它。

#import <UIKit/UIKit.h>

于 2017-09-24T11:49:39.567 回答
3

就我而言;

在目标/构建设置/

Product_Name 部分不同于$(TARGET_NAME)

当我更改它 $(TARGET_NAME) 时,它已解决。

于 2020-06-01T18:00:56.893 回答
2

我的经验是 Xcode 无法找到项目中导入的 pods/frameworks 的头文件。

我的项目经验:更新 Xcode9.2 - 9.3,由于隐式定义现在不可用或已过时,许多 cocoapods 必须更新。
我已将 Podfile 更改为现在包含“use_frameworks!”。在此之后并在处理其他编译问题后,我发现了您遇到的错误。我相信添加'use_frameworks!阻止了一些在 iOS 8 之前支持的 pod 无法正确编译。我为纠正此问题而采取的步骤:

  1. 我尝试使用可可删除 Pods/ 目录pod deintegrate
  2. 然后我用 Xcode 打开项目并清理构建文件夹和项目。(删除派生数据文件夹中的内容)
  3. 然后我pod install再次但问题仍然存在。

  4. 最终,我删除了 Podfile 中的 use_frameworks 行,然后重复了步骤 1-3,项目现在能够找到丢失的头文件,并且问题再也没有出现过。

于 2018-04-24T21:57:46.140 回答
2

就我而言,我在文件夹名称“支持文件”而不是“支持文件”中有错字。

于 2018-10-02T23:35:01.647 回答
1

删除Podfile.lock并重新运行pod install为我解决了这个问题。

于 2018-07-02T20:08:26.047 回答
1

有很多原因和事情可以做,比如:

唯一对我有用的是Xcode 9 中接受的答案 - 未能发出预编译的标头

platform :ios, '11.0'在 podfile 中应该匹配项目中的目标

于 2019-02-14T10:01:03.757 回答
1

在我更新了新的 Xcode 之后,我也遇到了这个问题。经过几个小时的调查,我发现如果你有多个目标,你现在必须在 Xcode 10 的 pod 文件中添加更多目标。所以你的代码应该是这样的:

platform :ios, '9.0'

target 'EvoRadio' do

pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’

target 'EvoRadio2ndtarget'   # add your second target

end

我发现在 Xcode 9 中不需要添加,但在 Xcode 10 中需要添加。希望这可以帮助。

于 2019-05-04T11:55:45.593 回答
1

就我而言,我发现这是因为我没有Framework Search Paths在 Release Tab 中配置。这是屏幕截图: 在此处输入图像描述

添加此路径后,它可以工作。

于 2022-02-15T02:18:15.190 回答
0

我有同样的情况,请确保您包含在YourProjectName-Bridging-Header.h中的文件 A

  • 如果它使用其他一些类,那么这些其他类也包含在该文件 A之前
于 2018-07-21T11:17:52.390 回答
0

就我而言,我正在使用错误的方案(左上角菜单)进行构建。

于 2019-03-31T09:04:57.130 回答
0

对于 Xcode 11,我遇到了“Security.framework”的问题。我删除了这个依赖,然后重新添加它。最终解决了其他问题

于 2019-09-16T18:45:31.620 回答
0

在重命名导入了另一个 Xcode 项目的现有 Xcode 项目配置后出现此错误。

要修复它,您还必须在导入的项目中重命名相同的配置。

于 2020-01-22T16:59:45.857 回答
0

由于我在这个问题上被困了 2 个工作日,我想为你分享我的问题,因为未来的搜索者可能会遇到我的问题

使用命令行运行时出现上述错误,我发现我正在编写的命令是用于运行.xcodeproj,但是要运行.xcworkspace你必须编写以下命令

xcodebuild -workspace PROJECTNAME.xcworkspace clean archive -archivePath build/PROJECTNAME -scheme SCHEMENAME

于 2020-06-18T14:02:17.667 回答
0

就我而言,一切都很好。我刚刚忘记在添加到桥接头文件的导入中添加“.h”

曾是

import 'Test'

必需的

import 'Test.h'
于 2021-10-04T12:35:43.657 回答