Skip to content

解决 Android 模拟器命令输出 Storing crashdata 错误

问题描述

在 macOS(特别是 Apple Silicon 芯片设备)运行 Android 模拟器命令(如 emulator -list-avds)时,始终输出如下错误信息:

bash
INFO    | Storing crashdata in: /tmp/android-gregoire/emu-crash-34.1.18.db, detection is enabled for process: 4832

该问题导致:

  1. react-native run-android 命令将错误信息误认为模拟器名称而启动失败
  2. 即使自定义环境变量(如 ANDROID_HOME, ANDROID_AVD_HOME)问题仍然存在
  3. 报错目录 /tmp/android-gregoire/ 中无实质错误数据

兼容性说明

此问题常见于:

  • Android Emulator 34.1.18 版本
  • Apple Silicon (M1/M2) 设备
  • macOS Sonoma 及更高版本

解决方案

以下是两种经过验证的有效解决方法:

方法一:降级至稳定版模拟器(推荐)

效率提示

此方案在多数案例中一次性解决问题

  1. 访问 Android Emulator 历史版本下载页
  2. 下载 33.1.24 (Stable) 版本对应 Apple Silicon 的 DMG 包
  3. 解压下载文件并覆盖 SDK 目录中的旧版:
    bash
    # 默认路径(请根据实际 ANDROID_HOME 调整)
    cp -R ~/Downloads/emulator/* ~/Library/Android/sdk/emulator/
  4. 终端中首次运行命令授权权限:
    bash
    emulator -list-avds
  5. 出现系统权限弹窗时选择 允许
  6. 再次执行命令验证:
    bash
    emulator -list-avds  # 错误信息应已消失

方法二:重装 Android Emulator 工具

  1. 打开 Android Studio → ToolsSDK Manager
  2. 切换至 SDK Tools 标签页
  3. 取消勾选 Android EmulatorSDK Manager 取消勾选
  4. 点击 Apply 完成卸载
  5. 重新勾选 Android Emulator 并点击 Apply 安装新版本
  6. 重启终端后测试命令:
    bash
    emulator -version && emulator -list-avds

解决方案对比

方法适用场景优缺点
降级至 33.1.24急需立即修复/使用 React Native 开发✅ 快速生效
❌ 需手动下载旧版本
重装 Emulator 工具开发环境未强耦合特定版本✅ 自动化操作
❌ 部分情况需降级配合

附加建议

  1. 环境变量验证
    确保自定义路径权限正确(特别是外部存储):

    bash
    ls -ld /Volumes/GregDev/macmini/android/home/avd
    # 输出应有读写权限:drwxr-xr-x
  2. React Native 兼容性处理
    若降级后仍无法识别设备,临时手动启动模拟器:

    bash
    # 先启动模拟器
    emulator -avd Pixel_3a_API_34 &  
    # 再启动 React Native
    npx react-native run-android
  3. 清理残留数据
    删除错误报告中生成的无效目录:

    bash
    rm -rf /tmp/android-gregoire

注意

避免从非官方渠道下载替换文件(如某些 GitHub 评论建议的压缩包)。官方归档版本已涵盖有效解决方案,未知来源文件可能导致安全隐患。

该错误由 Android Emulator 34.1.18 特定版本引起,通常通过降级或重装工具可解决。官方预计在后续版本中修复此问题,建议关注 Android Studio 更新日志