前言
最近接手了一个新项目,完成一个小版本开发后,使用模拟器或真机调试、编译等都不出错,唯独在进行Archive时,一直会出现以下错误:
Command PhaseScriptExecution failed with a nonzero exit code
可以运行,只是很缓慢,这是Xcode的另外一个问题了。
解决方法
如果着急直接看最后的解决方法,不用看解决的历程。
方法一
这个问题网上有很多都让更改构建方式:
这其实是一个Xcode10引起的bug。 解决方案: 在Xcode菜单栏选择File -> Workspace Setting -> Build System 选择Legacy Build System 重新运行即可。
但是值得注意的是,我用最新的Xcode 的版本并没有换构建方式的选项了,这个是在13.4.1的版本之前有了,早已经抛弃了,如果有改这个也可以,只是权宜之计。
还有的是报某个framework,permission denied
输入sudo chmod 777 +需要授权的文件地址,输入你的开机密码,再次回车就可以了。777是最高权限,
方法二
使用sudo gem update cocoapods更新cocoapods
删除项目根目录下的Podfile.lock、项目名.xcworkspace文件和Pods文件夹
重新使用 pod install,再次打包正常
方法三 清理工作区缓存系列
首先在 Product -> Scheme 中选择当前项目的主代码模块
选择 Product -> Clean Build Folder 清理工作区
之后再重新编译项目代码就可以了
快捷键command+shift+k
说出现这个问题的主要原因是工作区已满,导致代码编译出现错误。
方法四——我的问题的解决方法——修改 Pods-项目名称-frameworks.sh 文件
以上的方法对于我来说然并卵,始终没有解决问题,直到用了下面的解决方法,才可以:
找到下面的路径:
Xcode -> Pods -> Targets Support Files -> Pods-工程名 -> Pods-项目名-frameworks.sh
搜索找到:
source="$(readlink "${source}")"
找到后将其替换为
source="$(readlink -f "${source}")"
完成后重新Archive就OK了。
这段代码主要是用于将动态库(即.framework文件)复制到Xcode项目的build目录下。
具体来说,{TARGET_BUILD_DIR}表示的是build目录的路径,${FRAMEWORKS_FOLDER_PATH}表示的是在build目录中所有framework的存储位置
至此,我的问题算是解决了,这个问题,跟升级Xcode15 有一定的关系,会有一些新问题。