如何修复Cocoapod中的.modulemap文件找不到的问题

82
当我尝试构建我的项目时,我遇到了一个编译时错误,错误信息说找不到我的pod的“模块映射文件”,并且缺少一个“SwiftShimes”模块。
这很奇怪,因为当我安装我的pods时,所有的模块映射文件都在它们应该的位置。
我正在使用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

你看过这个答案了吗?https://dev59.com/OV0a5IYBdhLWcg3wD1Lb#30836224 - Adrian
尝试在 platform <blah blah> 行的下方添加 use_frameworks!,就像 CodableFirebase 的安装说明中所做的那样。 - Adrian
仍然无法工作。我注释掉了 #use_modular_headers! 和 #use_frameworks!,但现在没有任何东西被加载,这是有道理的。我也尝试单独使用它们,但无论哪种方式都会出现某种形式的错误。 - Kauna Mohammed
1
因为某种奇怪的原因,现在一切似乎都正常了。感谢你的帮助? - Kauna Mohammed
是的,我打开了错误的文件,而且我已经在使用React Native工作了8年,哈哈 - undefined
显示剩余6条评论
16个回答

213

如果有人需要帮助,我用了一种不同的方法解决了这个问题。我无意中打开了我的 .xcproject 文件而不是 .xcworkspace 文件。当我打开正确的文件后,错误就消失了。


需要检查的一个原因是: https://dev59.com/nVIG5IYBdhLWcg3wtjy2#69711515 - duongvanthai
哦,这对我有效!谢谢。 - EZECKIEL TOSSEDE NOUDEGBESSI
3
谢谢,朋友!你真是个好朋友 :D - Lucas Dias Procópio Mercês
1
谢谢,这对我来说是个解决办法。另外,我还得重新启动Xcode。 - undefined
是的,这对我有帮助。 - undefined

57

我自己解决了这个问题。我可以告诉你我做了什么,但不确定哪些步骤起到了确切的作用,下面是所有的步骤:

  1. 将你的Podfile文件内容复制到一个安全的地方
  2. 运行:pod cache clean --all
  3. 从目录中删除"Podfile"-文件
  4. Xcode: Product > Clean Build Folder
  5. 运行:pod init,这会在目录中添加一个新的"Podfile"-文件
  6. 开始将原始Podfile的部分添加到此文件中
  7. 运行:pod install
  8. 再次尝试构建你的项目

在我的情况下,我认为“Podfile”中的行use_frameworks!起到了关键作用。

希望这能帮助大家!


34
我刚刚按照2、4和7步骤操作,成功了。谢谢! - lewis
非常感谢,救了我的一天。我认为@lewis有道理,2、4和7似乎也能解决问题。 - Baseless

35

我只有在想要制作存档时才遇到这个问题。另一方面,调试很正常。过了一会儿,我注意到我的目标、项目和Podfile的最小iOS版本不同。将它们全部同步为相同的值(iOS 11)后,Xcode给了我验证项目设置-更新推荐设置选项,我接受了并成功地制作了存档。


4
谢谢。在将pod文件、目标和项目中的iOS版本更新为相同的值后,一切都正常了。 - Surya
2
我在React Native中使用最新的Stripe pod时遇到了同样的问题 - 我在Podfile中提高了目标版本,安装了所有的pods,在调试中应用程序运行良好,但由于我没有在项目设置中更新最低iOS版本,所以无法存档。现在已经解决了! - dusandz
1
我花了2天时间在这上面。我的Podfile中确实有iOS 11,但我的项目和目标却是iOS 10。非常感谢@josip-b。 - Simon Reggiani
谢谢这个答案!我遇到同样的问题,只需设置版本到所有地方相同(11),问题就解决了。所以原因是在 Podfile 中增加所需版本,但其他地方没有跟上。 - Pauli Kettunen
我确保了目标、项目和 pod 文件的部署目标相同,但仍然出现错误。您能否帮助我解决这个问题? - ThinkAndCode

34

我花了整整一天的时间来解决这个问题。在我使用 M1 机器的项目中,我遇到了问题。

我在 Xcode 中启用了“Open using Rosetta”选项,这对我很有帮助。

以下是操作步骤:
打开 Finder --> 应用程序 --> 右键单击“Xcode” --> 获取信息 --> 选择“使用 Rosetta 打开”


10
到了2022年中期,这仍然是唯一的解决方案吗?Xcode 应该支持本地架构,对吗?在 Rosetta 上运行感觉很遗憾,好像不能充分发挥我的电脑的优势。 - Divyanshu Negi
1
哦我的天,我试了好几个月才搞定它。谢谢,它终于起作用了。 - Ateş Danış
1
在Rosetta中运行Xcode,我能够编译和运行应用程序。但是它偶尔会导致系统崩溃(重新启动)。看起来不是很稳定。 - Bagusflyer
1
我不得不选择一个不同的方案和构建配置。然后我才能为Rosetta构建。当我们开始构建过程时,'Build for Rosetta'弹出窗口会在Xcode中显示。 - sushrut619

10

请确保您使用 Xcode 打开了 .xcworkspace 文件而不是 .xcproject 文件。


这已经在其他答案中提到过,比如这个 - Eric Aya

6
我通过删除Swift编译器 - 自定义标志中的OTHER_SWIFT_FLAGS自定义标志来解决了这个问题。 OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -Xcc -fmodule-map-file=\"${PODS_ROOT}/modulePath/moduleName.modulemap\""

1
不幸的是,我尝试了它但没有起作用。 - Ahmad Abdullah

2

我遇到了与使用gym的Fastlane相同的问题。

我确保我的目标、项目和Podfile中的最小iOS版本是同步的,就像Josip B.提到的那样。这使我能够使用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://dev59.com/7lQJ5IYBdhLWcg3wCxUZ#63489366


2

如果您正在使用xcodebuild进行命令行构建,请确保您正在使用

xcodebuild -workspace ...

不要仅仅使用xcodebuild或者

xcodebuild -project ...

1
我在git切换分支后遇到了这个问题,因为我选择的方案的构建配置在当前分支上不存在。将“运行”方案的构建配置进行切换立即解决了这些问题。
Click on your target in the top bar
Edit Scheme
Choose an appropriate build config.

我之前遇到过这个问题,按照Ton Snoei's的回答中的步骤(特别是第2、4和7步)解决了。但最近又遇到了同样的问题,无论如何修改Podfile或添加/删除pods都无法解决,直到我改变了构建配置。

1
如果仍然有人在使用Xcode 14.3时遇到这个问题,我已经找到了解决方法:
在Xcode中选择Product -> Destination -> Destination Architectures -> Show Rosetta Destination
然后清理你的构建文件夹,再试一次,对我来说,这样做有效。

解决了!这样解决问题好吗? - Reza Babaei

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