创建依赖于另一个pod的pod

min*_*omb 6 xcode objective-c ios cocoapods

试图建立一个Cocoapod库,它依赖于我拥有的其他已发布的Cocoapod库,让XCode中的项目构建正常,但运行pod lib lint命令检查pod有效性失败了 error: include of non-modular header inside framework module,库的头文件(pod)我依赖于.所有来源都是Obj-C而不是Swift.

根据这里的建议,我确实尝试了以下内容

  • 设置从属库的头文件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
Run Code Online (Sandbox Code Playgroud)

然后项目将不会在XCode中构建,因为OldPodIDependOn文件不是项目的一部分.有一点鸡蛋或鸡蛋问题.

更新2 还尝试删除:path => "../../OldPodIDependOn/"组件以引用已发布的窗格而不是本地窗格 - 没有帮助.

值得一提的是,这个pod将包含一个UI,因此将包含和引用一个故事板,我s.resources = 'Pod/Classes/UI/NewPod.storyboard'在podspec文件中添加了一行,并从pod目标编译源中删除了故事板(否则xcode将无法构建).我不认为这与问题有关,但值得一提,也许我在那里做错了.

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

min*_*omb 4

为了最终解决这个问题,我不得不放弃pob lib create创建的工作区 - 没有办法解决它,我尝试了所有可能的组合/建议/代码修改以摆脱“框架内的非模块化标头”错误,但似乎没有任何效果。pod lib lint总是失败。

我从头开始创建了自己的静态库 xcode 项目,然后pod update在将依赖的 pod 添加到 后运行它Podfile,然后为此 lib 创建一个.podspec文件,并将依赖的 pod 头文件添加到静态 lib 目标的“复制文件”构建阶段+libPods.a文件到“链接二进制文件与库”构建阶段。噗!pod lib lint尽管我实际上在做完全相同的事情,但不再出现“非模块化标头”错误。吸取的教训是,pod lib create不建议对所有 cocoapod 案例都这样做。