我正在开发一个跨平台的 React Native 移动应用程序。我在开发时正在编写 console.log 语句。当我在默认的 Android 模拟器中运行 Android 应用程序时,我想在 Chrome 中查看这些日志记录语句。根据Facebook's docs,我只需要“摇动设备”。如何在 Android 模拟器中执行此操作?
要访问应用内开发者菜单:在 iOS 上摇动设备或在模拟器中按 control + ⌘ + z。在 Android 上摇动设备或按硬件菜单按钮(在较旧的 >devices 和大多数模拟器中可用,例如在 genymotion 中,您可以按 ⌘ + m 来 >simulate hardware menu button click)
在 Android 模拟器的应用程序中,在 macOS 上按 Command + M,在 Linux 和 Windows 上按 Ctrl + M。
在模拟器中运行 React Native 时,按 ctrl+m(对于 Linux,我想对于 Windows 和 Mac OS X 的 ⌘+m 相同)或在终端中运行以下命令:
adb shell input keyevent 82
adb -s <device id/serial> shell input keyevent 82
。我在同时使用模拟器和物理设备时使用它。
如果您使用的是 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 添加到现有应用程序 (documentation here) 并且您没有使用 ReactActivity
,则需要以类似方式连接菜单按钮。您还可以通过任何其他机制调用 ReactInstanceManager.showDevOptionsDialog
。例如,在我正在开发的应用程序中,我添加了一个仅用于显示菜单的开发人员操作栏菜单项,因为我发现这比在物理设备上工作时摇晃设备更方便。
ReactActivity
并且没有通过其他方式连接菜单按钮。
对于 Linux,您单击模拟器旁边的三个点“...”,在虚拟传感器上选中“移动”,然后尝试快速移动 x、y 或 z 坐标。
https://i.stack.imgur.com/0EqIA.png
'Ctrl + m' 适用于 Android 模拟器中的 Windows,以调出 React-Native 开发者菜单。
在任何地方都找不到记录。在这里找到了我的路,猜到了其余的……天哪。
顺便说一句: OP:你没有提到你使用的是什么操作系统。
我在 Mac OS 上,所以当我按下命令时,它会启用缩放选项。这是我的解决方案
打开配置窗口 [...] 按钮
转到设置选项卡->常规选项卡->将键盘快捷键发送到字段
将值更改为虚拟设备”,如图所示
之后专注于模拟器并按 Command + M,将出现开发菜单。
https://i.stack.imgur.com/ElrBk.jpg
OSX 的“Command + M”对我有用。
在开发 React Native 应用程序时,我们经常使用终端
所以我在 package.json 文件的脚本中添加了一个脚本
"menu": "adb shell 输入 keyevent 82"
然后我点击 $ yarn 菜单
为了让菜单出现在模拟器上,它将通过 ADB 将密钥代码 82 转发到模拟器,这不是最佳方式,但我喜欢它并愿意分享它。
https://i.stack.imgur.com/Mb1u1.png
在 MAC 上使用 command + m(cmd + M)
。此外make sure that you are accessing your application while you try to access the Debug Menu
即您的应用程序必须正在运行,否则 Cmd + M
只会返回通常的普通电话菜单。
在 linux ctrl+m 上应该可以工作,但它不能解决问题,单击 (...)(它的扩展控件)然后关闭该窗口。现在您可以通过 ctrl+m 打开菜单。然后:
单击 (...)(其扩展控件)关闭扩展控件 ctrl+m
如果你想从终端模拟 1 秒的震动,你可以使用以下命令:
adb emu sensor set acceleration 100:100:100; sleep 1; adb emu sensor set acceleration 0:0:0
这可能不是直接的解决方案,但我创建了一个库,允许您在开发模式下使用 3 个手指触摸而不是摇动来打开开发菜单
https://github.com/pie6k/react-native-dev-menu-on-touch
您只需将您的应用程序包装在里面:
从“react-native-dev-menu-on-touch”导入 DevMenuOnTouch; // or: import { DevMenuOnTouch } from 'react-native-dev-menu-on-touch'
class YourRootApp extends Component {
render() {
return (
<DevMenuOnTouch>
<YourApp />
</DevMenuOnTouch>
);
}
}
当您必须在真实设备上进行调试并且有同事坐在您旁边时,它非常有用。
我正在尝试通过 adb install -r -d <app-release>.apk
🤦 进行 release 构建
确保您正在运行调试版本,然后菜单将通过快捷方式或 CLI 运行。