在框架模块错误中包含非模块化标头
Posted
技术标签:
【中文标题】在框架模块错误中包含非模块化标头【英文标题】:Include of non-modular header inside framework module error 【发布时间】:2016-11-20 06:49:49 【问题描述】:尝试将 ParseLiveQuery cocoapod 集成到我的项目中,但是在构建时我不断收到错误消息:
'Bolt.BFCancellation'
我通过 cocoapods 安装了 ParseLiveQuery(连同 Parse)。这是我的 podfile:
use_frameworks!
pod 'ParseLiveQuery'
pod 'Parse'
post_install do |installer|
installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
configuration.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
end
end
我还在构建设置中将 Allow Non-module Includes In Framework Modules 设置为 Yes,但仍然出现此错误。
【问题讨论】:
【参考方案1】:我解决了从框架中删除 Modules
文件夹的问题。
使用查找器浏览到应用程序项目中存在的框架位置
进入Test.framework
文件夹(在上述情况下为ParseLiveQuery.framework
)并删除Modules
文件夹。
清理并重新构建应用程序,它将解决问题。
【讨论】:
【参考方案2】:我自己也遇到了。我将头文件添加到框架的伞头文件中,然后将其作为 Public 添加到 Headers 部分。 (我正在添加可达性库)
到目前为止,它似乎对我有用。
【讨论】:
在这种情况下,可达性将在框架之外可见。但是我不想暴露这些Reachability类,我该怎么办? —— 我不得不考虑一下,但这真的重要吗? Reachability 是一个“公共”库,那么通过您的库“提供”它的缺点是什么? 是的,这很重要。由于我的框架中有很多 OC 代码。我不希望我的框架的用户看到这些 OC 代码。无论如何,我找到了另一个解决方案:使用像这个家伙这样的模块:***.com/questions/42085217/… @DàChún this answer 基本上说要为 Obective-C 代码制作一个单独的 swift 模块,这样标题就不必设置为Public
以上是关于在框架模块错误中包含非模块化标头的主要内容,如果未能解决你的问题,请参考以下文章
xCode 7 错误:在 Google 地图的框架模块中包含非模块化标头
带有 iOS 9.1 错误的 Xcode 7.1:在框架模块“Parse.PFGEoPoint”中包含非模块化标头