ld:找不到框架Pod


234

我正在尝试向我的IOS项目添加框架,但是在构建时,我总是收到相同的消息:

ld:找不到框架Pod

铛:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我试图删除我的Pods目录,然后运行,然后pod install 打开.xcworkspace它,就像在pod安装的日志中写的一样,我在xcode上清理了项目,然后尝试构建,但它不起作用。

我的podfile看起来像这样:

xcodeproj '/Users/guillaume/project/Mobile/iOS/FoodPin/FoodPin.xcodeproj'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'SwiftHTTP', '~> 0.9.2'

我的xcode版本是 6.3.1

谢谢,


1
您是否检查了libpods.a目标的“链接框架和库”中的内容?在您的构建阶段中也是如此?
BoilingLime 2015年

您设法解决了吗?我有同样的错误
克里斯托弗旧金山

@ChristopherFrancisco我解决了,检查我的答案。
Arbitur

1
这个如何回答 [1]解决了我的问题!希望它有助于[1]:stackoverflow.com/a/31161871/1557663
马里奥·卡瓦略

@MárioCarvalho那就是我的答案x更长,更初学者的版本x)
Arbitur 2015年

Answers:


524

Project Navigator文件夹中,Pods我有一个Pods.framework红色的文件夹。它也存在于中Linked Frameworks and Libraries。我删除了两个引用,错误消失了。

TL; DR

移入Pods.framework

  • 文件夹名为 Pods
  • Linked Frameworks and Libraries

5
我认为添加use_frameworks后最终遇到了这个问题!到我的Podfile,然后将其注释掉。删除对Pods.framework的引用即可解决此问题。
StephenT

2
@StephenT是的,我相信这也是我所做的事情,首先使用use_frameworks!,然后使用,然后在Pods.framework使用期间可能没有正确删除pod install。可能是Cocoapods中的错误。
Arbitur

这是一个很好的答案,不影响示例应用程序,它仍然运行良好
Gabriel Goncalves

3
如果这不起作用,请尝试使用cocoapods-deintegrate。这就为我解决了这个问题。
nickdnk

2
运行pod安装后,我以某种方式最终在Pods文件夹中得到了一个“ Pods_ <项目名称>”。framework文件。删除此文件,清理和重建对我来说已经消除了此错误。
卡雷布·法鲁基

209

这通常是由于打开.xcodeproj文件而不是.xcworkspace引起的。

首次运行“ pod安装”时,它将创建一个.xcworkspace文件,其中包括原始的.xcodeproj和一个Pods项目。您需要关闭.xcodeproj,然后打开.xcworkspace。

通过Xcode的新项目向导创建项目时,这是一个常见问题-我经常忘记我不在工作区中,而这是使Cocoapods正确链接所必需的。


谢谢 !第一次让我感到困惑
Phi Nguyen

6
您的解释比我在其他地方看到的要好得多。我不知道发生了什么事。谢谢!
Michael Yaworski '16

与Arbitur的答案结合使用时,可以解决此问题。谢谢!
user1577390

这正是我的问题。谢谢!
Antonio Papalillo

我的项目中没有.xcworkspace文件。怎么办
Kartiikeya

126

Xcode 9、10、11、11.5

安装https://github.com/CocoaPods/cocoapods-deintegrate

pod deintegrate

然后

pod install

1
像魅力一样工作!谢谢。这摆脱了对导致此错误的重命名目标的旧引用。
Alex Obenauer

1
你是我的英雄!;)
Swissdude

1
哇,你救了我的一天!从昨天开始就被卡住了,终于用Xcode 10解决了。谢谢!
Purushottam Padhya,

1
这应该是正确的答案,这是最安全的方法。当使用诸如CocoaPods之类的自动化工具时,请勿执行手动步骤,除非它是已知的错误,否则无法修复。
Gobe

1
这帮我,太棒了!
Sruit A.Suk

51

我通过删除.framework文件夹Frameworks中的红色文件来清除此错误project navigator。我认为这也会自动删除设置Linked Frameworks and Libraries部分中的相应红色条目General

我一直在清洁/重新安装吊舱以解决另一个问题。也许这些红色框架文件和条目只是以前的Pod安装中遗留下来的?


是! 我的问题是在“常规设置”的“链接框架和库”中,由于找不到文本搜索而很难找到!
阿利斯泰尔·库珀

在我的情况下,框架文件甚至没有红色,而是变灰了。但是删除它们似乎已经解决了问题!
骗子

29

对于谁发现这个问题。我正在使用NativeScript并遇到相同的错误。

发生这种情况是因为我打开了文件.xcodeproj,但是我们必须通过文件.xcworkspace打开项目。


27

更新我的Podfile并进行Pod更新后,这发生在我身上。

由于某种原因,我的项目下的“目标”>“常规”>“链接的框架和库”下出现了一个“ Pods_ [ProjectName]”。framework文件。

删除此问题,然后清理/重建可解决此问题。


2
当您切换项目名称并需要清除旧名称时,会发生这种情况。+1
Babbz77

这对我有用。我没有更改项目名称,而是将Swift添加到了长期运行的Objective-C项目中。
路飞

24

我有一个类似的问题

framework not found Pods_OneSignalNotificationServiceExtension

通过删除以下内容解决了该问题。转到目标 OneSignalNotificationServiceExtension>构建阶段>使用库链接二进制文件并删除Pods_OneSignalNotificationServiceExtension.framework 这里应该是空的。 希望这会有所帮助。干杯。


这为我解决了这个问题。我的特殊情况是我有一个iOS目标MyApp。然后,我需要创建第二个目标,并具有MyAppFirst,MyAppSecond目标。Cocoapods能够构建所需的内容(Pods_MyAppFirst,Pods_MyAppSecond),但它也试图链接到不再存在的Pods_MyApp。我想指出的是,在尝试修复的过程中,我确实丢弃了工作空间文件和Pods文件夹,以便在执行“ pod -install”时从头开始重新创建它们,但这并没有帮助。
xdeleon

@Sharukh Mastan您是否有任何想法在安装Pod后如何做到这一点?每次我安装Pod时,Pods_OneSignalNotificationServiceExtension.framework 都会在OneSignalNotificationServiceExtension目标的链接框架和库中困扰我。
Sethmr

@Sethmr可悲的是,没有。但是,就我而言,它并不总是在a之后发生pod install,而是随机的。
莎鲁克·马斯坦

@SharukhMastan我的问题是开放的*.xcodeproj/*.xcworkspace*.xcworkspace我的VSTS .yml自动化脚本。我对gui有更好的了解,但是仍然习惯了脚本领域的要求。
Sethmr '19

15

我收到此错误的原因是,我重命名了项目,也更改了pod文件中的项目名称,但是我的项目引用的是旧名称,而该旧名称不存在并导致此错误。我摆脱了

pod deintegrate

其次是

pod install

是! 将版本从12.0降级到9.0时,我遇到了同样的问题。在我修改了Podfile中的目标版本以匹配项目中的内容之后,以上内容起作用了。
理查德·鲍恩

好答案。谢谢。
whdals0

14

您应该删除项目中的某些文件作为此图片。

您应该删除pods.framework和pod标记为红色文件


10

只需从“您的项目->常规->链接的框架和库”列表中删除.framework。


就是这样,我将项目重命名后有两个。谢谢!
吉米

10

这是我发生的事情,因为我更改了Deployment Targetin General却忘记了更改Deployment Targetin Pods > General更改部署目标


Xcode 11.2 / Cocoapods 1.8.4也为我修复了该问题。令人讨厌的是该错误消息与根本原因不相似...
Jonathan Ellis

1
为我修复了该问题-不知道我需要在两个地方都进行更改。万分感谢!
hakazvaka


4

第1步

您需要做的第一件事是删除Podfile,Podfile.lock,Pods文件夹和生成的工作区。

第2步

接下来,在.xcodeproj中,删除对Pods.xcconfig文件和libPods.a文件的引用。

第三步

在“构建阶段”项目选项卡中,删除“检查Pod Manifest.lock”部分(打开),“复制Pod资源”部分(底部)和“嵌入Pod资源”(底部)。

第4步

删除Pods.framework。

您可能要做的唯一一件事就是包括以前使用过的某些库。您可以通过简单地将pod文件夹中的任何文件夹拖到您的项目中来完成此操作(我更喜欢将它们放入我的Supporting Files文件夹中)。

它为我工作。


在我的情况下,第3步有效,第3步-> cmd + alt + shift + k。
ViruMax

4

您很有可能尝试使吊舱进入您的项目,对吗?唯一的方法是创建一个使用CocoaPods的单独项目。

关闭所有正在使用的工作区。

接下来,请确保您已经准备好完整运行Podfile。

在命令行中,无论文件在哪里,都键入以下命令:

pod deintegrate

然后,安装您的Pod Agian。

pod install or pod update

现在,您可以使用项目的新工作区进行开发。查找名为.workspace的文件。使用该文件!

这是使用CocoaPods的指南


经过2天的错误努力之后,只有这个为我工作。
Mitesh Dobareeya,

3

使用Xcode 8.3,接受的答案对我不起作用。我曾尝试过许多其他解决方案,但@Elliott Davies的答案是对我而言固定的。为了清楚起见,我添加了一个屏幕截图。由于某些原因,Xcode试图链接以前不再存在的Podfile设置。我要做的就是删除多余的引用,一切正常。Xcode链接框架和库的屏幕快照


3

这个问题使我发疯,因为它突然发生而没有对项目做任何更改。我已经尝试了该线程(以及其他相关线程)中所有建议的解决方案,但没有一个解决了问题。

与我的其他项目(编译良好)唯一不同的是,该项目名称包含重音符号(法语重音“é”)。我已将项目和所有相关文件重命名,终于成功了!

也许这与更新到Xcode 10有关,因为该项目在...之前运行良好。

编辑:-在项目名称中使用项目时,它似乎也失败了…


1
您救了我的命
Florian Mac Langlade

1
也救了我的命!

除了重命名项目外,还有其他解决方案吗?
anestis

@anestis我不这么认为。为了快速重命名该项目,我建议从此答案stackoverflow.com/a/48004237/4894980中获得命令,这些命令做得非常好!
AnthoPak

3

就我而言,在比较了我知道正确构建的分支之间的差异之后,我注意到了Podfile中的这一行:

platform :ios, '11.0'

我在无意间将目标版本从10提高到11,而我在Xcode中的目标仍然设置为10。恢复到10可以解决我的问题。

确保正确设置了目标iOS版本。


你救了我的一天!谢谢
Mayank Patel

3

这就是我解决问题的方式。现在我写这个答案时有效:

首先,我尝试上述所有最固定的方法,

在目标的构建阶段从链接库和框架中删除Pods_xxx.framework很有帮助,该问题将消失,但是即将出现的问题是我无法再导入Pods.framework。

然后,我尝试重新初始化xcworkspace配置,以便我可以找出真正的问题。所以我跑

pod deintergate

然后再次安装我的Pod:

pod install

这项工作很完美,但是问题仍然存在,但我发现真正的问题是Poco_xxx.framworks无法通过cocoapods构建脚本成功编译。我认为这是解决问题的真正方法。

最后,我尝试编辑项目的方案:

Pod方案未编辑

我将Pods方案添加到管理中:

在此处输入图片说明

并分别构建此Pods.framework,您将发现Pods.framework图标再次真正变为:

在此处输入图片说明

而且我认为现在您已经解决了“找不到Pods_xxxx.framework的框架”问题,但实际上我遇到了另一个问题:

在此处输入图片说明

所以我去构建设置,编辑"Framework Search Path""${inherited}"现在所有的问题熄灭,欢呼!!!! :)

在此处输入图片说明


添加Pod目标并构建它实际上显示了Pod构建的问题。在我们的案例中,这是迅速的版本冲突。谢谢!
green0range '19

我没有遵循所有步骤。我只是添加了该${inherited}路径,然后执行了Product->Clean Build Folder,就是这样,现在它可以轻松构建了。
Starwave

2

删除和更新Pod之后,我仍然遇到相同的问题。

我发现以前的开发人员将标记放在带有框架名称的“ Build Settings-> Other Linker Flags ”中(在我的情况下为-framework'OGVKit')。

删除该标志后,项目将正确构建。


非常感谢!您始终必须注意“ 构建设置” 中加粗的内容
Marcio Granzotto

2

我确实遇到了此问题,因为我没有platform正确设置。

因此,在我的macOS应用中,我将平台设置为:

platform :ios

代替

platform :osx

1

我通过选择从其下载CocoaPods并构建的项目解决了此问题,您可以单击“管理方案”,使其可以在“运行”栏中显示。然后,您可以重建您的项目。希望对您有所帮助。


1

就我而言,有一个我删除的库的引用

目标>构建设置>运行路径搜索路径

从Podfile中删除该库并进行更新显然并不能将其删除,所以我不得不手动进行操作,现在一切正常。


1

先前的答案都没有指出我所处的根本问题。因此,我希望这对其他人可能有用。

以我为例,我最终不得不在项目的根目录下编辑podfile。首次创建Podfile时,不支持快速静态库。所以我一直use_frameworks!在我的每个目标下的podfile中使用这样的代码:

之前

...
target 'targetName' do
   use_frameworks!
   pod 'podName', '~> 0.2'
end

...
target 'targetName' do
   pod 'podName', '~> 0.2'
end

use_frameworks!从podfile中删除了,每次运行pod install时,podfile都会继续安装框架。删除此行后,请确保pod install再次运行并从Xcode中的Frameworks文件夹中删除任何红色的.framework引用。(尽管我的出现与以下内容有所不同。)

删除不再需要的.framework文件的图像

您还可以在use_framework! 此处了解更多信息。


0

如果您打开.xcworkspace文件,仍然出现相同的错误:

delete all the contents of Pods directory and from command line write "pod install" to resolve the issue.

0

删除Pod安装或更新后创建的frameworks文件夹


0

解决我问题的另一件事是进入“目标”->“构建设置”->“其他链接器标志”,然后删除“ -framework”和您的框架“ name”。

当我尝试卸下豆荚时发生了。


0

我通过将.framework文件拖到“ 链接的框架和库”来解决此问题

可以说由于错误我遇到了这个问题FIRAnalyticsConnector not found,我只是将FIRAnalyticsConnector.framwork文件拖到链接框架和库中,问题就解决了


0

我在这里尝试了所有答案,但没有一个起作用。我最终通过将部署目标从10.0升级到11.0使其工作。我不知道为什么要修复它,但是我怀疑它与升级到Xcode 10.2.1有关。



0

请在.Framework内检查您的可执行文件,例如 在此处输入图片说明

  1. 可执行文件名应该是这样,没有任何扩展名。

  2. 一些这样显示的框架 在此处输入图片说明

  3. 使用Terminal goto .framework目录,使用以下命令lipo -create FrameworkName-x86_64 FrameworkName-armv7 FrameworkName-armv7s FrameworkName-i386 FrameworkName-arm64 -output FrameworkName

创建单个可执行文件后,删除此文件 在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.