添加zego_uikit_prebuilt_call后Flutter iOS构建失败求助
在Flutter项目中添加zego_uikit_prebuilt_call: ^3.15.3后,iOS端构建失败,抛出一系列Swift编译错误,核心信息如下:
Swift Compiler Error (Xcode): Type 'Logger' has no member 'd' .pub-cache/hosted/pub.dev/awesome_notifications-0.7.7/ios/Classes/lib/SwiftAwesomeNotificationsPlugin.swift:59:19 Swift Compiler Error (Xcode): Type 'Logger' has no member 'd' .pub-cache/hosted/pub.dev/awesome_notifications-0.7.7/ios/Classes/lib/SwiftAwesomeNotificationsPlugin.swift:60:19 Swift Compiler Error (Xcode): Type 'Logger' has no member 'e' .pub-cache/hosted/pub.dev/awesome_notifications-0.7.7/ios/Classes/lib/SwiftAwesomeNotificationsPlugin.swift:73:19 ...(其余错误信息模式一致)
环境详情
- 依赖项:
- cupertino_icons: ^1.0.2
- zego_uikit_prebuilt_call: ^3.15.3
- Flutter环境:Channel stable, 3.13.6, macOS 13.4 22F66 darwin-arm64, 语言环境en-EN
- Xcode版本:15
已尝试的修复操作
已按不同顺序执行以下步骤,但均未解决问题:
- 升级Flutter至3.13.6
- 升级Xcode至15版本
- 升级cocoapods(
brew upgrade cocoapods) - 删除
podfile.lock文件 - 删除
Pods文件夹 - 执行
flutter clean - 执行
flutter pub cache repair - 执行
flutter pub get - 执行
flutter pub upgrade - 进入ios目录执行
pod install --repo-update - 执行
pod update
注:由于zego_uikit_prebuilt_call依赖awesome_notifications: ^0.7.4+1,无法直接升级至awesome_notifications: ^0.8.2(该版本已修复Logger相关问题)。
可行解决方案
方案1:使用dependency_overrides强制替换依赖版本
在pubspec.yaml中添加依赖覆盖,强制使用修复后的awesome_notifications版本:
dependency_overrides: awesome_notifications: ^0.8.2
添加后执行flutter pub get,重新尝试构建。注意:此操作存在兼容性风险,需测试确认zego_uikit_prebuilt_call与新版依赖是否兼容。
方案2:修改本地缓存的awesome_notifications代码
找到本地pub缓存中的awesome_notifications-0.7.7目录(路径示例:.pub-cache/hosted/pub.dev/awesome_notifications-0.7.7),修改ios/Classes/lib/SwiftAwesomeNotificationsPlugin.swift文件:
将所有Logger.d(替换为Logger.debug(,Logger.e(替换为Logger.error(。修改完成后重新执行构建。
方案3:降级Xcode至14版本
Xcode 15对Swift API做了调整,旧版awesome_notifications的Logger调用方式在Xcode15中失效。降级回Xcode14可避开此兼容性问题。
方案4:等待ZEGO更新依赖版本
关注zego_uikit_prebuilt_call的版本更新,等待官方将awesome_notifications依赖升级至兼容Xcode15的版本。
内容的提问来源于stack exchange,提问作者Born Ok

