升级Flutter 3.3.7后flutter_downloader构建失败求助
问题背景
将Flutter升级至3.3.7版本,执行flutter pub outdated && flutter pub upgrade后构建应用时,出现“评估项目':flutter_downloader'时发生问题”的报错,已在对应仓库提交Issue,现寻求问题原因。
调试控制台输出
构建类型:release,使用发布配置签名..
FAILURE: 构建完成但存在2个失败。
任务执行失败:
- 位置:构建文件
/Users/xx/development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.9.0/android/build.gradle第30行 - 问题:评估项目':flutter_downloader'时发生问题。
无法应用插件类'org.jlleitschuh.gradle.ktlint.KtlintBasePlugin'。当前插件版本要求最低Gradle版本为6.8。
- 建议:使用
--stacktrace选项获取堆栈跟踪,使用--info或--debug选项获取更多日志输出,使用--scan选项获取完整分析。
- 位置:构建文件
任务执行失败:
- 位置:脚本
/Users/xx/development/flutter/packages/flutter_tools/gradle/flutter.gradle第474行 - 问题:配置项目':flutter_downloader'时发生问题。
无法通知项目评估监听器。无法对null对象调用substring()方法。com.android.builder.errors.EvalIssueException: compileSdkVersion未指定,请添加至build.gradle。
- 位置:脚本
Flutter Doctor检测结果(Mac Book Air 13" M1处理器)
[✓] Flutter(稳定通道,3.3.7版本,运行于macOS 12.6 21G115 darwin-arm,区域设置en-US)
• Flutter版本3.3.7位于/Users/xx/development/flutter
• 上游仓库为Flutter官方仓库
• Framework版本e99c9c7cd9(33小时前),2022-11-01 16:59:00 -0700
• Engine版本857bd6b74c
• Dart版本2.18.4
• DevTools版本2.15.0[✓] Android工具链 - 开发Android设备(Android SDK版本32.1.0-rc1)
• Android SDK位于/Users/xx/Library/Android/sdk
• 平台android-33,build-tools 32.1.0-rc1
• ANDROID_HOME =/Users/xx/Library/Android/sdk
• Java二进制文件位于:/Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
• Java版本OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
• 所有Android许可证已接受。[✓] Xcode - 开发iOS和macOS应用(Xcode 14.0.1)
• Xcode位于/Applications/Xcode.app/Contents/Developer
• Build版本14A400
• CocoaPods版本1.11.3[✓] Chrome - 开发Web应用
• Chrome位于/Applications/Google Chrome.app/Contents/MacOS/Google Chrome[✓] Android Studio(版本2021.3)
• Android Studio位于/Applications/Android Studio.app/Contents
• Flutter插件可从JetBrains插件市场安装
• Dart插件可从JetBrains插件市场安装
• Java版本OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)[✓] VS Code(版本1.72.2)
• VS Code位于/Applications/Visual Studio Code.app/Contents
• Flutter扩展版本3.52.0[✓] 已连接设备(3台可用)
• sdk gphone64 arm64(移动设备)• emulator-5554 • android-arm64 • Android 12(API 31)(模拟器)
• macOS(桌面设备) • macos • darwin-arm64 • macOS 12.6 21G115 darwin-arm
• Chrome(Web设备) • chrome • web-javascript • Google Chrome 107.0.5304.87[✓] HTTP主机可用性
• 所有必需的HTTP主机均可用
可能的问题原因
- Gradle版本不兼容:
flutter_downloader1.9.0版本依赖的ktlint插件要求最低Gradle版本为6.8,若当前项目使用的Gradle版本低于该要求,会导致插件无法正常加载,触发第一个构建错误。 - compileSdkVersion缺失:
flutter_downloader的Android构建脚本中未指定compileSdkVersion,而Flutter 3.3.7对应的Gradle构建逻辑对该配置有强制校验,缺失时会引发空指针异常(调用substring()的对象为null),进而导致第二个构建错误。
内容的提问来源于stack exchange,提问作者arg0

