处理 Flutter 在 Xcode16 环境无法构建问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicCoder

处理 Flutter 在 Xcode16 环境无法构建问题

  •  
  •   MagicCoder Sep 30, 2024 2338 views
    This topic created in 576 days ago, the information mentioned may be changed or developed.

    DALLE 2024-09-30 15.23.54 - A minimalist cover image for an article titled 'Flutter in Xcode 16_ Fixing Compatibility Issues.' The background is a plain, clean light gray. In the

    前言

    随着 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.

    image-20240930104407036

    尝试解决

    一般情况下,遇到这种环境问题,我的解决思路为:

    • 求助群聊、好友、AI
    • 求助搜索引擎
    • 三板斧:重启、重装、基建升级

    我的环境变量信息为:

    • macOS 14.7
    • Xcode 16
    • Flutter 3.22.0 、Dart 3.4.0

    清理构建缓存

    第一个思路总结下来就是让我清理掉构建缓存,重新安装CocoaPods,升级url_launcher_ios,清理 Xcode 的 Derived Data ,清理模拟器缓存,我就照着操作了。

    # 清理构建缓存 flutter clean # 重新安装 CocoaPods cd ios pod deintegrate pod install # 升级 url_launcher_ios ,将项目跟目录下的 pubspec.yaml 文件中的版本号改为最新 # 清理 Derived Data rm -rf ~/Library/Developer/Xcode/DerivedData # 清理模拟器缓存 xcrun simctl shutdown all xcrun simctl erase all 

    操作完之后,我发现问题依旧存在,而且因为升级url_launcher_ios还导致了不兼容报错。

    相同的错误

    在谷歌检索报错信息的时候,我搜到了一篇stackoverflow 的帖子,他的报错跟我的一模一样。

    image-20240930115641674

    但是,他是原生开发环境,评论区也没找到解决方案。

    解决方案

    折腾到这里,问题依然没解决,那我就只能重启下电脑了,把 flutter 和 dart 重新安装下了(跟当前版本一致)。依然是同样的报错,那就只能是基建的问题。

    我的项目是基于 flutter_flexible 作为脚手架来搭建的,于是我就去看了下他的提交记录,我发现他针对 Flutter 的新版本做了兼容处理。

    image-20240930121432751

    一般情况下,脚手架对某个版本做兼容,再碰上某个端的大版本升级,肯定会对当前端做一些兼容处理的。那么,我升级 flutter 版本,问题应该就解决了。

    升级 flutter 版本

    我的 flutter 是通过 brew 安装的,所以我升级的时候,通过 brew 的upgrade命令升级即可。

    brew upgrade flutter 

    升级后,我们通过flutter --version来看下版本信息。

    • flutter 3.24.3
    • dart 3.5.3

    image-20240930135851822

    版本升级后,再次打开 android studio ,我们会发现 flutter 和 dart 的路径找不到了,需要重新配置下。

    image-20240930140143647

    image-20240930140204759

    再次启动项目后,我们发现它换了新的报错。看这个报错,应该是某些依赖包不支持 ios18 导致的。

    Swift Compiler Error(Xcode): Type 'UIApplication' does not conform to protocol 'Launcher' 

    image-20240930140427844

    升级依赖包

    我的项目是用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.6 dev_dependencies: - flutter_lints: ^2.0.1 + flutter_lints: ^4.0.0 

    最后,我们执行flutter pub get更新依赖包。

    问题解决

    依赖包更新完成后,我们再次启动项目,发现已经可以正常启动了。

    image-20240930143315374

    写在最后

    至此,文章就分享完毕了。

    我是神奇的程序员,一位前端开发工程师。

    如果你对我感兴趣,请移步我的个人网站,进一步了解。

    • 文中如有错误,欢迎在评论区指正,如果这篇文章帮到了你,欢迎点赞和关注
    • 本文首发于神奇的程序员公众号,未经许可禁止转载
    3 replies    2024-10-01 07:24:06 +08:00
    rrubick
        1
    rrubick  
       Sep 30, 2024
    我的方法简单粗暴:
    重新下载了 Xcode 15
    MagicCoder
        2
    MagicCoder  
    OP
       Sep 30, 2024
    @magic3584 还得是你
    Amose2024
        3
    Amose2024  
       Oct 1, 2024
    你的 blog 黑色背景加上灰色字,对比度不够,看起来好累
    About     Help     Advertise     Blog     API     FAQ     Solana     3175 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 41ms UTC 13:39 PVG 21:39 LAX 06:39 JFK 09:39
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86