Android 12拍摄HEIF图片时Flutter image_picker插件崩溃求助
Android 12下拍摄HEIF照片触发应用崩溃的解决办法
已遇到过相同场景的问题:
image_picker0.8.6版本在Android 12系统处理HEIF格式照片时,存在Native层文件解析逻辑漏洞,会触发无声崩溃——这就是调试器无输出、Crashlytics抓不到日志的原因,因为崩溃未上报到Flutter层。而示例项目因环境简单(无复杂页面栈、权限拦截),所以无法复现。具体修复方案:
- 优先升级依赖版本:
image_picker0.8.7及后续版本已修复该HEIF兼容问题,直接升级到适配Flutter 3.3.x的稳定版(如0.10.5+3)即可解决。 - 临时规避方案(无法升级时):
- 调用拍照接口时强制指定输出格式为JPEG,绕过HEIF处理逻辑:
final XFile? photo = await ImagePicker().pickImage( source: ImageSource.camera, imageQuality: 80, preferredCameraDevice: CameraDevice.rear, ); - 在AndroidManifest.xml中添加HEIF格式支持声明,减少系统层面的格式解析冲突:
<meta-data android:name="android.content.extra.SUPPORTED_IMAGE_FORMATS" android:value="image/jpeg,image/heif"/>
- 调用拍照接口时强制指定输出格式为JPEG,绕过HEIF处理逻辑:
- 排查应用生命周期冲突:大型应用的复杂页面栈可能导致拍照返回时Activity状态异常,需确保处理拍照结果的页面处于活跃状态,避免在页面dispose后执行结果回调。
- Native日志定位:若以上方案无效,通过Android Studio Logcat过滤
AndroidRuntime标签,获取Native层崩溃堆栈,精准定位问题代码。
- 优先升级依赖版本:
内容的提问来源于stack exchange,提问作者lich0n
相关产品推荐
相关产品推荐

