Як я "струшу" пристрій Android в емуляторі Android, щоб відкрити меню розробок для налагодження мого додатка React Native


201

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

Щоб отримати доступ до меню розробника додатка:

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

Відповіді:


220

У додатку в Емуляторі Android натисніть Command + Mна OSX або Ctrl + Mв Linux та Windows.


2
На жаль, F2 більше не працює на Linux в бета-версії Android Emulator 2. Що тепер?
Szczepan Hołyszewski

7
@ SzczepanHołyszewski Я хотів би додати, що в даний час в Linux ctrl + m відкривається меню розробника
Ozum Safa

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

223

Якщо React Native працює в емуляторі,
натисніть ctrl+ m(для Linux, я вважаю, це однаково для Windows та + mдля Mac OS X) або запустіть наступне в терміналі:

adb shell input keyevent 82

2
Не відразу для мене. Мені потрібно було зайти в "налаштування" ("...")> Налаштування> Надіслати скорочення клавіатури на> Емулятор управління (не віртуальний пристрій), тоді це спрацювало.
Райан Кнелл

ctrl + m не працює в Linux. Ця команда adb shell працює, навіть якщо я вважаю за краще ярлик .... здогадуюсь, я можу зробити те, що запустить цю команду, якщо я не знайду іншого способу
Лоран

Щоб вказати пристрій, зробіть 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 github.com/facebook/react-native/isissue/2754
Shreyans,

Я відредагував свою публікацію, щоб додати докладнішу інформацію про те, як працюють усі ці речі, що може допомогти вам відстежити проблему. Моя найкраща здогадка - ви не використовуєте 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"як показано на малюнку

Після цього зосередьтесь на емуляторі та натисніть Command + 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 shell keyevent 82"

і я потрапив у меню $ пряжі

щоб меню з’явилося на емуляторі, воно передасть код клавіші 82 емулятору через ADB не оптимальним способом, але мені це подобається і я відчув, що їм поділитися.

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


2

на linux ctrl + m має працювати, але це не вирішує проблему, натисніть на (...) (його розширені елементи керування), а потім закрийте це вікно. тепер ви можете відкрити меню ctrl + m. тоді:

  1. натисніть на (...) (розширені елементи керування)

  2. закрити розширені елементи керування

  3. ctrl + m


1

Це може бути не прямим рішенням, але я створив конфігурацію, яка дозволяє використовувати три пальці, а не тремтіти, щоб відкрити меню розробників, коли в режимі розробки

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

Вам потрібно лише загортати додаток всередину:

імпортувати DevMenuOnTouch з 'react-native-dev-menu-on-touch'; // або: імпортувати {DevMenuOnTouch} з 'react-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.