You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Flutter扫码App打开相机时导致模拟器崩溃问题求助

排查Flutter扫码App模拟器崩溃问题

嘿,这种无预警的崩溃确实挺闹心的,结合你描述的情况(日志只显示相机已打开,怀疑Mac不给AVD权限),咱们一步步来排查:

1. 先搞定Mac系统层面的相机权限

Mac的系统权限经常会悄悄“卡”住应用访问相机的请求,你可以这么做:

  • 打开Mac的系统设置(Ventura及以上点左上角苹果图标→系统设置;旧版是系统偏好设置)
  • 找到隐私与安全性相机
  • 检查列表里有没有Android Studio或者qemu-system-x86_64(这是AVD的核心进程),要是没有,点击加号,找到Android Studio安装目录里的对应程序加进去,然后重启Android Studio和模拟器再试。

2. 核对模拟器的相机配置

有时候模拟器的相机参数没设对也会崩:

  • 打开AVD Manager,找到你的模拟器,点那个铅笔图标进入编辑页面
  • 切换到Show Advanced Settings(显示高级设置)
  • 往下翻到Camera区域:
    • 确认后置摄像头选的是Webcam0,而且这个Webcam确实是Mac正在用的摄像头(如果有多个摄像头,不妨换一个试试)
    • 检查相机分辨率是不是模拟器支持的,别选太高或者不兼容的分辨率
  • 保存后重启模拟器测试。

3. 再检查Android权限配置

虽然你说改了AndroidManifest.xml,但再仔细核对下有没有加全权限:

<!-- 基础相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- 声明相机硬件特性,部分插件要求这个 -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

另外,有些扫码插件(比如qr_code_scanner)还要求compileSdkVersion不低于某个版本,你可以对照插件的文档再确认下配置有没有漏。

4. 抓更详细的崩溃日志

模拟器崩溃没日志?试试这俩方法:

  • 打开Android Studio的Logcat,崩溃前把过滤器设成你的App包名,或者直接搜FATAL EXCEPTION,说不定能找到隐藏的错误信息
  • 终端里运行adb logcat *:E,只看错误级别的日志,然后触发扫码操作,盯着终端看有没有输出崩溃相关内容

5. 换个环境验证

要是以上都没解决,换个环境排除问题:

  • 新建一个AVD(选不同的Android版本或者设备型号)试试
  • 用真实的Android设备测试,看看是不是模拟器本身的兼容性问题
  • 也可以换个扫码插件试试,比如把当前插件换成qr_code_scanner,对比下是否还会崩溃

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

火山引擎 最新活动