创建依赖于另一个pod的pod

时间:2015-03-28 02:59:17

标签: ios objective-c xcode cocoapods

尝试构建一个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不会建立)。我不认为这与问题有关,但值得一提,也许我在那里做错了。

我做错了什么? 任何帮助将不胜感激!

3 个答案:

答案 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