如何修复 cocoapod .modulemap 文件未找到
Posted
技术标签:
【中文标题】如何修复 cocoapod .modulemap 文件未找到【英文标题】:How to fix cocoapod .modulemap file not found 【发布时间】:2019-09-04 15:20:47 【问题描述】:当我尝试构建我的项目时,我收到一个编译时错误,提示找不到我的 pod 的“模块映射文件”并且我缺少一个“SwiftShimes”模块。
这很奇怪,因为我所有的模块映射文件都在我安装 pod 时应该在的位置。
我正在使用 Xcode 10.2 和 Cocoapods 1.6.1。
我已经尝试了以下 ->
从我的项目中分离 cocoapods 清理项目 已删除 ModuleCache 和 DerivedData 重新启动我的电脑这是我遇到的错误类型 ->
Module map file '/Users/kaunamohammed/Library/Developer/Xcode/DerivedData/OutNow-gxdxvzwmnijmrlajtbtyclkhrgqs/Build/Products/Debug-iphoneos/CodableFirebase/CodableFirebase.modulemap' not found
我希望我的项目能够正确构建,但事实并非如此,我不确定还能做什么。
这就是我的 Podfile 的样子
platform :ios, '10.0'
workspace 'OutNow'
target 'OutNow' do
use_modular_headers!
#Pods for OutNow
pod 'Instabug'
pod 'SwiftMessages'
pod 'CodableFirebase'
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'Firebase/Firestore'
pod 'Firebase/Messaging'
pod 'Firebase/DynamicLinks'
pod 'MarqueeLabel/Swift'
pod 'RxSwift', '4.4.2'
pod 'RxCocoa', '4.4.2'
pod 'Kingfisher', '5.3.1'
pod 'InstantSearchClient', '6.0'
pod 'CoordinatorLibrary', '1.0.5'
pod 'UIScrollView-InfiniteScroll', '1.1.0'
target 'OutNowTests' do
inherit! :search_paths
# Pods for testing
end
end
【问题讨论】:
最新版本的 CocoaPods 是 1.6.something,还有一个 1.7 beta 版本。我会将您的 CocoaPods 更新到最新版本(1.6.something)并再次尝试pod install
。此外,您可能想发布您的Podfile
,因为您可能安装了错误版本的 Alamofire。最后,您打开的是工作区,而不是项目?
我现在已经更新到最新的稳定版本的 cocoapods 并完成了 pod install 但问题仍然存在
你看过这个答案了吗? ***.com/a/30836224/4475605
是的,我做到了。不幸的是,问题仍然存在
出于某种奇怪的原因,现在一切似乎都正常了。感谢您的帮助?
【参考方案1】:
如果它对其他人有帮助,我能够以不同的方式解决这个问题。我不小心打开了我的.xcproject
而不是我的.xcworkspace
。当我打开正确的文件时,错误就消失了。
【讨论】:
一次原因需要检查:***.com/a/69711515/454666【参考方案2】:我自己解决了这个问题。我可以告诉你我做了什么。不知道具体是哪些步骤完成的,但以下是所有步骤:
-
将 Podfile 的内容复制到安全的地方
运行:
pod cache clean --all
从目录中删除“Podfile”文件。
Xcode:产品 > 清理构建文件夹
运行:pod init
。一个新的“Podfile”文件被添加到目录中
开始将原始 Podfile 的部分内容添加到此文件中
运行:pod install
再次尝试构建您的项目
就我而言,我认为“Podfile”中的 use_frameworks!
行起到了作用。
希望对大家有所帮助!
【讨论】:
我刚刚做了第 2、4 和 7 步,它对我有用。谢谢!【参考方案3】:只有当我想制作存档时,我才会遇到这个问题。另一方面,调试工作正常。过了一会儿,我注意到我的 Target、Project 和 Podfile 的最小 iOS 版本之间的最小 iOS 版本不同。将它们全部同步到相同的值后(iOS 11)Xcode 为我提供了验证项目设置 - 更新到推荐的设置选项,我接受了该选项并且我能够存档我的项目。
【讨论】:
谢谢。将 pod 文件中的 iOS 版本更新为相同的值后,目标和项目。效果很好。 我在 React native 中使用最新的 Stripe pod 时遇到了同样的问题 - 我在 Podfile 中调高了目标,安装了所有 pod,应用程序在调试中运行良好,但我无法存档因为我没有在项目设置中更新最低 iOS 版本。现在工作正常! 我在这上面花了 2 天时间。我的 Podfile 中确实有 iOS 11,但我的项目和目标中有 iOS 10。非常感谢@josip-b? 感谢您的回答!我遇到了同样的问题,只是将版本设置为相同的 (11) 修复了它。所以这是由于只在 Podfile 中增加了所需的版本,而在其他地方没有增加! 我确保部署目标在目标、项目和 pod 文件中是相同的。但仍然出现错误。你能帮我解决这个问题吗?【参考方案4】:我花了一整天的时间试图弄清楚如何解决这个问题。我在 M1 机器上的项目中遇到了问题。
我在 Xcode 中启用了“使用 Rosetta 打开”选项并为我工作。
【讨论】:
【参考方案5】:我通过删除 Swift Compiler - Custom Flags
中的 OTHER_SWIFT_FLAGS
自定义标志来解决此问题
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"$PODS_ROOT/modulePath/moduleName.modulemap\"";
【讨论】:
【参考方案6】:我也有这个问题,我对XCode不是很熟悉,但是我打开了.xcodeworkspace文件,然后点击build,成功了!
【讨论】:
【参考方案7】:我遇到了同样的问题,但使用健身房 build_app
的 Fastlane。
如 Josip B 所述,我确保在我的 Target、Project 和 Podfile 之间同步最低 iOS 版本。这允许我使用 XCode 归档我的应用程序,但使用 Fastlane 仍然失败。
经过大量搜索,它能够通过确保我安装的每个 Pod 的 IPHONEOS_DEPLOYMENT_TARGET
版本从我的 Podfile
使用此 Podfile 安装后脚本继承该版本来解决我的问题:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
参考这篇文章:https://***.com/a/63489366/10211406
【讨论】:
【参考方案8】:这有点小技巧,但请尝试将其添加到您的 podfile 中:
post_install do |installer|
installer.pods_project.targets.each do |target|
if (target.name&.eql?('FBReactNativeSpec'))
target.build_phases.each do |build_phase|
if (build_phase.respond_to?(:name) && build_phase.name.eql?('[CP-User] Generate Specs'))
target.build_phases.move(build_phase, 0)
end
end
end
end
【讨论】:
以上是关于如何修复 cocoapod .modulemap 文件未找到的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 7.0.1 - 无效的 Swift 支持 - cocoapods 如何修复?
找不到调试-iphonesimulator/YogaKit/YogaKit.modulemap'
致命错误:找不到模块映射文件 YogaKit.modulemap
构建到 IOS 的颤振时找不到 BoringSSL-GRPC.modulemap
Xcode 13 Debug-iphonesimulator/YogaKit/YogaKit.modulemap 未找到刚刚初始化的全新项目
在 Macbook M1 上的 Xcode 12.4 中构建后,在 iOS 上的 React Native 中找不到 YogaKit.modulemap