Как «встряхнуть» устройство 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
ericn
источник
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: Вы не упомянули, на какой ОС вы работали.

spechter
источник
14

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

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

Николя Пансарди
источник
4
На самом деле, это единственное решение, которое сработало для меня.
DsCpp
1
Вы также можете щелкнуть изображение устройства в показанном окне и перетащить его.
Брисмит
10

«Command + M» для OSX работает для меня.

VolkanSahin45
источник
8

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

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

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

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

Ponleu
источник
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 не оптимальным способом, но мне это нравится, и я хотел поделиться им.

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

Harvinder Singh
источник
2

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

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

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

  3. Ctrl + M

roozbeh siadatzadeh
источник
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>
    );
  }
}

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

pie6k
источник
1

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

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

Лео
источник
-1

Для ноутбуков с Windows Fn Key + Control + M

UMUT
источник