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

Android Studio与Flutter中调用相机时设备断开连接的原因?

解决Flutter应用USB tethering连接平板拍照后丢失ADB连接的问题

可能的原因及排查步骤

1. 排查USB tethering与ADB的连接冲突

  • 先关闭USB tethering,改用普通USB调试连接平板,测试拍照后是否还会断开。如果恢复正常,说明tethering占用USB通道导致ADB稳定性下降。
  • 可以切换到无线ADB连接规避这个问题:
    1. 确保平板和电脑处于同一WiFi网络
    2. 在平板开发者选项中开启「无线调试」
    3. 在Android Studio终端执行:adb pair <平板IP>:<配对端口>(配对信息从平板无线调试界面获取)
    4. 接着执行adb connect <平板IP>:<调试端口>,之后用无线ADB测试拍照功能

2. 检查照片操作的内存占用问题

  • 避免直接加载原始尺寸的照片到内存,尝试拍照时就进行压缩:
    final XFile? image = await ImagePicker().pickImage(
      source: ImageSource.camera,
      maxWidth: 1080,
      maxHeight: 1920,
      imageQuality: 80,
    );
    
  • 用Android Studio的Profiler监控应用内存:运行程序后打开Profiler标签,跟踪拍照并添加照片时的内存变化,排查是否存在内存溢出(OOM)导致进程崩溃。

3. 确认权限配置与授予

  • 检查android/app/src/main/AndroidManifest.xml中的权限是否齐全:
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" android:minSdkVersion="33" />
    
  • 手动在平板的应用设置中给应用授予相机和存储权限,再运行程序测试。

4. 重置ADB连接

  • 在Android Studio终端执行以下命令重置ADB:
    adb kill-server
    adb start-server
    
  • 重新插拔USB线,确保平板选择「文件传输」模式,而非仅充电或其他模式。

5. 定位具体代码逻辑问题

  • 编写极简测试demo:只保留拍照功能,不做后续添加操作,测试是否会断开连接。如果正常,逐步添加你原来的照片处理代码,找到触发崩溃的具体逻辑。
  • 如果你使用第三方相机插件(如image_picker、camera),尝试更新到最新版本,或替换为官方推荐的插件测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:35:33