Flutter Mac端iOS构建失败 报temporary_xcresult_bundle错误
Flutter Mac端iOS构建失败修复方案
问题根因
两类问题同时出现,其中只有一类会直接阻断构建:
- 非阻断警告:DVTAssertions提示真机deviceType为NULL、sensors_plus 1.3.2旧函数风格警告、FirebaseFirestore文档注释/类型转换警告,这类内容不会触发构建失败
- 阻断构建核心原因:
percent_indicator 4.2.1版本存在空安全语法写法错误,和当前环境的Dart空安全校验规则冲突,直接导致PhaseScriptExecution阶段返回非零退出码
该依赖162行的错误代码WidgetsBinding?.instance.addPostFrameCallback((_) {存在两处逻辑问题:一是WidgetsBinding类本身不可为空,对类加空判断属于写法错误;二是错误的空判断位置导致编译器判定后续调用的目标为可空类型,直接抛出语法错误。
修复步骤
1. 解决percent_indicator语法错误(必做)
优先选择升级依赖的方案,稳定性更高:
- 升级依赖方案:打开项目根目录
pubspec.yaml,将percent_indicator的版本约束调整为已修复该问题的版本:
保存后执行命令拉取正确版本:dependencies: percent_indicator: ^4.2.3flutter pub get - 临时修改方案(不想升级依赖时使用):打开Pub缓存中对应依赖的文件,路径为
~/.pub-cache/hosted/pub.dev/percent_indicator-4.2.1/lib/linear_percent_indicator.dart,定位到162行,将错误代码替换为:
该方法为临时方案,下次执行WidgetsBinding.instance.addPostFrameCallback((_) {flutter pub cache clean或升级依赖后修改会失效。
2. 处理真机连接与其他警告
- DVTAssertions设备类型为NULL问题:断开连接的iPhone,完全退出Xcode,执行命令重置设备连接缓存:
重新连接真机,打开sudo killall -9 com.apple.CoreDevice.CoreDeviceService rm -rf ~/Library/Developer/Xcode/DerivedData/*ios/Runner.xcworkspace确认签名配置正确,等待Xcode完成真机符号文件解析后再执行运行命令。 - sensors_plus、Firebase相关警告:这类警告不影响正常构建打包,需要消除的话将sensors_plus升级到3.0以上版本,对应Firebase代码按照类型提示调整即可,不处理也可正常运行。
3. 全量清理缓存后重新构建
执行以下命令清除所有历史构建残留,避免旧缓存干扰构建结果:
flutter clean cd ios rm -rf Pods Podfile.lock cd .. flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Nitneuq
相关产品推荐
相关产品推荐

