问题
如何通过CocoaPods在我的iOS应用程序和随附的iOS扩展(ios8-extention,ios8-today-widget或ios8-share-extension)中包含afnetworking?
问题
>为了在扩展中使用,需要使用#define AF_APP_EXTENSIONS构建AFNetworking,这是否意味着需要2个版本的AFNetworking?一个用于扩展,一个用于应用程序?
>如何设置Podfile,以便将框架构建并复制到正确的位置?关于use_frameworks的文档!有点薄.
解决方法
正如节奏拳头提到的,当做新的pod安装时,原始答案的方法会被覆盖.
Add this to your podfile. remember to replace the target name
post_install do |installer_representation| installer_representation.project.targets.each do |target| if target.name == "Pods-YOU_EXTENSION_TARGET-AFNetworking" target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)','AF_APP_EXTENSIONS=1'] end end end end
过时的答案:
1)请确保您的podfile中包含两个目标(您的容器应用程序和扩展名)的pod“AFNetworking”.
我的例子:
target 'ContainerAppTarget',:exclusive => true do pod "SDKThatInternallyUsesAFNetworking" end target 'ExtensionTarget',:exclusive => true do pod 'AFNetworking' end
2)在XCode中,单击层次结构视图上的Pods以构建其选项.然后在构建选项上,选择您正在查看下拉列表中的构建选项的目标.选择Pods- {扩展目标名称} -AFNetworking(它应该已由pod安装自动创建,然后选择Build Settings,然后在Apple LLVM 6.0 – Language下验证Prefix头文件是否为文件名,我的文件名为Target支持文件/ Pods- {扩展目标名称} -AFNetworking / Pods- {扩展目标名称} -AFNetworking-prefix.pch.如果没有这样的文件名或类似文件,请添加它.
3)转到那里的那个前缀头文件,或者你在那里添加.它几乎是空的,然后在最后添加以下行:
#define AF_APP_EXTENSIONS
这应该允许您的容器应用程序指向正常构建的AFNetworking版本,并将您的扩展应用程序指向使用标志集构建的另一个.所以只有一个版本的图书馆,但建立在两种不同的方式,每一个目标.