没有带有 cocoapods 和 swift 的模块“RestKit”
Posted
技术标签:
【中文标题】没有带有 cocoapods 和 swift 的模块“RestKit”【英文标题】:No such module 'RestKit' with cocoapods and swift 【发布时间】:2015-05-01 20:08:13 【问题描述】:我在一个全新的项目中遇到了这个问题。 RestKit 和 Facebook SDK 都会出现此问题。奇怪的是 SwiftyJSON 工作得很好。我创建了一个全新的 swift 项目和一个 Podfile:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target 'test-fb-swift4' do
pod "FBSDKCoreKit"
pod 'SwiftyJSON', '~> 2.1'
pod 'RestKit', :inhibit_warnings => true
end
target 'test-fb-swift4Tests' do
end
创建该文件后,我运行 pod install 并使用 test-fb-swift4.xcworkspace 文件重新打开 xcode。
现在在我的控制器中,我放了一个导入 RestKit,我得到错误 No such module 'RestKit'。我尝试了许多不同的方法来格式化 Podfile,甚至是非常简单的版本,例如:
source 'https://github.com/CocoaPods/Specs.git'
pod 'RestKit'
我已经尝试添加和删除 use_frameworks,无论有没有目标。有和没有 :inhibit_warnings。
我正在运行 CocoaPods 0.36.4 并尝试了最新的 rc 构建,同样的交易。另一个项目的 Objective-C 版本运行良好。这是我第一个使用 Swift 的项目,我被困在这个问题上。
【问题讨论】:
显示您的导入方式。 【参考方案1】:我遇到了同样的问题。我的解决方案是使用.xcworkspace
打开项目,而不是.xcodeproj
。 .xcodeproj
只包含主项目; .xcworkspace
包括所有内容,包括 Restkit。
【讨论】:
我必须“另存为工作区”才能为新项目获取工作区 很高兴经过 1 个多小时的搜索,我找到了这个答案。 OP 真的应该将此标记为已接受。 非常丑陋的解决方案。更好的方法是解决这个问题:在 Target > Build Phases > Link Binary With Libraries 上删除并添加回 Pods.framework。 OP 说他们已经这样做了——“创建该文件后,我运行 pod install 并使用 test-fb-swift4.xcworkspace 文件重新打开 xcode。” 【参考方案2】:我遇到了类似的问题。不是专门使用 RestKit,而是最初使用 HockeySDK。我尝试了一切,包括删除和重新安装 pod、更新 cocoapods 本身和更新 pod、删除派生数据、清理项目等。
然后我注意到每个 pod 对我来说都是一个问题。继续搜索相关话题后,终于发现下:
• 目标 > 构建阶段 > 将二进制文件与库链接
我有一个放错位置的 Pods 框架(可能来自之前的 Pods 设置或安装尝试)。
删除它后,问题就消失了。我注意到人们似乎在以下情况下遇到了类似的问题:
• 项目 > 信息 > 配置
还有,Pods 框架的映射不正确。因此,如果第一个不适合您,您可能还需要检查第二个。
【讨论】:
关于构建配置的第二个建议是造成这种情况的原因。我在应用程序的项目上重命名了我的“调试”构建配置,但在 Pods 项目上,这创建了一个新配置,而不是重命名“调试”。从 Pods 项目中删除“调试”配置,使配置与应用程序项目中的配置相匹配即可解决。【参考方案3】:第二个选项对我有用。在我的项目 > 信息 > 配置中,我的项目有 2 个目标:常规目标 (Quizz) 和测试目标 (QuizzTests):
对于常规配置,配置是使用“Pods.debug”或“Pods.release”设置的,但 QuizzTests 没有。一旦我填写了 QuizzTests 的配置,一切都对我有用。
【讨论】:
【参考方案4】:对我来说,解体并重新安装 pod 解决了这个问题。
第一
pod deintegrate
然后
pod install
【讨论】:
这是一个非常简单的解决方案,由于某种原因,此处列出的其他解决方案对我不起作用。可能无关紧要,但请确保在取消集成时关闭 Xcode。 这里也一样。在我rm -r
'd 我的 Pods 目录并使用 pod install
重新安装后,我遇到了麻烦,但 pod deintegrate
和 pod install
工作正常。【参考方案5】:
您可以很容易地解决此问题的一件事是确保在安装 pod 时完全关闭 XCode。每当我遇到这个问题时,我都会回去发现 XCode 仍然打开,即使我关闭了项目。希望有帮助!
【讨论】:
非常有帮助,除了这一步,我什么都试过了。 是的,如果 pod 安装是在 Xcode 打开的情况下进行的,那么框架最初是不可见的。只需关闭并重新打开项目即可为我解决此问题。【参考方案6】:此问题的另一个原因可能是目标的构建设置中的错误值 - 仅构建活动架构。图片中的设置对我有用。
【讨论】:
有趣,也为我修复了。我之前更改了此设置,但再次执行pod install
重置值。【参考方案7】:
我发现的另一个潜在解决方案是将use_frameworks!
添加到您的 Podfile(如果尚未添加),然后再次运行 pod install
。
当我仅添加该 pod 时,Firebase 存在问题。
【讨论】:
也为我工作。似乎我已经删除了 use_frameworks!来自我的 Podfile,因为我有一个混合的 Swift/Objective-C 项目,所以 Swift 部分需要包含的框架。【参考方案8】:对我来说,“查找隐式依赖项”未被选中。这就是问题所在。
一旦我checked
它工作得很好。
路径:Edit Scheme > Build > Find implicit Dependencies
【讨论】:
这个。如果可以的话,我会投票一千次。非常感谢。我关闭了这个选项,因为每次我更改任何文件时,Swift 都会继续重建每个文件。但是如果没有这个选项,Swift 就找不到 CocoaPods 包含的模块了。 @Womble。很高兴它对您有所帮助! 我为此损失了 3 天。谢谢你的解决方案,我给你一杯啤酒。【参考方案9】:在我的项目中添加 Fabric 时,我遇到了类似的问题。我有多个目标(发布和开发)。它会为import Fabric
抛出No Such Module
。对我有用的是转到 Project> Build Phases > Link Binary with Libraries 并简单地将 pod 框架 的状态标记为 Optional。
【讨论】:
【参考方案10】:就我而言,我只需要检查 Xcode 中的下一个选项 查找隐式依赖项
我不知道具体原因,但这对我来说已经足够了,希望你也这样:)。
【讨论】:
【参考方案11】:这应该可以解决问题:
-
吊舱解体
rm -rf yourproject.xcworkspace
pod 安装
【讨论】:
可以用'pod clean'代替第二点【参考方案12】:经过几个小时的尝试,我找到了原因。我的主要应用目标有 4 个构建配置(调试、发布、内部、外部)。但是我的框架(子项目)没有内部的,外部的,因为它们是自定义添加的。一旦我将内部/外部添加到我的框架项目中,所有存档都很好。
【讨论】:
【参考方案13】:就我而言,起初我在 xcode 中只有一个目标。我执行了pod install
。
几个月后,我不得不制定另一个目标,所以我有了多个目标。
在这种情况下,如果我执行 pod install
并构建 xcode,我会收到“没有这样的模块”错误。
所以我删除了pod
文件,然后删除了pod init
。
多个目标的 Podfile 格式已更改
有效!!
看看这个!
【讨论】:
Pod init 确实对我有用,我只是重新安装 pod 而不删除 podfile,但它与其他构建设置根本不起作用。这对我有用。我删除了 pods 文件夹、podfile 和项目工作区文件。然后 pod init ... 谢谢,我花了 3 个小时来解决这个问题!【参考方案14】:您的应用是否使用主要目标构建?
如果是这样,我可以通过:
-
为 Podfile 中的每个目标添加一个条目
运行
pod install
这是我的最终 Podfile。
platform :ios, '11.3'
target 'myapp' do
use_frameworks!
# Pods for myapp
pod 'KeychainSwift'
pod 'ReachabilitySwift'
pod 'Firebase/Core'
pod 'Fabric'
pod 'Crashlytics'
target 'myappTests' do
inherit! :search_paths
# Pods for testing
end
target 'myappUITests' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-local' do
inherit! :search_paths
# Pods for testing
end
target 'myapp-master' do
inherit! :search_paths
# Pods for testing
end
end
【讨论】:
【参考方案15】:这里的答案之一是make sure that XCode is completely shut down when installing pods
,我知道我没有这样做。所以我只是完全关闭了 Xcode 并再次打开它没有运行pod install
并解决了问题。所以重启 Xcode 对我有用。
【讨论】:
很高兴我能帮上忙【参考方案16】:当我在 Project - Build Settings(Info 旁边)中编辑和删除不需要的目录时,它正在擦除在 Build Settings 中的我的应用 Target 中的 Framework Search Paths 中取出两个条目。确保所有四行都有从 Pod install 自动填充的条目,如下图所示: 要将 Debug 和 Release 中的条目复制到下面的行,请一次选择一行,然后点击删除,它应该从上面的行中复制。 一旦我这样做了,工作区就会构建得很好。
【讨论】:
【参考方案17】:如果您正在使用访问同一类的多个目标(例如 Messages Extension App),并且如果将该类添加到两个目标,则必须在 PodFile 中为这两个目标添加 pod。
【讨论】:
【参考方案18】:我尝试过的事情:
删除和重新添加链接的 Pod 框架 清洁 删除派生数据 pod 再次安装我必须解决这个问题的唯一方法是在方案选择器中公开 Pods-(yourapp) 目标(在运行/停止按钮旁边)并在再次构建和运行我的主应用程序目标之前手动构建该 Pods-目标.我希望这可以为某人节省 10 分钟!
【讨论】:
【参考方案19】:创意日志: 首先,我认为这个问题是因为库链接或框架搜索路径缺少这个 pod,但实际上它确实在那里。
其次,我认为可能是因为 XCode 10 上的版本支持导致不正确地映射 pod。但是清理项目后,删除派生数据,关闭 Xcode,删除 pod 相关文件并重新安装 pod。所有这些步骤仍然失败...... 我在第二步上花了 4 小时……
第三,最后一直在 *** 中搜索谷歌,我发现这个人@Tyler Sheaffer 将他的经验留在了@metatheoretic 解决方案下。
有一个人将他的经验留给其他人回答。它提醒我,我确实在早期更改了多个方案的配置,最重要的是,因为我遵循的教程教我们用示例命名配置名称:Debug(Development)。但是 Cocoapods 不能接受 ()。因此,我修改了配置名称Debug_Development... 所以!!!问题是方案管理会自动更新我的一个客户方案(例如 Development , 生产)。但!!!这两个仍然是旧的错误配置名称。这就是为什么永远找不到我的 Kingfisher 模块的原因,因为它与配置和方案不匹配。最后,我通过在 Project/Scheme/Manage Schemes/Case closed 中选择新的更新配置文件来解决这个问题。
【讨论】:
【参考方案20】:当应用扩展程序的目标 iOS 版本与应用程序不同时,我发生了这种情况。让它们匹配为我解决了这个问题。
【讨论】:
【参考方案21】:在.gitignore
中将Pods
文件夹标记为已忽略后,我遇到了这个问题。我的解决方法是我 rm -rf
ed Pods
文件夹并运行 pod install
,清理并构建。
【讨论】:
【参考方案22】:如果您正在更新 Xcode 版本 11.0 (11A420a) 并且没有其他任何工作,我建议将所有库更新到 Swift 5.0。不幸的是,这是唯一对我有用的东西。
【讨论】:
【参考方案23】:在重命名我的项目并修改构建方案后,我也遇到了这个问题。经过几个小时的尝试,我发现了导致问题的原因。
CocoaPods 会为您导入的每个库自动生成构建方案。当您重命名项目构建配置时,这些方案不会使用相同的配置进行更新,因为它们位于单独的 .xcodeproject 中。
解决这个问题的步骤很简单:
-
在 Xcode 的左上角,选择您的构建方案和“管理方案...”
删除所有与“Pods 项目”相关的构建方案
关闭 Xcode,运行
pod deintegrate
和 pod install
在此之后,您可以打开 Xcode,构建现在应该可以工作了。
【讨论】:
是的,我的 Xcode 12.2 在单击“管理方案”时不断崩溃……还有其他方法可以删除 pod 构建方案吗? @Sevyls Xcode/Big Sur 的一个非常奇怪的错误,它也发生在 Xcode 应用程序设置中。奇怪的是,它只发生在 Xcode 窗口显示在外部监视器上时。因此,如果您使用的是连接到屏幕的笔记本电脑,只需将 Xcode 窗口移动到内部显示器,您应该可以按预期打开它。【参考方案24】:问题可能是真的没有这样的模块。特别是如果 pod 名称包含破折号和其他有争议的字符。
就我而言,我试图使用 Dip-UI 库。示例项目使用的是 Carthage,我想用 CocoaPods 替换它。 Carthage 的模块名称是 DipUI
,而 CocoaPods 的模块名称是 Dip_UI
,这意味着在我更改名称之前,我得到的是“没有这样的模块”。
【讨论】:
【参考方案25】:您的 xcode 未更新到库/框架预期的版本
【讨论】:
以上是关于没有带有 cocoapods 和 swift 的模块“RestKit”的主要内容,如果未能解决你的问题,请参考以下文章
添加 watchkit 时带有 cocoapods 的 Swift 项目出现新错误
CocoaPods 在 Xcode 7 Swift 2.2 中没有这样的模块
带有 Swift 的 CocoaPods 0.36 上的 GoogleAnalytics-iOS-SDK
带有 Objective-C 文件的 Swift Cocoapods 给出了未定义的符号
Xcode 11.4 Objective-C 语言的快速帮助,而不是 swift 语言,用于带有 Cocoapods 的 firebase API(iOS 13.4 应用程序)