英文:
Upgrade from xCode 14.2 to 14.3 PhaseScriptExecution failed with a nonzero exit code
问题
我已经从Xcode 14.2升级到Xcode 14.3 beta,现在无法为任何iOS设备(arm64)进行存档,出现以下错误:
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks
mkdir -p /Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/BuildProductsPath/Release_preprod-iphoneos/MaxApp.app/Frameworks
Symlinked...
rsync --delete -av --filter P .*.?????? --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" "/Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/InstallationBuildProductsLocation/Applications/MaxApp.app/Frameworks"
building file list ... rsync: link_stat "/Users/max/Workspace/MaxApp/../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" failed: No such file or directory (2)
done
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/9e200cfa-7d96-11ed-886f-a23c4f261b56/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
Command PhaseScriptExecution failed with a nonzero exit code
为什么在Xcode 14.2中正常运行,而在Xcode 14.3 beta中不正常?我尝试删除[CP] Embed Pods Frameworks脚本,但它重新创建并出现相同的问题。我尝试在模拟器中构建和调试,一切正常。我尝试删除.pbxproj文件中的"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
英文:
I've upgraded from xcode 14.2 to xcode 14.3 beta, and now I can't archive anymore for Any iOS Device (arm64) with the following error :
PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks
mkdir -p /Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/BuildProductsPath/Release_preprod-iphoneos/MaxApp.app/Frameworks
Symlinked...
rsync --delete -av --filter P .*.?????? --links --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" "/Users/max/Library/Developer/Xcode/DerivedData/Max-dmwafkgdrzqavzcmbdjbjgmmuxby/Build/Intermediates.noindex/ArchiveIntermediates/Release_preprod/InstallationBuildProductsLocation/Applications/MaxApp.app/Frameworks"
building file list ... rsync: link_stat "/Users/max/Workspace/MaxApp/../../../IntermediateBuildFilesPath/UninstalledProducts/iphoneos/ActionSheetPicker_3_0.framework" failed: No such file or directory (2)
done
sent 29 bytes received 20 bytes 98.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files could not be transferred (code 23) at /AppleInternal/Library/BuildRoots/9e200cfa-7d96-11ed-886f-a23c4f261b56/Library/Caches/com.apple.xbs/Sources/rsync/rsync/main.c(996) [sender=2.6.9]
Command PhaseScriptExecution failed with a nonzero exit code
Any idea why it works fine with xCode 14.2 and not with xCode 14.3 beta please ?
I tryed to delete the [CP] Embed Pods Frameworks script, but it has re-created it and get the same issue.
I tryed to build and debug in a simulator, and it works fine.
I tryed to delete "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; in the .pbxproj file
答案1
得分: 81
针对那些在Xcode 15中遇到此问题的人更新:
解决这个问题是我一生中最棘手的错误之一。
我为Flutter项目解决了这个问题,对于你的情况,可能是原生iOS项目。
做以下操作更容易:
1- 使用XCode打开你的项目
2- 搜索"Symlinked..."
3- 将source="$(readlink "${source}")"
替换为source="$(readlink -f "${source}")"
4- 再次尝试构建你的项目或导出ipa,它应该正常工作
有关更多详细信息,请参考此处
英文:
Updated for those who are facing this in Xcode 15:
Resolving this problem was one of the most tricky errors in my life..
I resolved this for a Flutter project, in your case it might be a native iOS project.
It's easier to do the following:
1- Open your project using XCode
2- Search of "Symlinked..."
3- Replace source="$(readlink "${source}")"
with source="$(readlink -f "${source}")"
4- Try again to build your project or export your ipa it should work
For reference check more details here
答案2
得分: 17
更新 2:2023年4月18日,新的CocoaPods版本1.12.1终于发布了 🥳,它包含了解决此问题所需的修复:https://github.com/CocoaPods/CocoaPods/releases/tag/1.12.1
注意:如果您在项目中编辑文件以解决问题,或切换到CocoaPods的主分支,那么您可能希望撤消这些更改,因为由于CocoaPods 1.12.1的发布,这些更改不再需要,如果保留这些更改,将来可能会遇到问题,详细信息请参见我在此工单末尾的“编辑”。
更新 1:具有修复的拉取请求(在我最初的答案中提到)已合并到CocoaPods的主分支中(于4月3日:https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1494709564),但尚未发布,它应该成为下一个版本1.12.1的一部分(正如维护者之一在此处评论:https://github.com/CocoaPods/CocoaPods/pull/11828#issuecomment-1496357883),但截至目前尚未发生(您可以在此处查看版本发布列表:https://github.com/CocoaPods/CocoaPods/releases)
如果您使用ruby gem来安装cocoapods,不想降级从Xcode 14.3到14.2(如我在最初的答案中所描述的),那么您可以手动切换到cocoa pods的主分支,使用以下命令:
git clone https://github.com/CocoaPods/CocoaPods.git --branch master
cd CocoaPods
gem build cocoapods.gemspec
gem install ./cocoapods-*.gem
最后,您需要手动从项目中删除先前安装的pods以及pods锁定文件,然后使用特定于您的框架的命令重新构建pods文件夹(例如,对于capacitor,请使用npx cap sync
),或使用此命令:
pod install
最初的答案:我遇到了类似的问题,似乎与CocoaPods有关,关于此问题有一个工单:https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1481244508
一个GitHub用户已经提交了一个可能的修复拉取请求:https://github.com/CocoaPods/CocoaPods/pull/11828
如果您希望自己应用修复而不想等待发布,您可以按照修复的作者建议的方式进行操作(在他的后续评论中提到:https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1480802886):
> 解决方法是更新所有生成的...-frameworks.sh文件,为readlink的调用添加-f标志。换句话说,用以下内容替换:
source="$(readlink "${source}")"
> 用以下内容替换
source="$(readlink -f "${source}")"
如果您向下滚动一个评论,您会找到另一位GitHub用户的评论,提供了另一个临时解决方案,即将xcode构建工具从14.3降级到14.2以进行构建(适用于IDE中的构建和Xcode云中的构建):
以下是该工单中的屏幕截图,显示如何在Xcode IDE中从14.3命令行工具版本降级到14.2版本:
> 在您的Xcode IDE(Xcode 14.3)中,转到“设置”,打开“位置”选项卡,然后选择“命令行工具”并选择“Xcode 14.2 (14C18)”
如果您使用Xcode云进行构建,请参考此屏幕截图来更改工作流程中的Xcode版本(您可以在Xcode IDE或应用商店连接网站(https://appstoreconnect.apple.com/)中编辑工作流程):
> 编辑您的“工作流程” > “环境”,然后选择Xcode版本为“Xcode 14.2 (14C18)”(而不是14.3)
编辑:我建议关注1.12.1版本的发布,地址在这里:https://github.com/CocoaPods/CocoaPods/releases,这个版本将包含修复,您还可以订阅GitHub工单和拉取请求(如上所述),这样当修复发布时,您就不需要手动降级Xcode版本了(使用最新版本总是最好的,如果保持降级,将来会引起麻烦,因为您用于应用程序的软件包和工具将与Xcode 14.2不兼容),或者如果选择使用CocoaPods的主分支,您可能会在发布后要撤消那些更改,以确保再次使用发布版本而不是主分支(主分支可能包含仍处于测试阶段的功能,与被视为稳定的发布版本相比,可能不太稳定)。
英文:
Update 2: On the 18th of April 2023 the new CocoaPods version 1.12.1 got finally released 🥳 and it includes the fixes needed to solve the problem that this ticket is about: https://github.com/CocoaPods/CocoaPods/releases/tag/1.12.1
Note: if you edited files in your project to solve the problem, or switched to the master branch of CocoaPods, then you might want to undo those changes as they are not needed anymore due to the release of CocoaPods 1.12.1, if you keep the changes you might run into problems in the future, see my "EDIT" at the end of this ticket for more
Update 1: the pull request with a fix (mentioned in my initial answer) has been merged into the master branch of cocoapods (on april 3rd: https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1494709564) but it is not yet in a release, it should be part of the next release 1.12.1 (as one of the maintainers commented here: https://github.com/CocoaPods/CocoaPods/pull/11828#issuecomment-1496357883) but as of now this has not happend yet (you can keep an eye on the releases list here: https://github.com/CocoaPods/CocoaPods/releases)
if you use ruby gem to install your cocoapods and don't want to do the downgrade from Xcode 14.3 to 14.2 (as described in my initial answer) then you can switch manually to the master branch of cocoa pods using the following commands:
git clone https://github.com/CocoaPods/CocoaPods.git --branch master
cd CocoaPods
gem build cocoapods.gemspec
gem install ./cocoapods-*.gem
and finally you need to manually remove the previously installed pods as well as the pods lock file from your project, then re-build the pods folder using the command specific to your framework (for example for capacitor use: npx cap sync
) or use this command:
pod install
Initial answer: I have a similar issue, it seems to be related to cocoa pods, there is a ticket about the problem here: https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1481244508
a pull request with a potential fix has already been submited by a github user: https://github.com/CocoaPods/CocoaPods/pull/11828
if you want to apply the fix yourself and not wait for a release, you can do what the author of the fix suggested (in his follow up comment: https://github.com/CocoaPods/CocoaPods/issues/11808#issuecomment-1480802886):
> Workaround is to update all the generated ...-frameworks.sh files to add the -f flag to the call to readlink. In other words, replace:
source="$(readlink "${source}")"
> with
source="$(readlink -f "${source}")"
if you scroll down one comment you will find a comment by another github user with a another temporary solution which is to downgrade to xcode build tools from 14.3 to 14.2 for builds (works for both builds in the IDE and builds in the xcode cloud):
here are the screenshots from that ticket, showing how to downgrade from 14.3 command line tools version to a 14.2 version in the Xcode IDE:
> in your Xcode IDE (Xcode 14.3) go to "Settings" open the "Locations" tab and then select "Command Line Tools" and choose "Xcode 14.2 (14C18)"
and if you are using the Xcode cloud to do your builds, refer to this screenshot instead to change the Xcode version in your workflow (you can edit the workflow either in your Xcode IDE or on the appstore connect website (https://appstoreconnect.apple.com/)):
> edit your "workflow" > "Environment" and then select as Xcode Version "Xcode 14.2 (14C18)" (instead of 14.3)
EDIT: I recommend watching for a 1.12.1 release here: https://github.com/CocoaPods/CocoaPods/releases which will have the fix, you can also subscribe to the github ticket and PR (mentioned above), so that when the fix is released you don't manually downgrade the xcode version anymore (it is always best to use the latest version, if you keep it downgraded it will cause trouble in the future as at some point packages and tools you use for your app will not be compatible with xcode 14.2) or if you chose to use the cocoapods master branch, you might after the release want to undo that change so that you are sure to use the release version again and not the master branch (the master branch might include features that are still unstable because they are in beta compared to the release version which is deemed to be stable)
答案3
得分: 2
如果您使用的是Xcode或Xcode Cloud,请降级到14.2版本。
对于Xcode:
对于Xcode Cloud:
英文:
If you used Xcode or Xcode Cloud, just downgrade to 14.2.
For Xcode:
For Xcode Cloud:
答案4
得分: 0
如果你在 Xcode 14.3 中导出构建时遇到错误,有个好消息 - Cocoapods 将会发布一个修复这个问题的版本(1.12.1)。
与此同时,你可以尝试以下解决方案:导航到 Pods/Target Support Files/Pods-ProjectName/
目录,打开 Pods-ProjectName-frameworks.sh
文件。然后,将第 44 行的代码 "$(readlink "${source}")"
替换为 "$(readlink -f "${source}")"
。
来源:https://github.com/CocoaPods/CocoaPods/pull/11828
Cocoapods 版本 1.12.1
尚未发布。
希望能够解决问题。
英文:
If you're encountering an error while exporting a build in Xcode 14.3, there's good news - Cocoapods will be releasing a build (version 1.12.1) soon that addresses the issue.
In the meantime, you can try the following solution: navigate to the Pods/Target Support Files/Pods-ProjectName/
directory and open the Pods-ProjectName-frameworks.sh
file. Then, replace line 44 with code "$(readlink "${source}")"
with "$(readlink -f "${source}")"
.
Source: https://github.com/CocoaPods/CocoaPods/pull/11828
The cocoapods version of 1.12.1
is yet to release.
Hope it will work.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论