升级Flutter 3.3.2后因open_file插件无法构建应用的解决方案咨询
Flutter 3.3.2升级后构建失败问题:open_file插件兼容问题
问题描述
将Flutter版本升级至3.3.2后,无法构建应用,原因是open_file插件使用了已弃用的Android嵌入版本。请问是否可以按照警告提示将该插件迁移至Android V2嵌入,还是只能降级到Flutter 2.x.x版本?
构建报错信息
插件`open_file`使用了已弃用的Android嵌入版本。 为避免意外运行时错误或未来的构建失败,请检查该插件是否支持Android V2嵌入。否则,请考虑移除它,因为未来的Flutter版本会移除这些已弃用的API。 如果你是插件开发者,请查看迁移插件到V2嵌入的文档:https://flutter.dev/go/android-plugin-migration。 正在调试模式下启动lib\main.dart到sdk gphone x86 arm... lib\main.dart:1 错误:无法启用健全空安全,因为以下依赖项不支持空安全: - package:open_file 解决方案请查看:https://dart.dev/go/unsound-null-safety 构建失败,出现异常。
Flutter Doctor检测结果
[√] Flutter(稳定通道,3.3.2版本,运行于Microsoft Windows [版本10.0.19044.2006],区域设置et-EE) • Flutter版本3.3.2位于稳定通道,路径为c:\flutter • 上游仓库https://github.com/flutter/flutter.git • Framework修订版本e3c29ec00c(3天前),2022-09-14 08:46:55 -0500 • Engine修订版本a4ff2c53d8 • Dart版本2.18.1 • DevTools版本2.15.0 [√] Android工具链 - 开发Android设备(Android SDK版本30.0.3) • Android SDK位于C:\Users\pavel\AppData\Local\Android\Sdk • 平台android-33,构建工具30.0.3 • ANDROID_SDK_ROOT = C:\Users\pavel\AppData\Local\Android\Sdk • Java二进制文件路径:c:\Android\jre\bin\java • Java版本OpenJDK Runtime Environment(build 11.0.8+10-b944.6842174) • 已接受所有Android许可证。 [√] Chrome - 开发Web应用 • Chrome位于C:\Program Files\Google\Chrome\Application\chrome.exe [√] Visual Studio - 开发Windows应用(Visual Studio Community 2022 17.1.4) • Visual Studio位于C:\Program Files\Microsoft Visual Studio\2022\Community • Visual Studio Community 2022版本17.1.32407.343 • Windows 10 SDK版本10.0.19041.0 [√] Android Studio(4.2版本) • Android Studio位于C:\Android • Flutter插件可从以下地址安装: https://plugins.jetbrains.com/plugin/9212-flutter • Dart插件可从以下地址安装: https://plugins.jetbrains.com/plugin/6351-dart • Java版本OpenJDK Runtime Environment(build 11.0.8+10-b944.6842174) [√] Android Studio • Android Studio位于c:\Android • Flutter插件可从以下地址安装: https://plugins.jetbrains.com/plugin/9212-flutter • Dart插件可从以下地址安装: https://plugins.jetbrains.com/plugin/6351-dart • android-studio-dir = c:\Android • Java版本OpenJDK Runtime Environment(build 11.0.8+10-b944.6842174) [√] VS Code(1.71.2版本) • VS Code位于C:\Users\pavel\AppData\Local\Programs\Microsoft VS Code • Flutter扩展版本3.48.0 [√] 已连接设备(4台可用) • sdk gphone x86 arm(移动设备) • emulator-5554 • android-x86 • Android 11(API 30)(模拟器) • Windows(桌面设备) • windows • windows-x64 • Microsoft Windows [版本10.0.19044.2006] • Chrome(Web设备) • chrome • web-javascript • Google Chrome 105.0.5195.126 • Edge(Web设备) • edge • web-javascript • Microsoft Edge 105.0.1343.33 [√] HTTP主机可用性 • 所有必要的HTTP主机均可访问 • 未发现问题!
解决方案
- 优先升级插件:检查
open_file的最新版本,新版本通常已适配Android V2嵌入和健全空安全。在pubspec.yaml中更新依赖版本后执行flutter pub get,再重新构建。如果官方版本未更新,可查看插件GitHub仓库是否有社区维护的适配分支。 - 自行迁移插件:具备Android开发能力的话,可修改插件Android端代码,替换V1嵌入API为V2嵌入规范,同时适配空安全。修改后将插件作为本地依赖引入项目,或提交PR给原仓库。
- 临时关闭空安全:运行时添加参数跳过空安全检查:
flutter run --no-sound-null-safety,但这只是临时方案,不推荐长期使用,后续Flutter版本可能不再支持非空安全代码。 - 降级Flutter版本:若以上方案均不可行,可降级到Flutter 2.x.x稳定版,该版本仍兼容旧Android嵌入和非空安全依赖,执行命令如
flutter downgrade v2.10.5(替换为目标2.x版本号)。
内容的提问来源于stack exchange,提问作者Pavel Murnikov
相关产品推荐
相关产品推荐

