M1芯片Mac使用Detox在Android模拟器运行E2E测试遇故障
Apple M1芯片Mac运行Android模拟器Detox E2E测试故障说明
该类问题是M系列芯片Mac的常见兼容性问题,大量开发者都遇到过同类故障,常见的触发原因和对应解决方案如下:
- Detox版本过旧:低于19.4.0的Detox版本未原生支持Apple Silicon架构,运行x86_64架构的Android模拟器时会出现二进制适配错误,建议升级Detox到19.4.0及以上的稳定版本。
- Android模拟器架构不匹配:M1芯片上如果使用非arm64-v8a架构的模拟器镜像,会触发Rosetta转译的兼容性问题,导致Detox无法正常连接模拟器。创建模拟器时需要选择arm64-v8a架构的系统镜像,不要使用x86、x86_64架构的镜像。
- Node.js架构不匹配:如果本地安装的是x86_64版本的Node.js(通过Rosetta转译运行),会触发Detox的架构适配错误。可以通过
node -p process.arch命令检查当前Node的架构,输出为arm64才是适配Apple Silicon的版本,若不符合可卸载当前Node后重新安装arm64版本的Node.js。 - 项目构建配置错误:需要在项目的
android/app/build.gradle文件的defaultConfig配置块中添加对应架构配置:
同时确认testBuildType参数配置和编译类型匹配。ndk { abiFilters "arm64-v8a" } - 系统镜像适配问题:如果使用Android 13及以上版本的系统镜像,需要将Detox升级到20.x及以上版本,低版本Detox未适配高版本Android的权限模型,会出现权限获取失败、测试启动超时的问题。如果测试启动超时,也可以在Detox配置文件中将
launchTimeout参数的阈值调整到30000以上。
内容的提问来源于stack exchange,提问作者Pierre Petiteau
相关产品推荐
相关产品推荐

