如何禁用或修改Expo开发者菜单的摇一摇触发方式?
解决Expo摇动触发开发者菜单冲突的方案
方案1:开发阶段(Expo GO环境)临时覆盖摇动监听
你可以在应用入口处直接覆盖Expo默认的摇动事件监听,代码如下:
import { DevSettings } from 'react-native'; // 禁用默认摇一摇触发开发者菜单的逻辑 if (__DEV__) { DevSettings.togglePerformanceMonitor = () => {}; DevSettings.toggleInspector = () => {}; // 如果你需要自定义摇动触发逻辑,可以配合第三方摇一摇检测库使用,检测到摇动后不再触发默认菜单 }
注意:该方法仅在开发模式下生效,生产环境__DEV__变量为false,这段代码会自动失效,不会影响生产包功能。
方案2:通过配置文件永久禁用摇动触发
在项目根目录的app.json/app.config.js中添加如下配置,直接关闭摇动唤出开发者菜单的能力:
{ "expo": { "ios": { "infoPlist": { "EXDevMenuShakeGestureEnabled": false } }, "android": { "manifest": { "meta-data": [ { "name": "expo.modules.devmenu.shakeGestureEnabled", "value": "false" } ] } } } }
修改配置后需要重新执行expo prebuild以及重新构建开发包/生产包,配置才会生效,该方法对开发构建包和生产包都有效。
方案3:自定义开发构建替代Expo GO
如果上述方案在Expo GO中不生效,是因为Expo GO本身的内置逻辑优先级高于项目配置,你可以使用Expo自定义开发构建解决:
- 执行
eas build --profile development --platform [ios/android]生成自定义开发包 - 自定义开发包会完全遵循你在配置文件中的设置,不会出现内置摇动监听冲突的问题
内容的提问来源于stack exchange,提问作者hloth
相关产品推荐
相关产品推荐

