Flutter项目device_info插件Android端报MissingPluginException求解决方案
Flutter Android端获取设备信息报MissingPluginException的解决方案
看到你遇到的这个问题——iOS端正常运行但Android端抛出MissingPluginException,而且已经试过flutter clean、重装应用和切换Flutter通道都没解决,我来给你几个针对性的方案:
1. 优先升级到官方推荐的替代插件
你当前使用的device_info: ^0.4.2+6是已被官方废弃的旧插件,现在官方推荐用device_info_plus替代它,旧版本和较新的Flutter稳定版(比如你用的1.20.2)大概率存在兼容性问题。
替换步骤:
- 在
pubspec.yaml里移除旧的device_info依赖,添加新依赖:dependencies: device_info_plus: ^9.0.2 # 可前往pub.dev查看最新版本号 - 执行
flutter pub get拉取依赖 - 代码适配(新插件API和旧版几乎一致,改动极小):
import 'package:device_info_plus/device_info_plus.dart'; var deviceInfo = DeviceInfoPlugin(); if (Platform.isIOS) { IosDeviceInfo iosDeviceInfo = await deviceInfo.iosInfo; } else { AndroidDeviceInfo androidDeviceInfo = await deviceInfo.androidInfo; }
2. 针对旧插件的修复方案(若不想升级)
如果你暂时不想替换插件,可以尝试以下操作:
- 手动触发Android项目的Gradle同步:打开Android Studio并导入项目的
android文件夹,点击工具栏的「Sync Project with Gradle Files」按钮,确保所有依赖同步完成。 - 彻底清理构建缓存:
- 执行
flutter clean - 进入项目的
android目录,执行./gradlew clean(Windows系统用gradlew clean) - 返回项目根目录,执行
flutter pub get - 重新运行应用
- 执行
- 检查AndroidManifest.xml配置:确保文件中没有误删基础权限(比如
INTERNET,虽然获取设备信息不需要,但部分插件依赖它完成初始化流程)。
3. 检查Flutter与Android项目的版本兼容性
确认Android项目的Gradle版本和Flutter版本匹配:
- 打开
android/build.gradle,检查com.android.tools.build:gradle的版本,对于Flutter 1.20.2,推荐使用3.5.0或3.6.0版本的Gradle插件。 - 打开
android/gradle/wrapper/gradle-wrapper.properties,检查distributionUrl对应的Gradle版本,比如gradle-5.6.4-all.zip(和3.5.0插件版本匹配)。
如果以上方法都无效,可以尝试删除项目根目录下的.android文件夹(注意备份重要配置),再执行flutter pub get让Flutter重新生成Android项目文件。
内容的提问来源于stack exchange,提问作者Amani Elsaed
相关产品推荐
相关产品推荐

