Fastlane构建Xcode项目时SPM依赖随机报错,IDE构建正常
SPM依赖在Fastlane构建中随机报错(Xcode IDE构建正常)
环境信息
- 依赖管理:Swift Package Manager (SPM)
- 依赖版本:Facebook SDK 17.0.0、Firebase 10.25.0
- Xcode版本:15.3(15E204a)
问题现象
使用Fastlane构建项目时,会随机出现多种SPM依赖相关错误,但在Xcode IDE中构建完全正常。已尝试以下操作,均未解决问题:
- 清理构建
- 删除Derived Data文件夹
- 重置SPM缓存
- 重新解析依赖包
- 升级依赖版本
- 删除Finder中的SPM缓存
- 重装Xcode
执行xcodebuild -resolvePackageDependencies命令时的具体报错如下:
$ xcodebuild -resolvePackageDependencies -workspace ./myapp.xcworkspace -scheme Test -configuration Test INFO [2024-05-01 12:56:49.87]: ▸ Command line invocation: INFO [2024-05-01 12:56:49.87]: ▸ /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -resolvePackageDependencies -workspace ./myapp.xcworkspace -scheme Test -configuration Test INFO [2024-05-01 12:56:49.87]: ▸ User defaults from command line: INFO [2024-05-01 12:56:49.87]: ▸ IDEPackageSupportUseBuiltinSCM = YES INFO [2024-05-01 12:56:52.76]: ▸ Resolve Package Graph INFO [2024-05-01 12:57:11.32]: ▸ file not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurement/GoogleAppMeasurement.zipdownloaded archive of binary target 'grpcpp' from 'https://dl.google.com/firebase/ios/bin/grpc/1.62.2/rc0/grpcpp.zip' does not contain a binary artifact.fatalError file not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurementOnDeviceConversion/GoogleAppMeasurementOnDeviceConversion.zipfile not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurementIdentitySupport/GoogleAppMeasurementIdentitySupport.zipfatalError failed downloading 'https://github.com/facebook/facebook-ios-sdk/releases/download/v17.0.0/FBSDKCoreKit_Basics-Dynamic_XCFramework.zip' which is required by binary target 'FBSDKCoreKit_Basics': /Users/ashishn/Library/Caches/org.swift.swiftpm/artifacts/https___github_com_facebook_facebook_ios_sdk_releases_download_v17_0_0_FBSDKCoreKit_Basics_Dynamic_XCFramework_zip already exists in file systemfatalError file not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/firebase-ios-sdk/FirebaseAnalytics/FirebaseAnalytics.zipdownloaded archive of binary target 'absl' from 'https://dl.google.com/firebase/ios/bin/abseil/1.2024011601.1/rc0/absl.zip' does not contain a binary artifact.fatalError file not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurement/GoogleAppMeasurement.zipfile not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurementIdentitySupport/GoogleAppMeasurementIdentitySupport.zipfatalError file not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurementOnDeviceConversion/GoogleAppMeasurementOnDeviceConversion.zipfile not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurementIdentitySupport/GoogleAppMeasurementIdentitySupport.zipfile not found at path: /Users/ashishn/Library/Developer/Xcode/DerivedData/myapp-czdezuacbcsdupcakjbpxibcrpbj/SourcePackages/artifacts/googleappmeasurement/GoogleAppMeasurement/GoogleAppMeasurement.zipdownloaded archive of binary target 'grpcpp' from 'https://dl.google.com/firebase/ios/bin/grpc/1.62.2/rc0/grpcpp.zip' does not contain a binary artifact.fatalError
可能的解决方案
1. 在Fastlane中添加强制清理SPM缓存的步骤
在Fastlane构建脚本开头,添加以下命令彻底清理SPM相关缓存:
# 删除SPM全局缓存 rm -rf ~/Library/Caches/org.swift.swiftpm # 删除项目Derived Data中的SPM artifacts rm -rf ~/Library/Developer/Xcode/DerivedData/*/SourcePackages/artifacts
2. 调整xcodebuild命令参数
执行xcodebuild时,指定自定义的SPM缓存路径,避免全局缓存冲突:
xcodebuild -resolvePackageDependencies -workspace ./myapp.xcworkspace -scheme Test -configuration Test -clonedSourcePackagesDirPath ./SourcePackages
3. 禁用SPM内置SCM
在xcodebuild命令中添加参数,关闭内置版本控制工具的干扰:
xcodebuild -resolvePackageDependencies -workspace ./myapp.xcworkspace -scheme Test -configuration Test IDEPackageSupportUseBuiltinSCM=NO
4. 调整Xcode版本
Xcode 15.3的SPM存在已知的二进制依赖缓存问题,可尝试降级到15.2或升级到15.4及以上版本验证问题是否消失。
5. 检查网络稳定性
报错中的文件缺失、下载失败可能由网络波动导致不完整下载,确保构建前网络连接稳定,必要时可优化网络环境加速依赖下载。
内容的提问来源于stack exchange,提问作者ashishn
相关产品推荐
相关产品推荐

