尝试构建一个Cocoapod库,该库依赖于我拥有的其他已发布的Cocoapod库,使得XCode中的项目构建正常,但运行pod lib lint
命令以检查pod有效性失败,
error: include of non-modular header inside framework module
关于库(pod)的头文件,我依赖于。所有来源都是Obj-C而不是Swift。
根据找到的建议here
,我确实尝试了以下操作public
而不是project
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES =
YES
public
。但问题仍然存在,我无法发布pod也无法测试它。
更新
当我评论出来的时候
s.dependency 'OldPodIDependOn'
在我的新pod的podspec文件中的行然后错误消失但找不到相关的标题。如果我不在Podfile
文件夹下的./Example
中包含我所依赖的pod,就像这样:
target 'NewPod', :exclusive => true do
pod "NewPod", :path => "../"
pod "OldPodIDependOn", :path => "../../OldPodIDependOn/"
end
然后项目将不会在XCode中构建,因为OldPodIDependOn
文件不是项目的一部分。有一点鸡蛋或鸡蛋问题。
更新2
还尝试删除:path => "../../OldPodIDependOn/"
组件以引用已发布的广告连播而不是本地广告连播 - 不提供帮助。
值得一提的是,这个pod将包含一个UI,因此将包含和引用一个故事板,我将s.resources = 'Pod/Classes/UI/NewPod.storyboard'
行添加到podspec文件中,并从pod目标编译源中删除了storyboard(否则为xcode不会建立)。我不认为这与问题有关,但值得一提,也许我在那里做错了。
我做错了什么? 任何帮助将不胜感激!
答案 0 :(得分:4)
为了最终解决这个问题,我不得不放弃pob lib create
创建的工作区 - 没有办法绕过它,我尝试了所有可能的组合/建议/代码修改来摆脱"非框架内的模块化标题"错误但似乎没有任何效果。 pod lib lint
总是失败。
我从头开始创建自己的静态库xcode项目,然后在将依赖pod添加到pod update
后在其上运行Podfile
,然后为此lib创建一个.podspec
文件并添加依赖的pod头文件到"复制文件"将静态lib目标+ libPods.a
文件的阶段构建到"链接二进制文件与libs"建设阶段。噗!没有更多"非模块化标题"来自pod lib lint
的错误,即使我实际上做的完全相同。获得的经验教训是,不建议将pod lib create
用于所有cocoapod案例。
答案 1 :(得分:2)
我遇到了同样的问题,我使用了
pod lib lint MyPod.podspec --allow-warnings --use-libraries
添加--use-libraries选项时,它可以正常工作。
答案 2 :(得分:1)
通常error: include of non-modular header inside framework module
意味着生成的框架中的一个头文件(CocoaPods现在为框架和库提示)不存储在框架内,或者被归类为公共头。
通常可以将外部imports
移动到实施文件中,请参阅此Modified to support using framework #353。