Flutter iOS端使用flutter_blue库构建时报CompileSwiftSources非零退出码错误
问题原因
你遇到的编译错误是旧版flutter_blue库(0.8.0版本)的已知兼容性问题:该版本从2020年起已停止维护,原生iOS端的Objective-C代码语法不兼容Xcode 13+自带的Clang编译器,同时也不适配你当前使用的Flutter master开发版通道。报错行的}>_centralManager.state会被新编译器识别为单个无效运算符,从而触发后续连锁语法错误。
解决方案
优先推荐第一个方案,一劳永逸解决所有兼容性问题:
方案1:替换为社区维护版flutter_blue_plus
flutter_blue_plus是官方flutter_blue的社区分支,完全兼容原有API,适配最新的Xcode、Flutter版本,无需修改业务代码:
- 打开
pubspec.yaml,将原有flutter_blue: any替换为flutter_blue_plus: ^1.13.3(可替换为当前最新稳定版) - 执行
flutter pub get - 进入ios目录,执行
pod install --repo-update - 重新运行项目即可
方案2:手动修改原有flutter_blue源码(临时解决方案)
如果暂时无法替换库,可以手动修复语法错误:
- 找到报错路径下的
FlutterBluePlugin.m文件:your_project/ios/.symlinks/plugins/flutter_blue/ios/Classes/FlutterBluePlugin.m - 定位到第76行,将
}>_centralManager.state]];修改为}> _centralManager.state]];(仅需在>和_centralManager之间加一个空格即可) - 清理项目缓存后重新编译即可
注意:该修改为临时方案,每次执行flutter pub get后修改会被覆盖,需要重新操作
额外优化建议
- 日常开发不要使用Flutter master通道,该通道为测试开发版,稳定性差,执行
flutter channel stable && flutter upgrade切换到稳定通道可避免大量未知兼容性问题 - 确保iOS项目
Podfile第一行的平台配置为platform :ios, '10.0'或更高版本,符合蓝牙库的最低系统要求
内容的提问来源于stack exchange,提问作者FlutterKid87
相关产品推荐
相关产品推荐

