MacOS下Flutter项目存于iCloud同步目录时无法运行求助
问题原因分析与解决方案:Flutter项目在iCloud同步目录下iOS启动卡住
问题概述
- Android端运行正常,但Xcode端执行
flutter run时,会卡在Launching lib/main.dart on iPhone 14 Pro Max in debug mode...步骤 - 仅当Flutter项目位于iCloud同步目录时触发该问题,将项目移至非iCloud同步目录即可正常运行
环境信息
- 设备:M1芯片Mac,系统版本13.5.2
- Xcode版本:14.3.1
- Flutter版本:
Flutter is already up to date on channel stable Flutter 3.13.4 • channel stable • https://github.com/flutter/flutter.git Framework • revision 367f9ea16b (2 days ago) • 2023-09-12 23:27:53 -0500 Engine • revision 9064459a8b Tools • Dart 3.1.2 • DevTools 2.25.0
- Flutter Doctor检测无异常:
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.13.4, on macOS 13.5.2 22G91 darwin-arm64, locale en-US) [✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1) [✓] Xcode - develop for iOS and macOS (Xcode 14.3.1) [✓] Chrome - develop for the web [✓] Android Studio (version 2021.3) [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3) [✓] IntelliJ IDEA Ultimate Edition (version 2022.3.2) [✓] IntelliJ IDEA Ultimate Edition (version 2022.3.3) [✓] IntelliJ IDEA Ultimate Edition (version 2023.1.3) [✓] VS Code (version 1.82.2) [✓] Connected device (3 available) [✓] Network resources • No issues found!
- 卡住时日志最后一行:
2023-09-15 04:34:17.800 xcdevice[16472:140956] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
原因分析
iCloud同步目录的实时同步机制和文件锁特性,会干扰Flutter/Xcode构建调试流程:
- Flutter在iOS调试阶段会频繁生成、修改
build/ios下的临时构建文件,iCloud的实时同步会对这些文件加锁,导致Xcode或Flutter工具链无法正常读写文件,进而卡住启动流程。 - 日志中出现的
DVTCoreDeviceEnabledState_Disabled是用户默认设置,并非直接诱因——毕竟移至非iCloud目录后项目可正常运行,核心问题在于iCloud同步引发的文件访问冲突。
解决方案
方案1:直接迁移项目至非iCloud目录
这是最快速有效的解决方法:
- 将Flutter项目从
~/Library/Mobile Documents/com~apple~CloudDocs等iCloud同步目录,移动到本地目录(如~/Documents/FlutterProjects、~/Developer/等)。 - 移动后执行
flutter clean清理旧构建缓存,再运行flutter run即可正常启动。
方案2:关闭特定项目的iCloud同步(无需迁移)
- 打开系统设置 → Apple ID → iCloud → iCloud Drive → 选项。
- 找到对应项目的文件夹,取消勾选同步权限。
- 等待同步完成后,回到项目执行
flutter clean && flutter run。
方案3:修改Flutter构建输出路径(进阶)
将构建产物目录指定到非iCloud同步路径:
- 在项目根目录的
pubspec.yaml中添加配置:
flutter: build_dir: ../build_non_cloud/[你的项目名称]
- 确保
../build_non_cloud/不在iCloud同步范围内,执行flutter clean后重新构建即可。
内容的提问来源于stack exchange,提问作者Tampa
相关产品推荐
相关产品推荐

