创建依赖于另一个 pod 的 pod

Creating a pod that relies on another pod

尝试构建一个 Cocoapod 库,该库依赖于我拥有的其他已发布的 Cocoapod 库,在 XCode 中获取项目以构建 OK,但是 运行 pod lib lint 命令用于检查 pod有效性失败 error: include of non-modular header inside framework module 在我所依赖的库 (pod) 的 header 文件上。所有来源都是 Obj-C 而不是 Swift.

我确实尝试了以下,根据发现的建议here

但问题依然存在,我无法发布 pod 也无法对其进行测试。

更新 当我注释掉 s.dependency 'OldPodIDependOn' 我的新 pod 的 podspec 文件中的行然后错误消失但找不到相关的 headers。如果我不在 ./Example 文件夹下的 Podfile 中包含我依赖的 pod,就像这样:

target 'NewPod', :exclusive => true do
  pod "NewPod", :path => "../"
  pod "OldPodIDependOn", :path => "../../OldPodIDependOn/"
end

那么项目将不会在 XCode 中构建,因为 OldPodIDependOn 文件不是项目的一部分。有点 chicken-or-the-egg 问题。

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

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

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

一般来说,error: include of non-modular header inside framework module 意味着生成的框架中的头文件之一(CocoaPods 现在用于框架和库的 lints)没有存储在框架中,或者被归类为 public 头文件.

这通常可以解决将外部 imports 移动到实现文件中的问题,请参阅此 Modified to support using framework #353

为了最终解决这个问题,我不得不放弃 pob lib create 创建的工作区 - 没有办法绕过它,我尝试了所有可能的组合/建议/代码修改来摆脱 "non-modular header inside framework" 错误,但似乎没有任何效果。 pod lib lint总是失败。

我从头开始创建了我自己的静态库xcode项目,然后运行 pod update在它上面添加了依赖的pod到Podfile,然后创建了一个.podspec 文件,并将依赖的 Pod 头文件添加到静态库目标的 "Copy files" 构建阶段 + libPods.a 文件添加到 "Link Binary with libs" 构建阶段。噗! pod lib lint 不再有 "non modular header" 错误,即使我实际上在做完全相同的事情。吸取的教训是 pod lib create 不推荐用于所有 cocoapod 案例。

我遇到了同样的问题,我使用了

pod lib lint MyPod.podspec --allow-warnings --use-libraries

添加 --use-libraries 选项时,它起作用了。