You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline使用缓存版Flutter InAppWebview包致编译错误求助

问题原因与解决方法

原因分析

  1. 版本依赖范围差异:你在pubspec.yaml中指定的flutter_inappwebview: ^5.7.1,其中^符号允许安装主版本一致、次版本不低于5.7.1的最新兼容版本。本地环境安装的是5.7.1,但Azure Pipeline自动拉取到了更新的5.7.1+2版本,该小版本的Swift代码存在适配问题,与Pipeline上的Flutter/Xcode版本不兼容,触发编译错误。
  2. Pipeline缓存复用:Azure Pipeline默认会缓存Flutter的.pub-cache目录,之前构建时下载的5.7.1+2被缓存下来,后续构建直接复用该缓存,未重新拉取与本地一致的5.7.1版本。

重置Azure Pipeline的.pub-cache方法

方法一:修改Pipeline配置,调整缓存策略

  • 打开你的Pipeline yaml配置文件,找到针对Flutter pub-cache的Cache任务。
  • 可临时注释缓存任务,让构建重新下载所有依赖;或修改缓存key,加入pubspec.lock的哈希值,确保依赖变更时缓存自动失效:
    - task: Cache@2
      inputs:
        key: 'flutter_pub | "$(Agent.OS)" | pubspec.lock'
        path: $(FLUTTER_HOME)/.pub-cache
        restoreKeys: |
          flutter_pub | "$(Agent.OS)"
    
  • 提交yaml修改后重新触发构建。

方法二:手动删除远程缓存

  • 登录Azure DevOps门户,进入对应项目的Pipeline页面。
  • 点击「库」->「缓存」,找到与Flutter pub-cache相关的缓存条目,选中后删除即可。

方法三:构建时执行清理命令

在Pipeline的依赖安装步骤前,添加清理命令,强制清空缓存并重新下载依赖:

flutter pub cache clean
flutter pub get

预防建议

将pubspec.yaml里的依赖版本从^5.7.1改为固定版本5.7.1,运行flutter pub get更新pubspec.lock后提交到仓库,这样Pipeline会严格拉取指定版本的依赖,避免版本不一致问题。

内容的提问来源于stack exchange,提问作者user4415205

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:40:32