使用 Xcode 手動打包是正常的,但是使用腳本打包會報錯,錯誤如下:
The following build commands failed:
PhaseScriptExecution [CP-User]\ Run\ Flutter\ Build\ Script .../Script-C3A097A8FE12FF5F875B057C.sh
flutter build ios --release
then re-run Archive from Xcode.
Command PhaseScriptExecution failed with a nonzero exit code
定位錯誤

到 Flutter 環(huán)境目錄下,按圖上所示地址找到 xcode_backend.sh,也可以直接看 官方腳本鏈接
# Archive builds (ACTION=install) should always run in release mode.
if [[ "$ACTION" == "install" && "$build_mode" != "release" ]]; then
EchoError "========================================================================"
EchoError "ERROR: Flutter archive builds must be run in Release mode."
EchoError ""
EchoError "To correct, ensure FLUTTER_BUILD_MODE is set to release or run:"
EchoError "flutter build ios --release"
EchoError ""
EchoError "then re-run Archive from Xcode."
EchoError "========================================================================"
exit -1
fi
解決方案
可以看到,官方腳本的說明里面給出兩個解決方案
方案一:直接設置
FLUTTER_BUILD_MODE為release方案二:先運行
flutter build ios --release,再使用Xcode去打包
這里我們是用 Jenkins 腳本進行打包,所以方案二不適用,方案一更加方便些
# 設置Flutter的編譯模式為release
export FLUTTER_BUILD_MODE=release
# 執(zhí)行原有項目的打包腳本
./script/build_iOS.sh

歡迎關注微信公眾號:全棧行動