Android 에뮬레이터 내에서 Android 기기를“흔들어”개발자 메뉴를 불러 와서 React Native 앱을 디버깅하는 방법


201

크로스 플랫폼 React Native 모바일 앱을 개발 중입니다. 개발하면서 console.log 문을 작성 중입니다. 기본 Android 에뮬레이터에서 Android 앱을 실행하는 동안 Chrome에서 이러한 로깅 문을보고 싶습니다. Facebook의 문서 에 따르면 "기기를 흔들어야"합니다. Android 에뮬레이터에서 어떻게합니까?

인앱 개발자 메뉴에 액세스하려면

iOS에서는 기기를 흔들거나 시뮬레이터에서 control + ⌘ + z를 누릅니다. Android에서 기기를 흔들거나 하드웨어 메뉴 버튼을 누릅니다 (이전> 기기 및 대부분의 에뮬레이터에서 사용 가능 (예 : genymotion에서 ⌘ + m을 누르면> 하드웨어 메뉴 버튼 클릭 시뮬레이션))

답변:


220

Android Emulator의 앱 내 Command + M에서 OSX 또는 Ctrl + MLinux 및 Windows를 누릅니다 .


2
안타깝게도 F2는 더 이상 Android 에뮬레이터 2 베타의 Linux에서 작동하지 않습니다. 지금 무엇?
Szczepan Hołyszewski

7
@ SzczepanHołyszewski 저는 현재 리눅스에서 ctrl + m이 개발자 메뉴를 불러오고 싶습니다
Ozum Safa

<kbd> f1 </ kbd>, ... <kbd> f12 </ kbd>는 혼란스럽고 대부분의 컴퓨터에서 누르기가 어렵습니다
ericn

223

A는 에뮬레이터에서 기본 실행 반응으로
누르면 ctrl+는 m(리눅스, 나는 그것이 Windows 용 같은과 겠 + m맥 OS X의 경우) 또는 터미널에서 다음을 실행합니다 :

adb shell input keyevent 82

2
나를 위해 즉시 작동하지 않습니다. "설정"( "...")> 설정> 키보드 단축키 보내기> 에뮬레이터 컨트롤 (가상 장치 아님)로 이동 한 다음 작동했습니다.
Ryan Knell

ctrl + m은 Linux에서 작동하지 않습니다. 이 adb shell 명령어는 내가 지름길을 선호하더라도 작동한다 .... 추천 다른 방법을 찾지 못하면이 명령어를 실행하는 명령어를 만들 수있다
Laurent

장치를 지정하려면 수행하십시오 adb -s <device id/serial> shell input keyevent 82. 에뮬레이터와 물리적 장치를 모두 사용할 때 이것을 사용합니다.
grisaitis

79

Android Studio 2.0과 함께 제공되는 새로운 에뮬레이터를 사용하는 경우 Genymotion에서와 마찬가지로 메뉴 키의 키보드 단축키는 이제 Cmd + M입니다.

또는 adb터미널에서 언제든지 메뉴 버튼 누름을 보낼 수 있습니다 .

adb shell input keyevent KEYCODE_MENU

또한 메뉴 버튼 바로 가기는 엄격한 요구 사항이 아니며 ReactActivityJava 클래스에서 제공하는 기본 동작 일뿐입니다 (이 옵션을 사용하여 프로젝트를 만든 경우 기본적으로 사용됨 react-native init). 여기에서 관련 코드의 onKeyUp의는 ReactActivity.java:

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

React Native를 기존 앱에 추가하고 ( 여기 문서 )을 사용하지 않는 ReactActivity경우 비슷한 방식으로 메뉴 버튼을 연결해야합니다. ReactInstanceManager.showDevOptionsDialog다른 메커니즘을 통해 호출 할 수도 있습니다 . 예를 들어, 작업중 인 앱에서 실제 장치에서 작업 할 때 장치를 흔드는 것보다 더 편리하다는 것을 알기 때문에 메뉴를 표시하는 개발자 전용 작업 표시 줄 메뉴 항목을 추가했습니다.


이것은 내 mi4i의 MIUI에서 작동하지 않습니다. 앱 트레이가 나타납니다. 다른 해결책이 있습니까? 난 정말 내 노트북에서 똥을 느리게 에뮬레이터에서 실행하고 싶지
않아

miui와 관련된 다른 문제가있는 것 같습니다. 알림 권한을 활성화 한 후 이제 메뉴를 가져 오기 위해 장치를 흔들 수 있습니다. 다른 사람이 MIUI github.com/facebook/react-native/issues/2754
Shreyans

이 게시물이 어떻게 작동하는지 자세히 설명하기 위해 게시물을 편집하여 문제를 추적하는 데 도움이 될 수 있습니다. 내 최선의 추측은 당신이 사용하지 않고 ReactActivity있고 다른 방법으로 메뉴 버튼을 연결하지 않은 것입니다.
Alan Pierce

메뉴 응답을 표시하지 않은 MIUI 권한 관리자 문제가 있었지만 프롬프트 응답에 감사드립니다.
Shreyans

1
ReactActivity에 대한 좋은 팁. 이 코드는 이제 ReactActivityDelegate.java로 이동 한 것 같습니다
Ryan H.

20

'Ctrl + m'은 Android 에뮬레이터의 Windows 에서 작동 하여 React-Native 개발자 메뉴를 불러옵니다.

어디에서나 문서를 찾을 수 없습니다. 여기 내 길을 찾았고 나머지는 짐작 했어 ... 슬픔.

그건 그렇고 : OP : 당신은 당신이 어떤 OS를 사용하고 있는지 언급하지 않았습니다.


14

Linux의 경우 에뮬레이터 옆에있는 세 개의 점 "..."을 클릭하고 가상 센서에서 "이동"을 선택한 다음 x, y 또는 z 좌표를 빠르게 이동하십시오.

여기에 이미지 설명을 입력하십시오


4
실제로, 저에게 유일한 해결책이었습니다.
DsCpp

1
표시된 창에서 장치 그래픽을 클릭하고 드래그 할 수도 있습니다.
brismith

10

OSX의 'Command + M'이 나를 위해 일하고 있습니다.


8

Mac OS에 있으므로 Command를 누르면 확대 / 축소 옵션이 활성화됩니다. 여기 내 해결책이 있습니다

  • 구성 창 [...] 버튼 열기
  • Settings탭으로 이동 -> General탭-> Send keyboard shortcuts to필드
  • Virtual device"그림과 같이 값을 변경하십시오.

에뮬레이터에 초점을 맞추고 Command + M을 누르면 dev 메뉴가 나타납니다.

에뮬레이터 옵션-> 설정-> 일반


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 input keyevent 82"

그리고 나는 $ 원사 메뉴를 쳤다

메뉴가 에뮬레이터에 나타나기 위해서는 ADB를 통해 키 코드 82를 에뮬레이터에 최적의 방법으로 전달하지 않지만 그것을 좋아하고 공유한다고 느꼈습니다.

여기에 이미지 설명을 입력하십시오


2

리눅스에서는 Ctrl + m이 작동하지만 문제를 해결하지는 않습니다 (...) (확장 컨트롤)을 클릭 한 다음 해당 창을 닫으십시오. 이제 Ctrl + m로 메뉴를 열 수 있습니다. 그때:

  1. (...)을 클릭하십시오 (확장 컨트롤).

  2. 확장 된 컨트롤 닫기

  3. ctrl + m


1

직접적인 해결책은 아니지만 개발 모드에있을 때 악수 대신 3 손가락 터치사용 하여 dev 메뉴를 열 수있는 lib를 만들었습니다.

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

당신은 단지 안에 응용 프로그램을 포장해야합니다 :

'react-native-dev-menu-on-touch'에서 DevMenuOnTouch 가져 오기; // 또는 : 'react-native-dev-menu-on-touch'에서 {DevMenuOnTouch} 가져 오기

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

실제 장치에서 디버깅해야 할 때 동료가 옆에 앉아있을 때 정말 유용합니다.


1

🤦을 통해 릴리스 빌드를 시도했습니다.adb install -r -d <app-release>.apk

디버그 빌드를 실행하고 있는지 확인하면 바로 가기 또는 CLI를 통해 메뉴가 작동합니다.


-1

Windows 랩톱의 경우 fn 키 + Control + m

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.