Как «встряхнуть» устройство Android в эмуляторе Android, чтобы вызвать меню dev для отладки моего приложения React Native


201

Я работаю над кроссплатформенным мобильным приложением React Native. Я пишу заявления console.log по мере развития. Я хочу видеть эти операторы регистрации в Chrome, когда я запускаю приложение Android в эмуляторе Android по умолчанию. Согласно документации Facebook, мне просто нужно «встряхнуть устройство». Как мне сделать это в эмуляторе Android?

Чтобы получить доступ к меню разработчика в приложении:

На iOS встряхните устройство или нажмите control + ⌘ + z в симуляторе. В Android встряхните устройство или нажмите кнопку меню оборудования (доступно на старых> устройствах и в большинстве эмуляторов, например, в genymotion вы можете нажать ⌘ + m, чтобы> имитировать нажатие кнопки меню оборудования)

Ответы:


220

В приложении в эмуляторе Android нажмите Command + Mна OSX или Ctrl + Mна Linux и Windows.


2
К сожалению, F2 больше не работает в Linux в Android Emulator 2 beta. Что теперь?
Щепан Холышевский

7
@ SzczepanHołyszewski Я хотел бы добавить, что, в настоящее время в Linux, Ctrl + M вызывает меню разработчика
Ozum Safa

<kbd> f1 </ kbd>, ... <kbd> f12 </ kbd> сбивают с толку и их трудно нажимать на большинстве компьютеров
ericn

223

Когда в эмуляторе запущен React Native,
нажмите « ctrlm(для Linux, я полагаю, он одинаков для Windows и + mдля Mac OS X) или выполните в терминале следующее:

adb shell input keyevent 82

2
Не работает для меня сразу. Мне нужно было зайти в «настройки» («...»)> «Настройки»> «Отправить сочетания клавиш» в> «Элементы управления эмулятора» (не виртуальное устройство), после чего все заработало.
Райан Нелл

Ctrl + M не работает на Linux. Эта команда оболочки adb работает, даже если я предпочел бы ярлык .... думаю, я могу создать команду, которая запускает эту команду, если я не найду другого пути
Лоран,

Чтобы указать устройство сделать adb -s <device id/serial> shell input keyevent 82. Я использую это при использовании как эмулятора, так и физического устройства.
грисаит

79

Если вы используете новый эмулятор, который поставляется с Android Studio 2.0, комбинация клавиш для клавиши меню теперь называется Cmd + M, как в Genymotion.

Кроме того, вы всегда можете отправить нажатие кнопки меню, используя adbв терминале:

adb shell input keyevent KEYCODE_MENU

Также обратите внимание, что ярлык кнопки меню не является строгим требованием, это просто поведение по умолчанию, обеспечиваемое ReactActivityклассом Java (которое используется по умолчанию, если вы создали свой проект с помощью react-native init). Вот соответствующий код из onKeyUpв ReactActivity.java:

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

Если вы добавляете React Native в существующее приложение ( документация здесь ) и не используете его ReactActivity, вам нужно аналогичным образом подключить кнопку меню. Вы также можете позвонить ReactInstanceManager.showDevOptionsDialogчерез любой другой механизм. Например, в приложении, над которым я работаю, я добавил пункт меню «Панель действий только для разработчиков», который вызывает меню, поскольку я считаю, что это более удобно, чем встряхивание устройства при работе на физическом устройстве.


это не работает на MIUI на моем mi4i. он просто открывает панель приложений. Есть ли другое решение? я действительно не хочу запускать его на эмуляторе, так как это замедляет работу моего ноутбука
Shreyans

кажется, есть другие проблемы, специфичные для miui. После включения разрешения уведомления я теперь могу встряхнуть устройство, чтобы получить меню. проверьте эту ветку на случай, если у кого-то еще
возникнут

Я отредактировал свой пост, чтобы добавить больше подробностей о том, как все это работает, что может помочь вам отследить проблему. Я думаю, вы не используете ReactActivityи не подключили кнопку меню другими способами.
Алан Пирс

спасибо за ваш быстрый ответ :) хотя проблема была с диспетчером разрешений MIUI, который не позволял отображать диалог меню.
Шреян

1
Хороший совет о ReactActivity. Похоже, что этот код был перемещен в ReactActivityDelegate.java
Райан Х.

20

Ctrl + m работает для Windows в эмуляторе Android, чтобы вызвать меню разработчика React-Native.

Не могу найти это нигде. Нашел дорогу сюда, догадался об остальном ... Боже мой.

Кстати: OP: Вы не упомянули, на какой ОС вы работали.


14

В Linux вы нажимаете на три точки «...» рядом с эмулятором, на «Виртуальных датчиках» отмечаете «Переместить» и затем пытаетесь быстро переместить координаты x, y или z.

введите описание изображения здесь


4
На самом деле, это единственное решение, которое сработало для меня.
DsCpp

1
Вы также можете щелкнуть изображение устройства в показанном окне и перетащить его.
Брисмит


8

Я нахожусь на Mac OS, поэтому, когда я нажимаю Command, включается опция масштабирования. Вот мое решение

  • Кнопка Открыть окно конфигурации [...]
  • Перейти на Settingsвкладку -> Generalвкладка -> Send keyboard shortcuts toполе
  • Измените значение на Virtual device"как показано на рисунке

После этого сфокусируйтесь на эмуляторе и нажмите Ctrl + M, появится меню разработчика.

Опция эмулятора -> Настройки -> Общие


4

Используйте command + m(cmd + M)на MAC. Кроме того, make sure that you are accessing your application while you try to access the Debug Menuваше приложение должно быть запущено, иначе Cmd + Mпросто вернется обычное меню обычного телефона.


4

Поскольку при разработке реагирующих нативных приложений мы так много играем с терминалом

поэтому я добавил скрипт в скрипты в файле package.json

"menu": "ввод ключа оболочки adb 82"

и я попал в меню $ пряжи

чтобы меню появилось в эмуляторе, оно будет пересылать код ключа 82 в эмулятор через ADB не оптимальным способом, но мне это нравится, и я хотел поделиться им.

введите описание изображения здесь


2

в Linux Ctrl + M должен работать, но это не для решения проблемы, нажмите на (...) (его расширенные элементы управления), а затем закройте это окно. Теперь вы можете открыть меню с помощью Ctrl + M. затем:

  1. нажмите на (...) (его расширенные элементы управления)

  2. закрыть расширенные элементы управления

  3. Ctrl + M


1

Возможно, это не прямое решение, но я создал библиотеку, которая позволяет использовать касание 3 пальцев вместо встряхивания, чтобы открыть меню разработчика в режиме разработки.

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

Вам нужно только обернуть ваше приложение внутри:

импортировать DevMenuOnTouch из «реакции-родной-dev-меню-на-ощупь»; // или: импортировать {DevMenuOnTouch} из «act-native-dev-menu-on-touch »

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

Это действительно полезно, когда вам нужно отладить на реальном устройстве, и рядом с вами сидят сотрудники.


1

Я пытался собрать релиз через adb install -r -d <app-release>.apk🤦

Убедитесь, что вы используете отладочную сборку, тогда меню будет работать через ярлык или CLI.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.