flutter 打包_Flutter解决混合开发iOS脚本打包遇到的问题

使用 Xcode 手动打包是正常的,但是使用脚本打包会报错,错误如下:

Shell

123456
The following build commands failed:	PhaseScriptExecution [CP-User]\ Run\ Flutter\ Build\ Script .../Script-C3A097A8FE12FF5F875B057C.sh	flutter build ios --releasethen re-run Archive from Xcode.Command PhaseScriptExecution failed with a nonzero exit code

定位错误

9854e1ad71f1c8114423a25ca1437103.png

到 Flutter 环境目录下,按图上所示地址找到 xcode_backend.sh,也可以直接看 官方脚本链接(点击阅读原文可查看),下面给出相关重点位置的代码

Shell

123456789101112
# 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 -1fi

解决方案

可以看到,官方脚本的说明里面给出两个解决方案

方案一:直接设置 FLUTTER_BUILD_MODE 为 release

方案二:先运行 flutter build ios --release ,再使用 Xcode 去打包

这里我们是用 Jenkins 脚本进行打包,所以方案二不适用,我们选择方案一,且方案一更加方便些

Shell

12345
# 设置Flutter的编译模式为releaseexport FLUTTER_BUILD_MODE=release# 执行原有项目的打包脚本./script/build_iOS.sh

ae7a7936853dc5567532b2175110c557.png


版权声明:本文为weixin_42577243原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。