You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Debug构建中禁用React Native调试菜单的摇动手势唤起功能?

如何在React Native Debug模式下禁用摇动手势唤起调试菜单

嘿,这个问题我熟!要是想在Debug构建里关掉摇动手势唤起调试菜单的功能,得分别修改iOS和Android的原生代码——毕竟这个手势是原生层负责处理的。下面是具体操作步骤:

iOS端实现

打开iOS项目里的AppDelegate.m(或AppDelegate.mm)文件,在didFinishLaunchingWithOptions方法中添加以下代码:

#import <React/RCTDevMenu.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // 保留你原有的初始化代码...

#ifdef DEBUG
  // 仅在Debug模式下禁用摇动手势
  RCTEnableShakeToShowDevMenu(false);
#endif

  return YES;
}

这段代码只会对Debug构建生效,Release版本本来就没有调试菜单,完全不用额外处理。

Android端实现

Java版本

打开MainActivity.java,在onCreate方法中加入如下逻辑:

import com.facebook.react.ReactInstanceManager;
import com.facebook.react.devsupport.DevSupportManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  // 保留你原有的初始化代码...

  if (BuildConfig.DEBUG) {
    ReactInstanceManager instanceManager = getReactInstanceManager();
    DevSupportManager devSupportManager = instanceManager.getDevSupportManager();
    devSupportManager.setShakeGestureEnabled(false);
  }
}

Kotlin版本

如果项目用Kotlin开发,打开MainActivity.kt修改如下:

import com.facebook.react.devsupport.DevSupportManager

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState);
  // 保留你原有的初始化代码...

  if (BuildConfig.DEBUG) {
    reactInstanceManager?.devSupportManager?.isShakeGestureEnabled = false
  }
}

做完这些修改后,Debug模式下摇手机就再也不会弹出调试菜单了,完全不影响Release版本的正常运行。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 11:02:33