更新:
正如Rhythmic Fistman所提到的,当进行新的pod install时,原始答案的方法会被覆盖。
Aelam 在这个 Github 问题中提供了以下方法:
在你的podfile中添加以下内容。记得替换目标名称。
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-{Extension Target Name}-AFNetworking
(它应该已经由pod install自动创建)。然后选择Build Settings。然后在Apple LLVM 6.0 - Language下,验证前缀头文件是否有文件名。在我的情况下,该文件名为Target Support Files/Pods-{Extension Target Name}-AFNetworking/Pods-{Extension Target Name}-AFNetworking-prefix.pch
。如果没有类似的文件名,则添加它。
3) 转到那个被命名或添加的前缀头文件。它几乎是空的,然后在末尾添加以下行:
这将允许您的容器应用程序指向通常构建的AFNetworking版本,而您的扩展应用程序则指向设置了标志的另一个版本。因此,只有一个库的版本,但在两个不同的目标上以两种不同的方式构建。