Como faço para "agitar" um dispositivo Android no emulador do Android para abrir o menu dev para depurar meu aplicativo React Native

201

Estou trabalhando em um aplicativo móvel React Native para várias plataformas. Estou escrevendo instruções console.log à medida que desenvolvo. Quero ver essas instruções de log no Chrome enquanto estou executando o aplicativo Android no emulador padrão do Android. De acordo com os documentos do Facebook, só preciso "agitar o dispositivo". Como faço isso no emulador do Android?

Para acessar o menu do desenvolvedor no aplicativo:

No iOS, agite o dispositivo ou pressione as teclas + ⌘ + z no simulador. No Android, agite o dispositivo ou pressione o botão do menu de hardware (disponível em dispositivos mais antigos e na maioria dos emuladores, por exemplo, no genymotion, você pode pressionar ⌘ + m para> simular o clique no botão do menu de hardware)

Austin
fonte

Respostas:

220

No seu aplicativo no Android Emulator, pressione Command + Mno OSX ou Ctrl + Mno Linux e Windows.

Ryan McDermott
fonte
2
Infelizmente, o F2 não funciona mais no Linux no Android Emulator 2 beta. E agora?
Szczepan Hołyszewski 30/03
7
@ SzczepanHołyszewski eu gostaria de acrescentar que, atualmente em linux, ctrl + m traz o menu desenvolvedor
Ozum Safa
o <kbd> f1 </ kbd>, ... <kbd> f12 </ kbd> são confusas e difíceis de imprensa, na maioria dos computadores
ericn
223

Com um React Native em execução no emulador,
pressione ctrl+ m(para Linux, suponho que seja o mesmo para Windows e + mpara Mac OS X) ou execute o seguinte no terminal:

adb shell input keyevent 82
ericn
fonte
2
Não está trabalhando para mim imediatamente. Eu precisava entrar em "configurações" ("...")> Configurações> Enviar atalhos do teclado para> Controles do emulador (não dispositivo virtual) e funcionou.
quer
ctrl + m não funciona no linux. Este comando adb shell funciona mesmo se eu preferiria um atalho .... acho que posso fazer um que lançar este comando se eu não encontrar qualquer outra forma
Laurent
Para especificar um dispositivo, faça adb -s <device id/serial> shell input keyevent 82. Eu uso isso ao usar um emulador e um dispositivo físico.
grisaitis
79

Se você estiver usando o novo emulador que acompanha o Android Studio 2.0, o atalho do teclado para a tecla de menu agora é Cmd + M, como no Genymotion.

Como alternativa, você sempre pode enviar um botão de menu pressionando usando adbem um terminal:

adb shell input keyevent KEYCODE_MENU

Observe também que o atalho do botão de menu não é um requisito estrito, é apenas o comportamento padrão fornecido pela ReactActivityclasse Java (que é usada por padrão se você criou seu projeto react-native init). Aqui está o código relevante a partir onKeyUpde ReactActivity.java:

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

Se você estiver adicionando o React Native a um aplicativo existente ( documentação aqui ) e não estiver usando ReactActivity, será necessário conectar o botão de menu da mesma maneira. Você também pode ligar ReactInstanceManager.showDevOptionsDialogatravés de qualquer outro mecanismo. Por exemplo, em um aplicativo em que estou trabalhando, adicionei um item de menu da Barra de Ação somente para desenvolvedores que exibe o menu, pois acho mais conveniente do que agitar o dispositivo ao trabalhar em um dispositivo físico.

Alan Pierce
fonte
isso não está funcionando no MIUI no meu mi4i. apenas traz a bandeja de aplicativos. existe outra solução? Eu quero realmente não para executá-lo em um emulador como que retarda a merda do meu laptop
Shreyans
parece que existem outros problemas específicos para o miui. depois de ativar a permissão de notificação, agora posso agitar o dispositivo para acessar o menu. verifique esta discussão caso alguém esteja tendo problemas com o MIUI github.com/facebook/react-native/issues/2754
Shreyans:
Editei minha postagem para adicionar mais detalhes sobre como tudo isso funciona, o que pode ajudá-lo a rastrear o problema. Meu melhor palpite é que você não está usando ReactActivitye não ligou o botão de menu por outros meios.
21416 Alan Pierce
obrigado pela sua pronta resposta :) embora o problema tenha ocorrido com o gerenciador de permissões do MIUI, que não deixou a caixa de diálogo aparecer.
21416 Shreyans
1
Ótima dica sobre o ReactActivity. Parece que o código agora foi movido para ReactActivityDelegate.java
Ryan H.
20

'Ctrl + m' funciona para Windows no emulador do Android para abrir o menu de desenvolvedor React-Native.

Não foi possível encontrar isso documentado em nenhum lugar. Encontrei o meu caminho até aqui, adivinhei o resto ... Que pena.

A propósito: OP: Você não mencionou em qual SO estava.

espectro
fonte
14

No Linux, você clica nos três pontos "..." ao lado do emulador, em Sensores virtuais, marque "Mover" e tente mover rapidamente as coordenadas x, y ou z.

insira a descrição da imagem aqui

Nicolas Pansardi
fonte
4
Na verdade, essa é a única solução que funcionou para mim.
DsCpp
1
Você também pode clicar no gráfico do dispositivo na janela mostrada e arrastá-lo.
Brismith
10

'Command + M' para OSX está funcionando para mim.

VolkanSahin45
fonte
8

Como estou no Mac OS, ao pressionar Command, ative a opção de zoom. Aqui está a minha solução

  • Botão Abrir janela de configuração
  • Vá para a Settingsguia -> Generalguia -> Send keyboard shortcuts tocampo
  • Altere o valor para Virtual device"conforme mostrado na figura

Depois desse foco no emulador e pressione Command + M, o menu dev será exibido.

Opção Emulador -> Configurações -> Geral

Ponleu
fonte
4

Use command + m(cmd + M)no MAC. Além disso, make sure that you are accessing your application while you try to access the Debug Menuseu aplicativo deve estar em execução, caso contrário Cmd + M, apenas retornará o menu normal do telefone.

Impressionante
fonte
4

Enquanto desenvolvemos aplicativos nativos reativos, brincamos tanto com o terminal

então eu adicionei um script nos scripts no arquivo package.json

"menu": "adb shell input keyevent 82"

e eu bati no menu $ yarn

para que o menu apareça no emulador, ele encaminhará o código de chave 82 para o emulador via ADB, não da maneira ideal, mas eu gosto e sinto que posso compartilhá-lo.

insira a descrição da imagem aqui

Harvinder Singh
fonte
2

no linux, o ctrl + m deve funcionar, mas não resolve o problema, clique no (...) (seus controles estendidos) e feche essa janela. agora você pode abrir o menu com o ctrl + m. então:

  1. clique no (...) (seus controles estendidos)

  2. fechar controles estendidos

  3. ctrl + m

roozbeh siadatzadeh
fonte
1

Pode não ser uma solução direta, mas eu criei uma biblioteca que permite que você use três dedos para tocar em vez de agitar para abrir o menu dev, quando estiver no modo de desenvolvimento

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

Você só precisa envolver seu aplicativo dentro de:

importar DevMenuOnTouch de 'react-native-dev-menu-on-touch'; // ou: importa {DevMenuOnTouch} de 'react-native-dev-menu-on-touch'

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

É realmente útil quando você precisa depurar em um dispositivo real e tem colegas de trabalho sentados ao seu lado.

pie6k
fonte
1

Eu estava tentando criar uma versão via adb install -r -d <app-release>.apk🤦

Verifique se você está executando a compilação de depuração , para que o menu funcione via atalho ou CLI.

Leo
fonte
-1

Para computadores portáteis Windows, tecla fn + Control + m

UMUT
fonte