升级Xcode 14.3后Flutter Patrol CLI集成测试编译失败
解决Xcode 14.3升级后Flutter集成测试编译失败问题
问题描述
Xcode升级至14.3版本后,Flutter项目的集成测试编译失败,但App可正常启动。核心报错信息如下:
2023-05-04 10:02:21.858 xcodebuild[42145:1120855] [MT] IDEFileReferenceDebug: [Load] <IDESwiftPackageCore.IDESwiftPackageSpecialFolderFileReference, 0x600002d22700: name:Documentation.docc path:group:Documentation.docc> Failed to load container at path: ***/SourcePackages/checkouts/DefaultsWrapper/Sources/DefaultsWrapper/Documentation.docc, Error: Error Domain=com.apple.dt.IDEContainerErrorDomain Code=6 "Cannot open "Documentation.docc" as a "Swift Package Folder" because it is already open as a "Folder"." UserInfo={NSLocalizedDescription=Cannot open "Documentation.docc" as a "Swift Package Folder" because it is already open as a "Folder".} 2023-05-04 10:02:28.556 xcodebuild[42145:1120855] Writing error result bundle to /var/folders/2c/fygq9xv55xxf_15bxz5gpkq89jvsyx/T/ResultBundle_2023-04-05_10-02-0028.xcresult xcodebuild: error: Failed writing xctestrun file: The folder “Runner_iphonesimulator16.4.xctestrun” doesn’t exist..
环境信息
- patrol_cli版本:
v1.1.7 - 执行命令:
patrol test \ --target integration_test/app_test.dart \ --dart-define=ENVIRONMENT=dev
- Flutter Doctor输出:
Doctor summary (to see all details, run flutter doctor -v): [!] Flutter (Channel stable, 3.7.12, on macOS 13.1 22C65 darwin-x64, locale de-DE) ! Warning: `dart` on your path resolves to /usr/local/Cellar/dart/2.18.4/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/***/fvm/versions/stable. Consider adding /Users/***/fvm/versions/stable/bin to the front of your path. [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) [✓] Xcode - develop for iOS and macOS (Xcode 14.3) [✓] Chrome - develop for the web [✓] Android Studio (version 2022.2) [✓] Connected device (3 available) [✓] HTTP Host Availability
解决方案
1. 修复Swift Package的DocC冲突
报错核心是Documentation.docc被同时识别为普通文件夹和Swift Package文件夹,处理步骤:
- 打开
ios/Runner.xcworkspace,找到左侧Packages下的DefaultsWrapper - 删除其中的
Documentation.docc引用后重新添加 - 或者删除
ios/.symlinks、ios/Pods目录,重新执行pod install
2. 升级patrol_cli或Flutter版本
Xcode 14.3与旧版本工具链存在兼容性问题:
- 升级patrol_cli到最新版:
dart pub global activate patrol_cli - 升级Flutter到3.10+版本(Flutter 3.7.x对Xcode 14.3支持有限)
3. 修正Dart路径问题
Flutter Doctor提示的路径警告可能导致编译环境不一致:
- 将Flutter SDK的bin目录设为PATH优先级最高:
export PATH="/Users/***/fvm/versions/stable/bin:$PATH" - 重新执行
flutter doctor确认警告消失
4. 清理构建缓存
- 执行
flutter clean清理Flutter缓存 - 在Xcode中执行
Cmd+Shift+K清理构建目录 - 删除
~/Library/Developer/Xcode/DerivedData下的所有内容
5. 指定匹配的模拟器版本
若Runner_iphonesimulator16.4.xctestrun不存在,需确保模拟器版本匹配:
- 打开Xcode确认已安装iOS 16.4模拟器
- 执行命令时指定具体模拟器:
patrol test --target integration_test/app_test.dart --dart-define=ENVIRONMENT=dev --device "iPhone 14"
内容的提问来源于stack exchange,提问作者Florian
相关产品推荐
相关产品推荐

