ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Android 模拟器中“摇动”Android 设备以调出开发菜单来调试我的 React Native 应用程序

我正在开发一个跨平台的 React Native 移动应用程序。我在开发时正在编写 console.log 语句。当我在默认的 Android 模拟器中运行 Android 应用程序时,我想在 Chrome 中查看这些日志记录语句。根据Facebook's docs,我只需要“摇动设备”。如何在 Android 模拟器中执行此操作?

要访问应用内开发者菜单:在 iOS 上摇动设备或在模拟器中按 control + ⌘ + z。在 Android 上摇动设备或按硬件菜单按钮(在较旧的 >devices 和大多数模拟器中可用,例如在 genymotion 中,您可以按 ⌘ + m 来 >simulate hardware menu button click)


R
Ronan Boiteau

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


遗憾的是,F2 不再适用于 Android Emulator 2 beta 中的 Linux。现在怎么办?
@SzczepanHołyszewski 我想补充一点,目前在 linux 中, ctrl + m 调出开发者菜单
f1, ... f12 在大多数计算机中令人困惑且难以按下
我可能不会得到任何答案,因为这个线程已经很老了,但我还是会说;这对我不起作用。在我的应用程序中,虚拟移动设备未被识别为晃动
e
ericn

在模拟器中运行 React Native 时,按 ctrl+m(对于 Linux,我想对于 Windows 和 Mac OS X 的 ⌘+m 相同)或在终端中运行以下命令:

adb shell input keyevent 82

不立即为我工作。我需要进入“设置”(“...”)>设置>将键盘快捷方式发送到>模拟器控件(不是虚拟设备),然后它就可以工作了。
ctrl + m 在 Linux 上不起作用。即使我更喜欢快捷方式,这个 adb shell 命令也可以工作......如果我找不到任何其他方式,我想我可以制作一个启动这个命令的命令
要指定设备,请执行 adb -s <device id/serial> shell input keyevent 82。我在同时使用模拟器和物理设备时使用它。
此答案应标记为正确答案,因为它更详细
A
Alan Pierce

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

或者,您始终可以在终端中使用 adb 发送菜单按钮按下:

adb shell input keyevent KEYCODE_MENU

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

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

如果您将 React Native 添加到现有应用程序 (documentation here) 并且您没有使用 ReactActivity,则需要以类似方式连接菜单按钮。您还可以通过任何其他机制调用 ReactInstanceManager.showDevOptionsDialog。例如,在我正在开发的应用程序中,我添加了一个仅用于显示菜单的开发人员操作栏菜单项,因为我发现这比在物理设备上工作时摇晃设备更方便。


这不适用于我的 mi4i 上的 MIUI。它只是调出应用程序托盘。还有其他解决方案吗?我真的不想在模拟器上运行它,因为这会减慢笔记本电脑的运行速度
似乎还有其他特定于 miui 的问题。启用通知权限后,我现在可以摇动设备以获取菜单。检查此线程以防其他人遇到 MIUI github.com/facebook/react-native/issues/2754 问题
我编辑了我的帖子以添加有关所有这些东西如何工作的更多详细信息,这可能会帮助您找出问题所在。我最好的猜测是您没有使用 ReactActivity 并且没有通过其他方式连接菜单按钮。
感谢您的及时回复:) 虽然问题出在 MIUI 权限管理器上,它没有让菜单对话框显示。
关于 ReactActivity 的好提示。似乎该代码现在已移至 ReactActivityDelegate.java
N
Nicolas Pansardi

对于 Linux,您单击模拟器旁边的三个点“...”,在虚拟传感器上选中“移动”,然后尝试快速移动 x、y 或 z 坐标。

https://i.stack.imgur.com/0EqIA.png


实际上,这是唯一对我有用的解决方案。
您也可以在显示的窗口中单击设备图形并将其拖动。
知道如何使用 adb 执行此操作吗?
只有 x 方向“摇晃”对我有用。
s
spechter

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

在任何地方都找不到记录。在这里找到了我的路,猜到了其余的……天哪。

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


P
Ponleu

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

打开配置窗口 [...] 按钮

转到设置选项卡->常规选项卡->将键盘快捷键发送到字段

将值更改为虚拟设备”,如图所示

之后专注于模拟器并按 Command + M,将出现开发菜单。

https://i.stack.imgur.com/ElrBk.jpg


V
VolkanSahin45

OSX 的“Command + M”对我有用。


H
Harvinder Singh

在开发 React Native 应用程序时,我们经常使用终端

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

"menu": "adb shell 输入 keyevent 82"

然后我点击 $ yarn 菜单

为了让菜单出现在模拟器上,它将通过 ADB 将密钥代码 82 转发到模拟器,这不是最佳方式,但我喜欢它并愿意分享它。

https://i.stack.imgur.com/Mb1u1.png


不错的解决方法!
由于模拟器设置现在不可用,这是使用 AS 的 Chipmunk 构建的解决方案。
A
Awesome

在 MAC 上使用 command + m(cmd + M)。此外make sure that you are accessing your application while you try to access the Debug Menu即您的应用程序必须正在运行,否则 Cmd + M 只会返回通常的普通电话菜单。


R
Roozbeh

在 linux ctrl+m 上应该可以工作,但它不能解决问题,单击 (...)(它的扩展控件)然后关闭该窗口。现在您可以通过 ctrl+m 打开菜单。然后:

单击 (...)(其扩展控件)关闭扩展控件 ctrl+m


R
Roberto Leinardi

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

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

A
Adam Pietrasiak

这可能不是直接的解决方案,但我创建了一个库,允许您在开发模式下使用 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>
    );
  }
}

当您必须在真实设备上进行调试并且有同事坐在您旁边时,它非常有用。


是的,但是......经常摇晃它会让他们为有一天你把一杯巧克力慕斯误认为手机的惊喜做好准备。'*`~。
L
Leo

我正在尝试通过 adb install -r -d <app-release>.apk 🤦 进行 release 构建

确保您正在运行调试版本,然后菜单将通过快捷方式或 CLI 运行。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅