静态框架链接到Cocoapod在主项目中找不到

8

我正在尝试通过Carthage将静态框架(Moya)添加到我的私有Cocoapod项目中。

我的目标是在我的私有Cocoapod(SwiftModel)中包含Moya作为静态框架,并在我的主项目中也使用Moya(因为SwiftModel依赖于它)。

我通过以下步骤将Moya添加到我的框架中:

  1. 在podspec文件中链接框架

    s.vendored_frameworks = 'SwiftModel/Carthage/Build/iOS/Moya.framework'

  2. 将Moya添加到私有框架(Link Binary With Libraries)

enter image description here

所以在我的Pods项目中,它看起来像这样:

enter image description here

尝试将路径添加到“Framework Header Search Path”中并没有产生任何变化。我已经尝试在主项目和pods项目中添加它。
当只构建私有pod时,一切正常,Moya被识别。但是,如果我想构建包含私有pod的主项目,我总是会得到这个错误: framework not found Moya for architecture arm64

enter image description here


Cocoapod和Carthage是两个不同的东西,当你使用Cocoapod时,你不需要显式地将框架文件添加到你的项目中。如果你使用Carthage添加它,则需要将.Framework文件添加到你的项目的“链接二进制文件与库”部分,而不是Pod内部。 - Dipen Panchasara
我明确想要添加这个框架,因为我想减少主项目的编译时间。然而,我的私有框架被集成为私有 pod,但是我的私有 pod 使用了其他像 Moya 这样的框架,这些框架被集成为框架。(请参见步骤2) - gpichler
虽然你需要将它添加到你的项目中,而不是Pod项目中。将它从Pod项目中移动到你的项目中。 - Dipen Panchasara
为什么需要在两个地方都加入它?每次只使用其中一个:1)手动添加到您的主项目中,2)使用Cocoapods添加,或3)使用Carthage添加。 - Dipen Panchasara
如果我没有解释清楚,我很抱歉。SwiftModel(私有pod)是一个独立的框架,也可以在其他项目中使用(需要通过Carthage使用Moya来减少编译时间),主项目需要SwiftModel(作为Cocoapod)和Moya(应该使用来自SwiftModel的Moya)。 - gpichler
显示剩余3条评论
1个回答

2

根据您的错误提示:

framework not found Moya for architecture arm64

这意味着Moya在arm64架构上不可用,但是您的主项目具有以下体系结构:- arm64、armv7和armv7s。从您的主项目的有效架构中删除arm64。

  • 另外尝试在其他链接标志中添加-Objc
  • 尝试将libz添加到您项目的链接库部分。

iOS支持矩阵:-

enter image description here


很遗憾,无法删除我的主要项目的arm64架构。而且如果Moya不支持arm64,那将是令人惊讶的。 - gpichler
你尝试过我以项目符号列出的其他选项吗? - pkc456
是的,不幸的是错误仍然存在。我不确定使用Cocoapods(vendored frameworks)是否可能。 - gpichler
我在 official moya github 上找到了类似的问题。(关于 carthage update --platform iOS --no-use-binaries 和删除一个文件夹的事情。) - pkc456

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接