如何将AFNetworking作为通过CocoaPods在iOS应用和扩展中使用的框架

注意:这与 this question项目结构有关,但我已经决定使用大量的用例来更好地抽象出问题.

问题

如何通过CocoaPods在我的iOS应用程序和随附的iOS扩展(ios8-extention,ios8-today-widgetios8-share-extension)中包含afnetworking

问题

>为了在扩展中使用,需要使用#define AF_APP_EXTENSIONS构建AFNetworking,这是否意味着需要2个版本的AFNetworking?一个用于扩展,一个用于应用程序?
>如何设置Podfile,以便将框架构建并复制到正确的位置?关于use_frameworks的文档!有点薄.

解决方法

更新:

正如节奏拳头提到的,当做新的pod安装时,原始答案的方法会被覆盖.

Aelam在此Github issue中提供了以下方法:

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版本,并将您的扩展应用程序指向使用标志集构建的另一个.所以只有一个版本的图书馆,但建立在两种不同的方式,每一个目标.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...