别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述将Cocoapods与App Extension一起使用相关的知识,希望能为你提供帮助。
我正在尝试使用cocoapods库在Xcode 6 Beta-6中构建照片App扩展。 Xcode为照片扩展创建的桥接标头无法从cocoapods中看到任何内容。
例如:#import <
GPUImage/GPUImage.h>
导致错误"GPUImage/GPUImage.h" file not found
。
我已经尝试了所有可以想象的导入路径(括号和引号)并且几乎没有成功。唯一的例外是,对于像SVProgressHUD
这样的简单吊舱,以下丑陋可怕的黑客工作:#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
。
但对于GPUImage,它走进GPUImage.h
标头,并决定它突然看不到GPUImageContext.h
尽管没有问题,当导入与正常swift代码的桥接标头不是应用程序扩展的一部分。
编译应用程序扩展有什么不同,这会阻止桥接头部表现得很好?
注意:我已经阅读了this tutorial的所有可能的排列,并且它不能立即应用,以防万一有人认为他们已经找到答案。
此外,this SO question中描述的问题可能是相关的,但我仍然问这个问题,以防我的问题特定于app扩展。
答案执行此操作的正确方法是更新podfile以仅添加1行:
link_with 'yourApp', 'yourAppExtension'
【将Cocoapods与App Extension一起使用】并且pod更新应解决此问题。
另一答案编辑(2015/03/10)
看到新接受的答案。我在一个新项目中尝试了它并且它有效,尽管我的测试pod都使用了在扩展中不允许的sharedApplication。他们显示这些错误的事实意味着它正确地链接。去@LeChatNoir吧!
成功。
解决方案如下:一旦你有了你的应用程序扩展,并且它在使用cocoapods的项目中进行桥接,并且你想使用其中一个cocoapods库,试图包含像
#import <
GPUImage/GPUImage.h>
这样的pod会失败并使用file not found
。首先,确保告诉应用程序扩展(单击您的项目文件,然后在扩展目标上)以链接
libPods.a
,就像您的应用程序目标一样。接下来,在您的实际项目中(单击您的项目文件,然后在Info选项卡下的内侧栏的“Project”部分再次在项目文件上),设置要使用的Debug,Release和Inhouse扩展的配置下拉列表中的“Pods”配置。 Pod Install不会为您执行此操作,因此您需要自己执行此操作。
最后,确保Pods项目的目标和项目目标都具有您需要在Valid Architectures变量中构建的所有体系结构,否则您将获得永远有趣的未定义符号错误。
这应该工作,并允许您像平常一样导入您选择的pod。
编辑(2014/10/14):顺便说一句,既然您可能在Swift扩展中包含自己项目代码中的Objective-C文件,您应该确保您在桥接头中放入的任何
.m
文件也是由扩展目标编译。您可以使用Xcode右侧边栏的“目标成员资格”部分从目标的编译源菜单或.m
文件本身执行此操作。另一答案上面的答案可行,但我只想在我的扩展中有几个pod,所以我对我的Podfile做了以下操作:
target '[Main App Target Name]' do
pod ...
pod ...
pod ...
endtarget '[Extension Target Name]' do
pod ...
end
然后一个
pod install
会做到这一点!另一答案
文章图片
link_with,你不会再使用它了。
下面是完美的回答,也经过测试。Podfile
文件无效:[!]现在不支持Podfile中link_with
的规范,请使用目标块代替..
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, ‘9.0’
use_frameworks!
inhibit_all_warnings!target 'DemoTodayWidget' do
pod 'Reachability','~>
3.2'
endtarget 'My Widget' do
pod 'Reachability','~>
3.2'
end
推荐阅读
- 如果我在RabbitTemplate上直接设置它们,为什么Spring需要在Converter和ClassMapper上使用@Bean()
- 应用程序名称在模拟器中具有.app作为后缀
- 如何启动App Store应用程序并导航到开发人员页面
- 你能获得Apple Watch的大概电池百分比吗()
- djangocms与apphook对象集成filer_image
- Apple标签,Apple脚本和Evernote
- 在Android的特殊时间结束视频Youtube
- android - Youtube api 400 Bad Request
- 限制为Android时,YouTube API密钥会出现500错误