随着Xcode16正式版的发布,前几天顺手就给它升级了。昨天启动我的flutter项目时,发现无法启动了,在构建阶段就报错了。
经过一番折腾后,终于找到了问题所在,本文就跟大家分享下这次升级所遇到的报错,以及我的解决方案,欢迎各位感兴趣的开发者阅读本文。
同往常一样,我打开Android Studio
,启动项目,一气呵成。正准备愉快的coding
,经过40秒的等待,我眼前一黑,怎么构建失败了,出现了如下所示的报错
DVTDeviceOperation: Encountered a build number "" that is incompatible with DVTBuildVersion.
[MT] DVTDeviceOperation: Encountered a build number "" that is incompatible with DVTBuildVersion.
一般情况下,遇到这种环境问题,我的解决思路为:
我的环境变量信息为:
第一个思路总结下来就是让我清理掉构建缓存,重新安装CocoaPods
,升级url_launcher_ios
,清理 Xcode 的Derived Data,清理模拟器缓存,我就照着操作了。
# 清理构建缓存flutter clean# 重新安装CocoaPodscd iospod deintegratepod install# 升级url_launcher_ios,将项目跟目录下的pubspec.yaml文件中的版本号改为最新# 清理Derived Datarm -rf ~/Library/Developer/Xcode/DerivedData# 清理模拟器缓存xcrun simctl shutdown allxcrun simctl erase all
操作完之后,我发现问题依旧存在,而且因为升级url_launcher_ios
还导致了不兼容报错🥲。
在谷歌检索报错信息的时候,我搜到了一篇stackoverflow的帖子,他的报错跟我的一模一样。
但是,他是原生开发环境,评论区也没找到解决方案。
折腾到这里,问题依然没解决,那我就只能重启下电脑了,把flutter和dart重新安装下了(跟当前版本一致)。依然是同样的报错,那就只能是基建的问题。
我的项目是基于 flutter_flexible 作为脚手架来搭建的,于是我就去看了下他的提交记录,我发现他针对Flutter的新版本做了兼容处理。
一般情况下,脚手架对某个版本做兼容,再碰上某个端的大版本升级,肯定会对当前端做一些兼容处理的。那么,我升级flutter版本,问题应该就解决了。
我的flutter是通过brew安装的,所以我升级的时候,通过brew的upgrade命令升级即可。
brew upgrade flutter
升级后,我们通过flutter --version
来看下版本信息。
3.24.3
3.5.3
版本升级后,再次打开android studio,我们会发现flutter和dart的路径找不到了,需要重新配置下。
再次启动项目后,我们发现它换了新的报错。看这个报错,应该是某些依赖包不支持ios18导致的。
Swift Compiler Error(Xcode): Type 'UIApplication' does not conform to protocol 'Launcher'
我的项目是用flutter_flexible做的脚手架,那么我只需要拉一份最新的模版代码下来,跟我现在的项目依赖做下对比,将不同之处更改即可。
# 更新下载模版flib updata# 创建项目flib create
经过对比后,我对pubspec.yaml文件中的依赖包做了更改,如下所示:
environment:- sdk: ">=2.12.0 <4.0.0"+ sdk: ">=2.17.6 <4.0.0"dependencies:- dio: 5.4.1+ dio: 5.7.0- flutter_screenutil: 5.9.0+ flutter_screenutil: 5.9.3- shared_preferences: 2.2.0+ shared_preferences: 2.3.2- synchronized: 3.1.0+ synchronized: 3.2.0- package_info_plus: 4.1.0 - url_launcher: 6.1.12- permission_handler: 11.3.0- fluttertoast: 8.2.4- tdesign_flutter: 0.1.4 + package_info_plus: 8.0.2+ url_launcher: 6.3.0+ permission_handler: 11.3.1+ fluttertoast: 8.2.8+ device_info_plus: 10.1.2+ tdesign_flutter: 0.1.6dev_dependencies:- flutter_lints: ^2.0.1+ flutter_lints: ^4.0.0
最后,我们执行flutter pub get
更新依赖包。
依赖包更新完成后,我们再次启动项目,发现已经可以正常启动了。
至此,文章就分享完毕了。
我是神奇的程序员,一位前端开发工程师。
如果你对我感兴趣,请移步我的个人网站,进一步了解。