惠州网吧,标题优化,专门帮人做网站的公司,网站建设人员需求分析文章目录 前言开发环境问题及解决方案1. Upload Symbols Failed2. type UIApplication does not conform to protocol Launcher3. method does not override any method from its superclass 最后 前言
为了新的镜像功能升级了macOS 15和iOS 18#xff0c;Xcode也不可避免的需… 文章目录 前言开发环境问题及解决方案1. Upload Symbols Failed2. type UIApplication does not conform to protocol Launcher3. method does not override any method from its superclass 最后 前言
为了新的镜像功能升级了macOS 15和iOS 18Xcode也不可避免的需要升级到Xcode 16老版本没办法在新系统上使用。每次大版本升级带来新功能的同时也会带来一些问题需要去适配去修复。
但有一说一这个镜像功能真好用声音/通知都会转发到电脑上最重要的是真机调试可以直接在电脑上操作无需拿起手机。
开发环境
Flutter: 3.22.3Xcode: 16.0iOS: 18.0
问题及解决方案
1. Upload Symbols Failed
项目打包上传到AppStore出现如下警告提示
看提示是缺少符号文件。这个问题已经修复了相关issue和PR如下
Flutter application missing framework dSYMs, validation error “The archive did not include a dSYM for the Flutter.framework with the UUIDs” [iOS] Bundle dSYM packages in Flutter.xcframework
可以将Flutter升级到当前最新版本3.24.3解决该问题。不过由于该版本的字体渲染有问题所以我还是继续降级使用毕竟只是个警告目前暂时还不影响提交上架。
2. type ‘UIApplication’ does not conform to protocol ‘Launcher’
这是关于url_launcher库的报错
.../url_launcher_ios-6.3.0/ios/url_launcher_ios/Sources/url_launcher_ios/Launcher.swift:22:1: error: type UIApplication does not conform to protocol Launcher
extension UIApplication: Launcher {}
^
UIKit.UIApplication:24:15: note: candidate has non-matching type (URL, [UIApplication.OpenExternalURLOptionsKey : Any], (MainActor Sendable (Bool) - Void)?) - Voidopen func open(_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey : Any] [:], completionHandler completion: (MainActor Sendable (Bool) - Void)? nil)^
.../url_launcher_ios-6.3.0/ios/url_launcher_ios/Sources/url_launcher_ios/Launcher.swift:15:8: note: protocol requires function open(_:options:completionHandler:) with type (URL, [UIApplication.OpenExternalURLOptionsKey : Any], ((Bool) - Void)?) - (); add a stub for conformancefunc open(^结合源码可知问题出在了Launcher协议中的open方法UIApplication的open方法新增了MainActor和Sendable修饰导致方法签名不匹配报错。
目前通过定义新包装类DefaultLauncher的方式修复了该问题详情请看
[ios]Fix compile error when conforming UIApplication to Launcher due to MainActor annotation
除了定义新包装类的方式Launcher协议中的open方法增加MainActor和Sendable修饰应该也能修复问题。
按理说升级项目中的url_launcher库后该问题应该就解决了但是针对这个问题url_launcher库并没有发布新版本只有它所依赖的url_launcher_ios库发布了6.3.1新版本。你可以参考以下两种方法解决这个问题
修改pubspec.lock文件
url_launcher_ios:dependency: transitivedescription:name: url_launcher_iossha256: e43b677296fadce447e987a2f519dcf5f6d1e527dc35d01ffab4fff5b8a7063eurl: https://pub.flutter-io.cnsource: hostedversion: 6.3.0删除sha256这一行以及将version改为6.3.1然后重新运行pub get。
修改pubspec.yaml文件
dependency_overrides:url_launcher_ios: ^6.3.1增加以上内容强制指定url_launcher_ios库的版本。
3. method does not override any method from its superclass
这是关于flutter_inappwebview库的报错截取部分
.../flutter_inappwebview_ios-1.0.13/ios/Classes/InAppWebView/InAppWebView.swift:1432:26: error: method does not override any method from its superclasspublic override func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) - Void)? nil) {^
WebKit.WKWebView:46:26: note: potential overridden instance method evaluateJavaScript(_:completionHandler:) hereMainActor open func evaluateJavaScript(_ javaScriptString: String, completionHandler: (MainActor Sendable (Any?, (any Error)?) - Void)? nil)^.../flutter_inappwebview_ios-1.0.13/ios/Classes/InAppWebView/InAppWebView.swift:1036:21: error: ambiguous use of evaluateJavaScript(_:completionHandler:)evaluateJavaScript(NOT_ENABLE_VIEWPORT_SCALE_JS_SOURCE)^这错误看上去和第二个问题很像没错又是因为方法增加了MainActor和Sendable修饰导致的。该问题已经通过增加MainActor和Sendable修饰的方式修复了详情请看
Fixed Xcode 16 build failed error: method does not override any method from its superclass
flutter_inappwebview库新版本发布前可以先通过以下方式解决
dependency_overrides:flutter_inappwebview_ios:git:url: https://github.com/andychucs/flutter_inappwebview.gitref: masterpath: flutter_inappwebview_ios在pubspec.yaml文件中增加以上内容强制指定flutter_inappwebview_ios库的来源。
最后
如果这篇文章对你有所帮助点赞收藏支持一下吧谢谢 本篇文章由crasowas发布于CSDN。