集成integration_test包后,打开图像选择器时应用构建版本崩溃
核心问题原因
- 你将
integration_test依赖错误配置在了项目的顶层dependencies节点下,这是触发release版本崩溃的直接诱因。integration_test是Flutter官方提供的专用测试工具包,设计上仅在测试编译流程引入,不能打包进正式发布的应用安装包。放在普通dependencies下时,release构建流程会把它关联的Flutter Driver依赖全量打进安装包,和multi_image_picker这类原生通道插件产生编译冲突。- Debug模式下不会开启代码裁剪、R8/ProGuard混淆,所有桥接类都会保留,所以全程运行正常;切换到release构建时,被判定为“无用引用”的插件桥接类会被混淆器裁剪,刚好
multi_image_picker打开系统图片选择器的原生桥接逻辑受影响,直接触发崩溃。这也解释了为什么移除integration_test后,release包可以正常运行。
修复操作步骤
- 调整
pubspec.yaml的依赖位置,把integration_test从dependencies节点移到独立的dev_dependencies节点,正确配置结构参考:
dependencies: flutter: sdk: flutter cupertino_icons: ^0.1.2 rflutter_alert: ^1.1.0 multi_image_picker: ^4.7.15 permission_handler: ^5.1.0+2 dev_dependencies: flutter_test: sdk: flutter integration_test: ^1.0.2+2
- 清理本地构建缓存,避免旧的编译产物、混淆规则残留影响验证结果,依次执行命令:
flutter cleanflutter pub get
- 补充Android端的ProGuard混淆保留规则,避免
multi_image_picker的原生类被release构建误删,在android/app/proguard-rules.pro文件中追加规则:
-keep class com.thoughtbot.multiple_image_picker.** { *; } -keep class com.lopei.multi_image_picker.** { *; }
- 重新执行release构建命令(如
flutter build apk --release),安装生成的正式包测试图片选择器功能。
额外排查提示
- 当前权限申请逻辑存在遗漏:
multi_image_picker读取图库不仅需要相机权限,还需要对应平台的存储/照片库权限,仅申请相机权限在部分机型上也会触发权限类崩溃,后续可对齐权限申请逻辑降低异常概率。 - 你使用的
multi_image_picker 4.7.15版本发布时间较早,对Android 13+的新权限模型适配存在已知缺陷,长期迭代可考虑替换为当前社区维护活跃的同类图片选择插件。
内容的提问来源于stack exchange,提问作者aki
相关产品推荐
相关产品推荐

