我正在尝试在 Xcode 6 Beta-6 中构建一个使用 cocoapods 库的照片应用程序扩展。
Xcode 为照片扩展创建的桥接标头看不到来自 cocoapods 的任何内容。
例如:#import <GPUImage/GPUImage.h>
结果出现错误"GPUImage/GPUImage.h" file not found
.
我已经尝试了所有可能的导入路径(带括号和引号),但几乎没有成功。例外的是对于像这样的简单 PodSVProgressHUD
,以下丑陋可怕的黑客行为有效:#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
.
但对于GPUImage来说,它走进了GPUImage.h
标题并决定它突然看不到GPUImageContext.h
尽管当使用不属于应用程序扩展的正常 swift 代码的桥接标头导入时没有问题。
应用程序扩展的编译有何不同,导致桥接标头无法正常运行?
笔记:
我已经阅读了所有可能的排列本教程 https://medium.com/@stigi/swift-cocoapods-da09d8ba6dd2并且它不会立即适用,以防万一有人认为他们已经在那里找到了答案。
另外,问题中描述的这个问题 https://stackoverflow.com/q/25495225/579405可能相关,但无论如何我还是问了这个问题,以防我的问题特定于应用程序扩展。
编辑 (2015/03/10)
查看新接受的答案。我在一个新项目中尝试过它并且它有效,尽管我的测试 Pod 都使用了扩展中不允许的共享应用程序。他们显示这些错误的事实意味着它链接正确。干得好@LeChatNoir!
Success.
解决方法如下:
一旦您有了应用程序扩展并且它是使用 cocoapods 的项目中的桥接标头,并且您想要使用这些 cocoapods 库之一,请尝试包含 pod,例如#import <GPUImage/GPUImage.h>
将会失败file not found
.
首先,确保告诉应用程序扩展(单击项目文件,然后单击扩展目标)进行链接libPods.a
,很像您的应用程序目标。
接下来,在您的实际项目中(单击您的项目文件,然后在内侧边栏的“项目”部分中再次单击项目文件)中的“信息”选项卡下,设置要使用的“调试”、“发布”和“内部”扩展的配置下拉列表中的“Pods”配置。 Pod Install 不会为您执行此操作,因此您需要自己执行此操作。
最后,确保 Pods 项目的目标和您的项目的目标都具有您在 Valid Architectures 变量中构建所需的所有架构,否则您将收到有趣的未定义符号错误。
This should工作并允许您像平常一样导入您选择的 Pod。
编辑(2014/10/14):顺便说一句,由于您还可能在 Swift 扩展中包含您自己的项目代码中的 Objective-C 文件,因此您应该确保任何.m
您放入桥接标头中的文件也会由扩展目标进行编译。您可以从目标的编译源菜单或在.m
使用 Xcode 右侧边栏的“目标成员资格”部分来文件本身。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)