首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoapod 0.38.0和AFNetworking 2.5 AF_APP_EXTENSIONS编译错误

Cocoapod 0.38.0和AFNetworking 2.5 AF_APP_EXTENSIONS编译错误
EN

Stack Overflow用户
提问于 2015-08-03 15:37:27
回答 1查看 823关注 0票数 1

我的项目有9个目标:

代码语言:javascript
复制
- Prod
- Prod_app_extension_1
- Prod_app_extension_2
- Beta 
- Beta_app_extension_1
- Beta_app_extension_2
- Dev
- Dev_app_extension_2
- Dev_app_extension_2

我使用的是0.38.2coapod版本和2.5.4 AFNetworking。

我试图在cocoapod中使用AFNetworking,但是在编译过程中得到了AF_APP_EXTENSIONS错误。在网上搜索解决方案后,我理解了这个问题,并发现定义‘预处理宏’AF_APP_EXTENSIONS可以解决这个问题。

但这是一个难题:默认情况下,AF_APP_EXTENSIONS被正确地添加到我的6 app_extensions中。另一方面,当我在Pods目标中导航时,每个Pods都是分开的

代码语言:javascript
复制
- NSDate+TimeAgo 
- AFNetworking
- iRate
- AppUtils
- Prod
- Prod_app_extension_1
- Prod_app_extension_2
- Beta 
- Beta_app_extension_1
- Beta_app_extension_2
- Dev
- Dev_app_extension_2
- Dev_app_extension_2

在我做的另一个项目中,所有的吊舱都是这样生成的:

代码语言:javascript
复制
- Prod
- Pods-Prod-NSDate+TimeAgo
- Pods-Prod-AFNetworking
- Pods-Prod-iRate
- Pods-Prod-AppUtils

- Prod_app_extension_1
- Pods-Prod_app_extension_1-NSDate+TimeAgo
- Pods-Prod_app_extension_1-AFNetworking
- Pods-Prod_app_extension_1-iRate

- Prod_app_extension_2
- Pods-Prod_app_extension_2-NSDate+TimeAgo
- Pods-Prod_app_extension_2-AFNetworking
- Pods-Prod_app_extension_2-iRate

- Beta
- Pods-Beta-NSDate+TimeAgo
- Pods-Beta-AFNetworking
- Pods-Beta-iRate
- Pods-Beta-AppUtils 

- Beta_app_extension_1
- Pods-Beta_app_extension_1-NSDate+TimeAgo
- Pods-Beta_app_extension_1-AFNetworking
- Pods-Beta_app_extension_1-iRate

- Beta_app_extension_2
- Pods-Beta_app_extension_2-NSDate+TimeAgo
- Pods-Beta_app_extension_2-AFNetworking
- Pods-Beta_app_extension_2-iRate

- Dev
- Pods-Dev-NSDate+TimeAgo
- Pods-Dev-AFNetworking
- Pods-Dev-iRate
- Pods-Dev-AppUtils 

- Dev_app_extension_1
- Pods-Dev_app_extension_1-NSDate+TimeAgo
- Pods-Dev_app_extension_1-AFNetworking
- Pods-Dev_app_extension_1-iRate

- Dev_app_extension_2
- Pods-Dev_app_extension_2-NSDate+TimeAgo
- Pods-Dev_app_extension_2-AFNetworking
- Pods-Dev_app_extension_2-iRate

我认为这就是为什么我的“预处理器宏”AF_APP_EXTENSIONS没有被定义为“AFNetworking”Pods目标的原因。

这是我的个人档案:

代码语言:javascript
复制
platform :ios, '7.0'

xcodeproj 'myProj.xcodeproj'


def generic_pods
    pod 'NSDate+TimeAgo'
    pod 'AFNetworking', '~> 2.0'
end

def app_pods
    pod 'iRate'
    pod 'AppUtils',
end



target "Prod" do
    generic_pods
    app_pods
end

target "Prod_app_extension_1" do
    generic_pods
end

target "Prod_app_extension_2" do
    generic_pods
end

target "Beta" do
    generic_pods
    app_pods
end

target "Beta_app_extension_1" do
    generic_pods
end

target "Beta_app_extension_2" do
    generic_pods
end

target "Dev" do
    generic_pods
    app_pods
end

target "Dev_app_extension_1" do
    generic_pods
end

target "Dev_app_extension_2" do
    generic_pods
end

我不知道问题出在哪里,这让我发疯了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 15:30:03

自0.38.0Coapod版以来,pod目标为非重复.这意味着,与其为每个项目目标(‘Pods-MyApp’、‘Pods-MyExtension’)扩展一个AFNetworking,只生成一个AFNetworking吊舱目标('Pods-AFNetworking')。

当添加到应用程序扩展时,AFNetworking需要在GCC_PREPROCESSOR_DEFINITIONS中使用“AF_APP_EXTENSIONS”标志来编译。

在0.372coopod版本之前,可以通过添加一个安装后例程从项目Podfile中添加标志:

代码语言:javascript
复制
post_install do |installer_representation|
    installer_representation.pods_project.targets.each do |target|
        if ar.include? target.name
            target.build_configurations.each do |config|
                config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'AF_APP_EXTENSIONS=1']
            end
        end
    end
end

不幸的是,使用反重复的cocoapod特性,不再可能将AF_APP_EXTENSIONS标志单独添加到应用程序扩展结荚目标中。

我发现的唯一方法是创建一个文件:~/.cocoapods/config.yaml (在默认情况下,当您使用cocoapod时,您可以使用终端创建它):

代码语言:javascript
复制
deduplicate_targets: false 

这样,豆荚不会被反复制,您可以在安装后将AF_APP_EXTENSIONS添加到应用程序扩展GCC_PREPROCESSOR_DEFINITIONS中。

我只希望他们能找到一个很好的方法来防止这个问题。

参考资料:

https://github.com/CocoaPods/CocoaPods/blob/master/CHANGELOG.md#highlighted-enhancement-that-needs-testing =>茧足类变化日志

https://github.com/CocoaPods/CocoaPods/issues/3794 =>讨论了这个问题

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

https://stackoverflow.com/questions/31791365

复制
相关文章

相似问题

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