iOS开发

Xcode 打包报错 Command PhaseScriptEx

2023-11-29  本文已影响0人  Superman168

前言

最近接手了一个新项目,完成一个小版本开发后,使用模拟器或真机调试、编译等都不出错,唯独在进行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的版本之前有了,早已经抛弃了,如果有改这个也可以,只是权宜之计。

image.png image.png

还有的是报某个framework,permission denied

输入sudo chmod 777 +需要授权的文件地址,输入你的开机密码,再次回车就可以了。777是最高权限,

方法二

使用sudo gem update cocoapods更新cocoapods

删除项目根目录下的Podfile.lock、项目名.xcworkspace文件和Pods文件夹
重新使用 pod install,再次打包正常

方法三 清理工作区缓存系列

  1. 首先在 Product -> Scheme 中选择当前项目的主代码模块

  2. 选择 Product -> Clean Build Folder 清理工作区

  3. 之后再重新编译项目代码就可以了

快捷键command+shift+k

说出现这个问题的主要原因是工作区已满,导致代码编译出现错误。

方法四——我的问题的解决方法——修改 Pods-项目名称-frameworks.sh 文件

以上的方法对于我来说然并卵,始终没有解决问题,直到用了下面的解决方法,才可以:

找到下面的路径:

Xcode -> Pods -> Targets Support Files -> Pods-工程名 -> Pods-项目名-frameworks.sh

image.png

搜索找到:

source="$(readlink "${source}")"

找到后将其替换为

source="$(readlink -f "${source}")"

完成后重新Archive就OK了。

这段代码主要是用于将动态库(即.framework文件)复制到Xcode项目的build目录下。

具体来说,{TARGET_BUILD_DIR}表示的是build目录的路径,${FRAMEWORKS_FOLDER_PATH}表示的是在build目录中所有framework的存储位置

至此,我的问题算是解决了,这个问题,跟升级Xcode15 有一定的关系,会有一些新问题。

上一篇下一篇

猜你喜欢

热点阅读