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

Android 13下Flutter camera插件空指针异常问题求助

Android 13下camera插件空指针问题解决

问题分析

你遇到的CameraException是因为Android 13的媒体编码配置获取逻辑变更,旧版本camera插件在获取EncoderProfiles$VideoProfile时返回了null,导致调用getWidth()触发空指针异常。

解决方案

1. 升级camera插件到最新稳定版

官方后续版本已经修复了Android 13的适配问题,直接升级是最便捷的解决方式:

  • 修改pubspec.yaml中的camera依赖,指定最新稳定版本(比如camera: ^0.10.5+3,以实际最新版为准)
  • 执行flutter pub get更新依赖

2. 手动适配(无法升级插件时)

如果暂时无法升级插件,可以通过以下方式规避:

  • 指定明确的分辨率:初始化CameraController时,手动传入设备支持的分辨率参数,避免插件自动获取可能为空的编码配置
  • Android端代码修改:自定义相机初始化逻辑,在获取EncoderProfiles时增加非空判断,当配置为空时使用预设的默认分辨率

3. 检查权限配置

确认AndroidManifest.xml中已正确声明权限,并在运行时完成申请:

  • 相机基础权限:CAMERA
  • 若涉及视频录制,还需RECORD_AUDIO
  • Android 13需额外确认POST_NOTIFICATIONS权限是否正常授予(部分场景下权限缺失会间接影响媒体配置获取)

错误日志

E/flutter (14764): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: CameraException(error, Attempt to invoke virtual method 'int android.media.EncoderProfiles$VideoProfile.getWidth()' on a null object reference)
E/flutter (14764): #0      AndroidCamera.createCamera (package:camera_android/src/android_camera.dart:112:7)
E/flutter (14764): <asynchronous suspension>
E/flutter (14764): #1      CameraController.initialize (package:camera/src/camera_controller.dart:291:19)
E/flutter (14764): <asynchronous suspension>

内容的提问来源于stack exchange,提问作者sumit_patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:10:25