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

Flutter pubspec.lock与pubspec.yaml版本不一致,无法回退至Android 31 SDK

问题

原本基于Android 31 SDK开发Flutter项目,为测试需求安装了一个要求Android 33 SDK的pub.dev包,之后改回原版本并删除pubspec.lock执行flutter pub get,却出现「部分插件需要Android 33 SDK」的错误,项目无法运行或构建。已尝试以下操作但均无效:

  • 删除pubspec.lock后执行flutter pub get
  • 执行flutter pub cache repair再运行flutter pub get
  • 执行flutter pub cache clean再运行flutter pub get
  • 在Android Studio中执行「Invalidates Caches...」再运行flutter pub get
  • 在Android Studio的SDK管理器中卸载Android API 33后运行flutter pub get
  • 卸载Android Build Tool API 33后运行flutter pub get
  • 删除build和.dart_tool文件夹后运行flutter pub get
  • 执行flutter clean再运行flutter pub get

目前pubspec.lock仍自动安装需要Android 33 SDK的新版本包,与pubspec.yaml中指定的旧版本不一致,需将项目恢复至Android 31 SDK环境。

Flutter Doctor检测结果

[✓] Flutter (Channel stable, 2.10.5, on macOS 12.4 21F79 darwin-arm, locale en-GB)
    • Flutter version 2.10.5 at /Users/novusaltairkarachi/Documents/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5464c5bac7 (5 months ago), 2022-04-18 09:55:37 -0700
    • Engine revision 57d3bac3dd
    • Dart version 2.16.2
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/novusaltairkarachi/Library/Android/sdk
    • Platform android-33, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] Connected device (1 available)
    • Chrome (web) • chrome • web-javascript • Google Chrome 105.0.5195.125

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!
Process finished with exit code 0

项目配置信息

compileSdkVersion 31
minSdkVersion 21
targetSdkVersion 31
解决方案

1. 强制锁定依赖精确版本

在pubspec.yaml中,给所有依赖(尤其是之前安装过的SDK33要求包)指定无范围的精确版本号,避免使用^x.x.x这类会自动升级的写法。示例:

dependencies:
  flutter:
    sdk: flutter
  problematic_package: 2.0.0 # 替换为你需要的兼容SDK31的旧版本号

2. 排查并覆盖间接依赖冲突

执行flutter pub deps查看依赖树形结构,找到自动拉取SDK33版本的间接依赖,然后在pubspec.yaml中用dependency_overrides强制指定兼容版本:

dependency_overrides:
  conflicting_dependency: 1.5.0 # 替换为该依赖兼容SDK31的版本号

3. 彻底清理全局与项目缓存

  • 删除Flutter安装目录下的cache文件夹(你的路径为/Users/novusaltairkarachi/Documents/flutter/cache)
  • 删除项目根目录下的.dart_tool隐藏文件夹
  • 执行flutter pub get重新拉取依赖

4. 统一Android项目SDK配置

  • 打开android/app/build.gradle,确认compileSdkVersion、minSdkVersion、targetSdkVersion均为31
  • 打开android/build.gradle,检查全局compileSdkVersion(若有)也设置为31,同时确保ext.kotlin_version与Flutter 2.10.5兼容(推荐1.6.10)

5. 手动修复pubspec.lock

删除pubspec.lock后,先手动编辑该文件(重新生成后),将所有关联SDK33的依赖版本替换为兼容SDK31的旧版本,再执行flutter pub get锁定版本。

6. 清理SDK残留文件

  • 前往/Users/novusaltairkarachi/Library/Android/sdk/platforms,删除android-33文件夹(若存在)
  • 前往/Users/novusaltairkarachi/Library/Android/sdk/build-tools,删除33.x.x版本的工具文件夹(若存在)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:35:21