Flutter打包IPA时出现Command PhaseScriptExecution非零退出码求助
环境信息
- Flutter:稳定版 3.0.5,运行环境 macOS 12.5.1 (Darwin.arm)
- Xcode:13.2.1
问题现象
- Xcode模拟器上构建运行无任何问题
- 打包IPA或执行
flutter build ios时失败,核心错误:Command PhaseScriptExecution failed with a nonzero exit code
完整错误日志
Flutter build iOS 错误输出
Failed to build iOS app
Error output from Xcode build:
↳
objc[12481]: Class AMSupportURLConnectionDelegate 在 /usr/lib/libamsupport.dylib (0x1f234b808) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe02c8) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class AMSupportURLSession 在 /usr/lib/libamsupport.dylib (0x1f234b858) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe0318) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class AppleTypeCRetimerRestoreInfoHelper 在 /usr/lib/libauthinstall.dylib (0x1f234b620) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe0598) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class AppleTypeCRetimerFirmwareAggregateRequestCreator 在 /usr/lib/libauthinstall.dylib (0x1f234b670) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe05e8) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class AppleTypeCRetimerFirmwareRequestCreator 在 /usr/lib/libauthinstall.dylib (0x1f234b6c0) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe0638) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class ATCRTRestoreInfoFTABFile 在 /usr/lib/libauthinstall.dylib (0x1f234b710) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe0688) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class AppleTypeCRetimerFirmwareCopier 在 /usr/lib/libauthinstall.dylib (0x1f234b760) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe06d8) 中均有实现。将使用其中一个,具体使用哪一个未定义。
objc[12481]: Class ATCRTRestoreInfoFTABSubfile 在 /usr/lib/libauthinstall.dylib (0x1f234b7b0) 和 /Library/Apple/System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice (0x107fe0728) 中均有实现。将使用其中一个,具体使用哪一个未定义。
** BUILD FAILED **
--verbose 输出
Encountered error while building for device.
#0 throwToolExit
(package:flutter_tools/src/base/common.dart:10:3)
#1 _BuildIOSSubCommand.runCommand (package:flutter_tools/src/commands/build_ios.dart:374:7)
#2 FlutterCommand.run.(package:flutter_tools/src/runner/flutter_command.dart:1183:27)
#3 AppContext.run.(package:flutter_tools/src/base/context.dart:150:19)
#4 CommandRunner.runCommand (package:args/command_runner.dart:209:13)
#5 FlutterCommandRunner.runCommand.(package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
#6 AppContext.run.(package:flutter_tools/src/base/context.dart:150:19)
#7 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
#8 run.. (package:flutter_tools/runner.dart:62:9)
#9 AppContext.run.(package:flutter_tools/src/base/context.dart:150:19)
#10 main (package:flutter_tools/executable.dart:94:3)
已尝试的解决方案
- 降级Xcode至13.2.1
- 重装Cocoapods
- 执行
flutter clean - 仅构建安装
可行解决方案建议
1. 修复构建脚本权限
进入项目ios目录,执行命令:
chmod +x ios/Flutter/flutter_export_environment.sh
脚本权限不足是触发PhaseScriptExecution错误的高频原因。
2. 重置iOS项目依赖配置
- 删除ios目录下的
Podfile、Podfile.lock和Pods文件夹 - 执行
flutter pub get - 进入ios目录执行
pod install --repo-update - 打开Xcode,按
Command + Shift + K清理缓存后重新构建
3. 处理重复类定义兼容问题
这个警告是macOS与Xcode版本适配导致的,可通过以下方式缓解:
- 在Xcode的
Build Settings中搜索Other Linker Flags,添加-ObjC - 或在
Podfile末尾添加以下代码,再执行pod install:
post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['OTHER_LDFLAGS'] = '-ObjC' end end end
4. 升级Flutter版本
当前使用的3.0.5版本较旧,尝试升级到最新稳定版:
flutter channel stable flutter upgrade
新版本通常修复了iOS构建的兼容性问题。
5. 检查签名配置
- 打开Xcode的
Signing & Capabilities页面 - 确认
Team选择正确,证书和描述文件有效 - 尝试切换为自动管理签名,或重新下载证书文件
内容的提问来源于stack exchange,提问作者alperenasln

