我正在开发一个跨平台的React Native移动应用程序。我在开发过程中编写console.log语句。我想在Chrome中看到这些日志语句,而我在默认的Android模拟器中运行Android应用程序。根据Facebook的文件,我只需要“摇动设备”。如何在Android模拟器中做到这一点?

要访问应用程序内开发者菜单: 在iOS中摇晃设备或在模拟器中按control +⌘+ z。 在Android上摇晃设备或按硬件菜单按钮(在较旧的>设备和大多数模拟器上可用,例如在genymotion中,您可以按⌘+ m到>模拟硬件菜单按钮单击)


在Android模拟器中的应用程序中,在macOS中按Command + M,在Linux和Windows中按Ctrl + M。


如果你使用Android Studio 2.0附带的新模拟器,菜单键的键盘快捷键现在是Cmd+M,就像Genymotion一样。

或者,你可以在终端中使用adb发送一个菜单按钮:

adb shell input keyevent KEYCODE_MENU

还要注意,菜单按钮快捷方式并不是严格的要求,它只是ReactActivity Java类提供的默认行为(如果您使用react-native init创建项目,则默认使用它)。下面是ReactActivity.java中onKeyUp的相关代码:

if (keyCode == KeyEvent.KEYCODE_MENU) {
  mReactInstanceManager.showDevOptionsDialog();
  return true;
}

如果你正在将React Native添加到一个现有的应用程序(文档在这里),而你没有使用ReactActivity,你将需要以类似的方式连接菜单按钮。你也可以调用ReactInstanceManager。通过任何其他机制显示devoptionsdialog。例如,在我正在开发的一个应用程序中,我添加了一个仅供开发人员使用的动作栏菜单项,它会弹出菜单,因为我发现在物理设备上工作时,这比摇晃设备更方便。


在模拟器中运行React Native, 按ctrl+m(对于Linux,我想对于Windows是一样的,对于Mac OS X是⌘+m) 或者在终端运行如下命令:

adb shell input keyevent 82

“Ctrl + m”适用于Android模拟器中的Windows,以调出React-Native开发人员菜单。

在任何地方都找不到这个记录。 找到了路,猜到了剩下的…好悲伤。

顺便说一下:OP:你没有提到你使用的是什么操作系统。


“命令+ M”的OSX是为我工作。


在Linux上,ctrl+m应该可以工作,但它不能解决这个问题,单击(…)(它的扩展控件),然后关闭该窗口。现在你可以用ctrl+m打开菜单。然后:

点击(…)(它的扩展控件) 关闭扩展控件 ctrl + m


在MAC上使用命令+ m(cmd + m)。也要确保当你试图访问调试菜单时,你正在访问你的应用程序。你的应用程序必须正在运行,否则Cmd + M只会返回通常的普通电话菜单。


对于Linux,你点击模拟器旁边的三个点“…”,在虚拟传感器上检查“移动”,然后尝试快速移动x, y或z坐标。


我在Mac OS上,所以当我按下命令时,它启用了缩放选项。 这是我的解决方案

打开配置窗口[…]]按钮 进入“设置”选项卡->“常规”选项卡->将键盘快捷方式发送到字段 如图所示,将值更改为“Virtual device”

之后,将焦点放在模拟器上并按Command + M,出现dev菜单。


这可能不是直接的解决方案,但我已经创建了一个库,允许您使用3个手指触摸而不是摇晃打开开发菜单时,在开发模式

https://github.com/pie6k/react-native-dev-menu-on-touch

你只需要在里面包装你的应用程序:

从react-native-dev-menu-on-touch导入DevMenuOnTouch; //或:import {DevMenuOnTouch} from 'react-native-dev-menu-on-touch'

class YourRootApp extends Component {
  render() {
    return (
      <DevMenuOnTouch>
        <YourApp />
      </DevMenuOnTouch>
    );
  }
}

当你必须在真正的设备上调试并且你有同事坐在你旁边时,它真的很有用。


在开发react原生应用程序时,我们经常摆弄终端

所以我在包中的脚本中添加了一个脚本。json文件

"menu": "adb shell input keyevent 82"

然后点击$ yarn菜单

使菜单显示在模拟器上 它将通过ADB将键码82转发给模拟器 不是最佳的方式,但我喜欢它,感觉分享它。


如果你想从终端模拟1秒的震动,你可以使用下面的命令:

adb emu sensor set acceleration 100:100:100; sleep 1; adb emu sensor set acceleration 0:0:0