MacBook Pro M3上Expo无法自动启动Android模拟器求助
React Native + Expo 无法自动启动Android模拟器问题排查与解决
问题场景
- 新MacBook Pro M3上,React Native结合Expo创建项目正常
- 手动启动Android模拟器后可正常运行项目,但Metro无法自动启动模拟器
- 按下
a尝试启动时,收到错误提示需手动启动/Users/miguel/Library/Android/sdk/emulator/emulator @INFO,但实际无名为INFO的模拟器 - 执行
emulator list-avd命令时,列表中出现INFO项,推测Metro误将其作为首个AVD尝试启动,但它并非有效AVD - 已尝试重启设备、重装Android Studio、更换Java版本、检查环境变量等操作,均未解决问题
当前环境配置:
- Node 21、Java 17、Expo 0.17.6、Android SDK 33(Tiramisu)、Pixel 7 API 34的AVD
问题原因
1. INFO项是什么
INFO是Android模拟器崩溃或异常退出时生成的无效AVD配置残留文件,并非真实的模拟器设备。/tmp/android-miguel/emu-crash-34.1.18.db里的空文件夹和损坏的settings.dat就是模拟器异常崩溃留下的痕迹,这些残留被系统误识别为合法AVD。
2. 自动启动失败的核心原因
Metro默认会调用emulator list-avd获取AVD列表,并选择列表中的第一个设备启动。由于INFO这个无效项排在你的Pixel 7模拟器前面,Metro尝试启动这个不存在的设备,导致启动失败。
解决方法
1. 删除INFO无效AVD配置
- 打开AVD存储目录:
~/.android/avd/ - 找到并删除
INFO.avd文件夹和INFO.ini文件 - 清理临时崩溃文件:删除
/tmp/android-miguel/目录下所有以emu-crash开头的文件夹和文件
2. 手动指定启动的AVD
删除INFO后如果仍有问题,可强制指定要启动的模拟器:
- 先执行
emulator list-avd获取有效AVD的名称(比如你的Pixel 7 API 34对应的名称,假设是Pixel_7_API_34) - 在Metro控制台输入
a --device Pixel_7_API_34,直接启动指定模拟器
3. 调整环境变量优先级
确保emulator命令的路径优先级高于旧工具路径,避免调用旧版本工具导致的识别错误:
修改你的shell配置文件(比如~/.zshrc或~/.bashrc),将$ANDROID_HOME/emulator放在PATH最前面:
# SDK导出 export ANDROID_HOME=$HOME/Library/Android/sdk # 工具导出(emulator路径优先) export PATH="$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$PATH" export ANDROID_AVD_HOME=~/.android/avd
修改后执行source ~/.zshrc(对应你的shell配置文件)使配置生效
4. 重置模拟器缓存
- 打开Android Studio,进入
Tools > Device Manager - 选中你的Pixel 7 API 34模拟器,点击右上角下拉菜单,选择
Wipe Data - 重启Android Studio和Metro服务,再尝试自动启动
内容的提问来源于stack exchange,提问作者Migalejo Lejo
相关产品推荐
相关产品推荐

