将单元测试目标添加到Xcode - 无法导入桥接头文件的问题不会消失。
将单元测试目标添加到Xcode - 无法导入桥接头文件的问题不会消失。
我向我的Xcode项目添加了一个新的测试目标。我的项目中有Swift代码和Objective-C代码,并且有一个桥接头文件。在将桥接头文件添加到UnitTesting的构建设置中或使用import MyTarget
时,我收到以下错误信息:
无法导入桥接头文件
我尝试过:
- 将桥接头文件添加到项目、单元测试和主目标的构建设置中。
- 将
defines modules
更改为Yes
。 - 将桥接头文件移动到根文件夹。
我还尝试过创建一个样本项目,它构建并正常工作。但是在这一点上,将我所拥有的一切移植到一个全新的干净项目中不是一个选择。
问题的原因是在Xcode中添加了单元测试目标后,导入桥接头文件失败。解决方法可以通过修改Podfile文件或手动设置搜索路径来解决。
如果使用CocoaPods作为包管理器,可以在Podfile文件中添加以下内容:
target 'YourProductTests' do inherit! :search_paths # Pods for testing end
然后运行`pod install`命令。
如果以上方法不起作用,可以尝试手动设置搜索路径:
1. 点击测试目标(Test target)-> Build Setting -> 选项卡: All & Combined -> Swift Compiler -> Code Generation -> Objective-C Bridging Header : 添加你的xxx-bridging-header文件。
2. 检查"Search Path",根据你的主目标设置Framework Search Path
,Header Search Paths
,Library Search Path
的值。可能会有一些搜索路径丢失,需要手动添加。
这种方法对我有效,我没有使用CocoaPods。
这个方法有效。是否有关于这个问题的文档?我如何了解更多关于为什么需要使用inherit! : search_paths
的信息?
非常感谢这个解决方法!非常好用!
问题出现的原因:
- 在Xcode中添加了单元测试目标后,可能会出现“Failed to import bridging header”的错误。
解决方法:
1. 在项目中选择“Build settings”。
2. 搜索“Defines module”并将其设置为“YES”。
3. 复制Objective-C bridging header的路径。
4. 选择测试目标,进入“Build setting”。
5. 在“Swift compiler - General - Objective-C bridging header”中设置Bridging header的路径。
6. 确保测试目标的“Header Search Paths”中包含了iOS目标中的所有头文件。如果有头文件缺失,添加它们。
7. 进行构建。
参考链接:点击此处查看链接(链接已过时)。
这里给出了一个解决方案,即将测试目标(test target)移动到产品目标(product target)内部。具体代码如下:
target 'YourProduct' do # 产品的 Pods target 'YourProductTests' do inherit! :search_paths # 产品测试的 Pods end end
但是另一种方式并没有起作用:
target 'YourProduct' do # 产品的 Pods end target 'YourProductTests' do inherit! :search_paths # 产品测试的 Pods end
最后,有人确认这个解决方案有效,并希望如果知道原因的话,请留言说明。