使用xcodebuild构建Unity项目时遭遇rsync错误求助
Unity iOS构建:xcodebuild归档时rsync目录不存在错误
问题场景
在M2 Mac Mini上使用Unity 2020.3.35f1构建iOS项目:
- 终端执行Unity导出命令可成功生成Xcode项目
- Xcode GUI能正常完成构建
- 执行
xcodebuild归档命令时,触发rsync错误,提示目标目录不存在,导致构建失败
导出命令
/Applications/Unity/Hub/Editor/2020.3.35f1/Unity.app/Contents/MacOS/Unity -batchmode -quit -projectPath "${PWD}" -executeMethod BuildEditorWindow.BuildPlayer_iOS_Development -logFile "Build/UnityBuildlog_iOS.txt" -username'[username]' -password'[password]'
归档命令
xcodebuild -workspace "${IOS_PROJ}/Unity-iPhone.xcworkspace" -scheme Unity-iPhone -derivedDataPath build -allowProvisioningUpdates -configuration Release -archivePath "Build/ios/${PRODUCT_NAME}.xcarchive" archive
错误信息
rsync --delete -av --filter P .*.?????? --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/FirebaseCore.framework" "/Users/arnav/Documents/Dev/Equestriad/Build/Build/Intermediates.noindex/ArchiveIntermediates/Unity-iPhone/InstallationBuildProductsLocation/Applications/Equestriad.app/Frameworks" sending incremental file list rsync: [sender] change_dir "/Users/arnav/Documents/Dev/Equestriad/Build/ios/../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos" failed: No such file or directory (2) sent 19 bytes received 12 bytes 62.00 bytes/sec total size is 0 speedup is 0.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1356)[sender=3.2.7] Command PhaseScriptExecution failed with a nonzero exit code
解决建议
修正
derivedDataPath路径
归档命令中-derivedDataPath build是相对路径,可能因执行命令的工作目录与Xcode项目目录不一致,导致rsync路径解析错误。尝试:- 切换到Xcode项目所在目录后再执行
xcodebuild命令 - 将
derivedDataPath改为绝对路径,例如:-derivedDataPath /Users/arnav/Documents/Dev/Equestriad/Build/ios/build
- 切换到Xcode项目所在目录后再执行
修复Pods脚本中的路径引用
错误源于FirebaseCore.framework的rsync路径错误,手动调整Xcode项目中的Pods脚本:- 打开Unity导出的Xcode项目,找到
[CP] Embed Pods Frameworks构建脚本 - 检查脚本中的rsync源路径,将相对路径调整为基于项目根目录的正确路径,或直接替换为绝对路径指向
UninstalledProducts/iphoneos目录
- 打开Unity导出的Xcode项目,找到
重新生成Pods依赖
Pods中间文件可能生成异常,执行以下步骤重置:# 进入Xcode项目目录 cd ${IOS_PROJ} # 清理Pods pod deintegrate # 重新安装Pods pod install完成后再执行
xcodebuild归档命令指定兼容的Xcode版本
Unity 2020.3.35f1对新版本Xcode兼容性有限,尝试切换到推荐版本:- 安装Xcode 13.x系列版本(Unity 2020.3官方兼容版本)
- 使用
xcode-select切换Xcode版本:sudo xcode-select -s /Applications/Xcode_13.4.1.app/Contents/Developer
调整Unity导出设置
在Unity编辑器的Player Settings > iOS中修改:- 关闭
Strip Engine Code选项,避免导出时误删Framework相关文件 - 确认
Architecture设置为ARM64,适配M2芯片和iOS设备
- 关闭
内容的提问来源于stack exchange,提问作者Arnav Sanghavi
相关产品推荐
相关产品推荐

