前言
最近接手了一個(gè)新項(xiàng)目,完成一個(gè)小版本開發(fā)后,使用模擬器或真機(jī)調(diào)試、編譯等都不出錯(cuò),唯獨(dú)在進(jìn)行Archive時(shí),一直會(huì)出現(xiàn)以下錯(cuò)誤:
Command PhaseScriptExecution failed with a nonzero exit code
可以運(yùn)行,只是很緩慢,這是Xcode的另外一個(gè)問題了。
解決方法
如果著急直接看最后的解決方法,不用看解決的歷程。
方法一
這個(gè)問題網(wǎng)上有很多都讓更改構(gòu)建方式:
這其實(shí)是一個(gè)Xcode10引起的bug。 解決方案: 在Xcode菜單欄選擇File -> Workspace Setting -> Build System 選擇Legacy Build System 重新運(yùn)行即可。
但是值得注意的是,我用最新的Xcode 的版本并沒有換構(gòu)建方式的選項(xiàng)了,這個(gè)是在13.4.1的版本之前有了,早已經(jīng)拋棄了,如果有改這個(gè)也可以,只是權(quán)宜之計(jì)。


還有的是報(bào)某個(gè)framework,permission denied
輸入sudo chmod 777 +需要授權(quán)的文件地址,輸入你的開機(jī)密碼,再次回車就可以了。777是最高權(quán)限,
方法二
使用sudo gem update cocoapods更新cocoapods
刪除項(xiàng)目根目錄下的Podfile.lock、項(xiàng)目名.xcworkspace文件和Pods文件夾
重新使用 pod install,再次打包正常
方法三 清理工作區(qū)緩存系列
首先在 Product -> Scheme 中選擇當(dāng)前項(xiàng)目的主代碼模塊
選擇 Product -> Clean Build Folder 清理工作區(qū)
之后再重新編譯項(xiàng)目代碼就可以了
快捷鍵command+shift+k
說出現(xiàn)這個(gè)問題的主要原因是工作區(qū)已滿,導(dǎo)致代碼編譯出現(xiàn)錯(cuò)誤。
方法四——我的問題的解決方法——修改 Pods-項(xiàng)目名稱-frameworks.sh 文件
以上的方法對(duì)于我來說然并卵,始終沒有解決問題,直到用了下面的解決方法,才可以:
找到下面的路徑:
Xcode -> Pods -> Targets Support Files -> Pods-工程名 -> Pods-項(xiàng)目名-frameworks.sh

搜索找到:
source="$(readlink "${source}")"
找到后將其替換為
source="$(readlink -f "${source}")"
完成后重新Archive就OK了。
這段代碼主要是用于將動(dòng)態(tài)庫(即.framework文件)復(fù)制到Xcode項(xiàng)目的build目錄下。
具體來說,{TARGET_BUILD_DIR}表示的是build目錄的路徑,${FRAMEWORKS_FOLDER_PATH}表示的是在build目錄中所有framework的存儲(chǔ)位置
至此,我的問題算是解決了,這個(gè)問題,跟升級(jí)Xcode15 有一定的關(guān)系,會(huì)有一些新問題。