You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

升级Xcode后Flutter项目持续出现path_provider_foundation.modulemap未找到错误,常规修复方案均无效求助

升级Xcode后Flutter项目持续出现path_provider_foundation.modulemap未找到错误,常规修复方案均无效求助

问题描述

我已经被这类bug折腾了好几个小时了!一开始是flutter_native_splash模块找不到的错误,现在Xcode里全是和path_provider_foundation.modulemap未找到相关的错误,总共53个。这个Flutter项目几个月前还能正常运行,期间只升级了Xcode,其他没动过。我试了几乎所有常规修复方法,重复了80多次都没用,甚至删除整个iOS文件夹重新生成也解决不了,求大神帮忙!

环境信息

  • Xcode版本:26.0.1(注:这个版本号疑似笔误,当前最新Xcode稳定版为15.x,建议再确认下)
  • Flutter版本:3.38.6
  • Dart版本:3.10.7
  • 设备:2019 MacBook Pro Intel Core i9

已尝试的所有常规修复方案

  • 删除Build文件夹和Xcode Derived Data
  • 卸载/更新/重新安装CocoaPods
  • 执行flutter clean
  • 升级Flutter、Dart、CocoaPods、Homebrew
  • 删除Podfile并重新生成
  • 确保打开的是.xcworkspace而非.xcodeproj
  • 重新生成Xcode模块映射
  • 修改Podfile配置
  • flutter doctor检测无任何问题
  • 重复以上步骤80+次,均无效

当前Podfile内容

platform :ios, '13.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. Run 'flutter pub get' first."
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}."
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))

  target 'RunnerTests' do
    inherit! :search_paths
  end
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)

    target.build_configurations.each do |config|
      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
  end
end

错误日志示例

Module map file '/Users/ME/Library/Developer/Xcode/DerivedData/Runner-gierkvguxnzlwlboimbbwgamxzmg/Build/Products/Release-iphoneos/path_provider_foundation/path_provider_foundation.modulemap' not found
Clang dependency scanner failure: fatal error: module map file '/Users/AT/Library/Developer/Xcode/DerivedData/Runner-gierkvguxnzlwlboimbbwgamxzmg/Build/Products/Release-iphoneos/path_provider_foundation/path_provider_foundation.modulemap' not found

看到你折腾了这么多次还没解决,太闹心了!Xcode版本大升级后经常会出现这种依赖链路的诡异问题,尤其是和CocoaPods、Flutter插件的模块映射相关的,我之前也碰到过类似的坑,给你几个针对性的排查方向试试:

1. 修正Podfile的Build Configuration映射,解决产物路径混乱

你的Podfile里把Profile环境映射到了:release,这会导致Flutter Profile模式下的编译产物和Release模式混在一起,很容易出现模块映射路径找不到的问题,先把这里改回来:

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :profile,
  'Release' => :release,
}

改完后执行一套完整的清理重建流程:

flutter clean && rm -rf ios/Pods ios/Podfile.lock ~/Library/Developer/Xcode/DerivedData
flutter pub get
cd ios && pod install --repo-update
cd .. && flutter build ios --debug

2. 锁定path_provider版本,排除插件兼容问题

有时候新版Xcode和某些插件的最新版本存在兼容bug,试试在pubspec.yaml里锁定一个已知和Xcode 15+/Flutter 3.38兼容的path_provider版本:

dependencies:
  # 其他依赖不变,新增或修改这一行
  path_provider: ^2.1.3

然后重新拉取依赖,再走一遍上述的清理流程。

3. 手动调整Xcode Build Settings,修复模块映射路径

打开.xcworkspace,选中Runner Target → 切换到Build Settings标签:

  • 搜索HEADER_SEARCH_PATHS,在Release配置下添加$(BUILT_PRODUCTS_DIR)/path_provider_foundation(记得勾选递归)
  • 搜索MODULEMAP_FILE,检查是否有手动配置的错误路径,如果有就删除,让CocoaPods自动生成
  • 搜索VALIDATE_WORKSPACE,把它改成NO,关闭Xcode的Workspace验证(有时候会误判模块依赖)

4. 清理Xcode全局缓存和系统级配置

你之前只清理了项目的DerivedData,但Xcode还有全局缓存和开发者工具状态可能出问题:

# 删除Xcode全局缓存
rm -rf ~/Library/Caches/com.apple.dt.Xcode
# 重置Xcode开发者工具
xcode-select --reset
sudo xcodebuild -license accept
# 重启Mac(这步真的很重要,很多残留进程只有重启才能干掉)

5. 排查插件依赖树,排除间接冲突

有些时候是其他插件间接依赖了旧版本的path_provider,导致版本冲突,执行以下命令查看完整依赖树:

flutter pub deps --tree

重点看有没有其他插件依赖了path_provider的旧版本,或者依赖了和path_provider_foundation冲突的包,如果有,可以在pubspec.yaml里用dependency_overrides强制统一版本:

dependency_overrides:
  path_provider: ^2.1.3
  path_provider_foundation: ^2.1.3

关于“删除iOS文件夹重新生成也没用”的解释

这说明问题根本不在本地iOS项目的配置里,而是在Flutter全局缓存CocoaPods本地缓存或者Xcode系统级配置里。比如Flutter的pub缓存里存了有问题的插件包,或者CocoaPods的repo缓存里有损坏的path_provider_foundation产物,甚至Xcode的后台编译进程残留了旧的缓存数据,这些都是你之前的清理操作没触碰到的层面,所以才会反复出现同样的错误。

如果上面的方法都没用,最后可以试试把Flutter的全局缓存也清了:

rm -rf ~/.pub-cache
flutter pub cache repair

然后重新拉取所有依赖,再走一遍完整的编译流程。

祝你早日解决这个坑!要是有新的报错信息,随时补充上来~

火山引擎 最新活动