首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有App扩展的Cocoapods

使用带有App扩展的Cocoapods
EN

Stack Overflow用户
提问于 2014-08-27 23:38:14
回答 4查看 29.1K关注 0票数 84

我试图在Xcode 6 Beta-6中构建一个使用cocoapods库的照片应用程序扩展。Xcode为照片扩展创建的桥接头无法从cocoapods中看到任何内容。

例如:#import <GPUImage/GPUImage.h>会导致错误"GPUImage/GPUImage.h" file not found

我已经尝试了所有可以想象的导入路径(带有括号和引号),但几乎没有成功。唯一的例外是,对于SVProgressHUD这样的简单的荚类,下面这个可怕的骇人的攻击是有效的:#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"

但是对于GPUImage,它走进GPUImage.h头,并决定它突然不能看到GPUImageContext.h,尽管在导入时没有问题,通常的快速代码的桥接头并不是应用扩展的一部分。

程序扩展的编译有什么不同,因为它阻止了桥接头的正常运行?

注意:我已经阅读了本教程的每一个可能的排列,它并不是立即适用的,以防有人认为他们已经在那里找到了答案。

另外,这个问题中描述的问题可能是相关的,但我还是问了这个问题,以防我的问题是特定于应用程序扩展的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-07 16:32:54

正确的方法是更新podfile,只添加一行:

代码语言:javascript
复制
link_with 'yourApp', 'yourAppExtension'

一个吊舱更新应该可以解决这个问题。

票数 66
EN

Stack Overflow用户

发布于 2014-08-28 18:20:33

编辑(2015/03/10)

见新接受的答案。我在一个新的项目中尝试了它,虽然我的测试荚都使用了sharedApplication,这在扩展中是不允许的。事实上,他们显示了这些错误,这意味着它正确地联系在一起。干得好@LeChatNoir!

成功。

解决方案如下:一旦在使用cocoapods的项目中拥有了应用程序扩展和桥接头,并且您想使用那些cocoapods库之一,尝试包含像#import <GPUImage/GPUImage.h>这样的pod将在file not found中失败。

首先,确保您告诉应用程序扩展(单击您的项目文件,然后在扩展目标)链接到libPods.a,很像您的应用程序目标。

接下来,在实际项目中(单击项目文件,然后再单击内部侧栏的" project“部分),在Info选项卡下设置Debug、Release扩展名的配置,以使用下拉列表中的"Pods”配置。Pod安装不会为你做到这一点,所以你需要自己去做。

最后,确保Pods项目的目标和项目的目标都具有在有效的架构变量中需要构建的所有体系结构,否则您将得到有趣的未定义符号错误。

这应该可以工作,并允许您导入您选择的吊舱,就像往常一样。

编辑(2014/10/14):另外,由于您也可能在Swift扩展部分中包含了来自您自己的项目代码中的Objective文件,所以您应该确保您放置在桥接头中的任何.m文件也是由扩展目标编译的。您可以通过目标的“编译源”菜单或者在.m文件本身中使用Xcode中右侧侧栏的“”部分来实现这一点。

票数 85
EN

Stack Overflow用户

发布于 2015-08-13 13:08:37

上面的答案是可行的,但我只想在我的分机上放几个豆荚,所以我对我的Podfile做了如下操作:

代码语言:javascript
复制
target '[Main App Target Name]' do
        pod ...
        pod ...
        pod ...
end

target '[Extension Target Name]' do
        pod ...
end

然后pod install就能做到这一点!

票数 75
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25538579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档