Flutter引入image_picker:^0.8.5+3依赖出现运行时错误如何解决
Flutter 引入image_picker ^0.8.5+3后运行报错解决方案
同版本插件在其他项目可正常运行时,优先排查本地缓存、项目原生配置问题,按以下步骤逐一排查即可:
1. 清理缓存重置依赖
- 终止所有正在运行的Flutter调试进程,在项目根目录执行
flutter clean清理历史构建产物 - 删除项目根目录下的
pubspec.lock文件,清除旧的依赖版本锁定记录 - 执行
flutter pub get重新拉取全量依赖 - 重新编译运行项目,验证问题是否消失
2. 修复原生端配置问题
Android端配置检查
- 打开
android/app/build.gradle,确认defaultConfig下的minSdkVersion不低于16(该版本image_picker最低支持API16,建议直接设置为21,兼容绝大多数主流三方插件),参考配置:
android { defaultConfig { minSdkVersion 21 // 其余原有配置保持不变 } }
- 打开
android/gradle.properties,确认已开启AndroidX支持,没有则补充以下配置:
android.useAndroidX=true android.enableJetifier=true
- 打开
android/app/src/main/AndroidManifest.xml,在<manifest>标签内、<application>标签外补充插件所需权限声明:
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
iOS端配置检查
- 打开
ios/Podfile,确认全局iOS部署版本不低于9.0,建议设置为11.0避免和其他插件版本要求冲突,找到对应配置行修改为:
platform :ios, '11.0'
- 终端进入
ios目录,依次执行pod deintegrate、pod install --repo-update重装iOS原生依赖 - 打开
ios/Runner/Info.plist,补充权限使用描述:
<key>NSCameraUsageDescription</key> <string>访问相机用于拍摄图片</string> <key>NSPhotoLibraryUsageDescription</key> <string>访问相册用于选择图片</string> <key>NSMicrophoneUsageDescription</key> <string>访问麦克风用于录制视频拾音</string>
3. 校验Flutter环境一致性
- 执行
flutter --version查看当前项目使用的Flutter SDK版本,和能正常运行该插件的项目所用SDK版本做比对,版本差异过大时可执行flutter upgrade升级到稳定通道版本,或切换到与正常项目一致的SDK版本 - 执行
flutter doctor --android-licenses,一路按提示确认接受所有未签署的Android SDK协议,再执行flutter doctor确认无红色错误项
以上操作全部完成后仍报错的,可以新建空白Flutter项目,把当前项目的pubspec依赖、业务代码复制过去运行。如果空白项目运行正常,说明原有项目的原生端配置文件已损坏,直接用空白项目的android、ios目录替换原有项目的对应文件夹,再重新配置应用签名、包名、权限即可。
内容的提问来源于stack exchange,提问作者Nazmul Hasan
相关产品推荐
相关产品推荐

