You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成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 clean
    • flutter 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 13:54:01