Come "scuoto" un dispositivo Android all'interno dell'emulatore Android per visualizzare il menu di sviluppo per eseguire il debug della mia app React Native


201

Sto lavorando a un'app mobile React Native multipiattaforma. Sto scrivendo istruzioni console.log mentre sviluppo. Voglio vedere queste dichiarazioni di registrazione in Chrome mentre eseguo l'app Android nell'emulatore Android predefinito. Secondo i documenti di Facebook, devo solo "scuotere il dispositivo". Come posso farlo nell'emulatore Android?

Per accedere al menu sviluppatore in-app:

Su iOS scuoti il ​​dispositivo o premi control + ⌘ + z nel simulatore. Su Android scuoti il ​​dispositivo o premi il pulsante menu hardware (disponibile su dispositivi> precedenti e nella maggior parte degli emulatori, ad esempio in genymotion puoi premere ⌘ + m per> simulare clic sul pulsante menu hardware)

Risposte:


220

Nella tua app nell'emulatore Android premi Command + Msu OSX o Ctrl + Msu Linux e Windows.


2
Purtroppo F2 non funziona più su Linux in Android Emulator 2 beta. E adesso?
Szczepan Hołyszewski,

7
@ SzczepanHołyszewski Vorrei aggiungere che, attualmente in Linux, ctrl + m fa apparire il menu degli sviluppatori
Ozum Safa,

<kbd> f1 </kbd>, ... <kbd> f12 </kbd> sono confusi e difficili da stampare nella maggior parte dei computer
ericn

223

Con un nativo React in esecuzione nell'emulatore,
premi ctrl+ m(per Linux, suppongo che sia lo stesso per Windows e + mper Mac OS X) o esegui quanto segue nel terminale:

adb shell input keyevent 82

2
Non funziona per me immediatamente. Avevo bisogno di andare in "impostazioni" ("...")> Impostazioni> Invia comandi tastiera a> Controlli emulatore (non dispositivo virtuale), quindi ha funzionato.
Ryan Knell,

ctrl + m non funziona su Linux. Questo comando della shell adb funziona anche se preferirei una scorciatoia .... suppongo di poterne fare uno che avvii questo comando se non trovo altro modo
Laurent

Per specificare un dispositivo fare adb -s <device id/serial> shell input keyevent 82. Lo uso quando utilizzo sia un emulatore che un dispositivo fisico.
Grisaitis,

79

Se stai utilizzando il nuovo emulatore fornito con Android Studio 2.0, la scorciatoia da tastiera per il tasto menu è ora Cmd + M, proprio come in Genymotion.

In alternativa, puoi sempre inviare una pressione del pulsante menu utilizzando adbin un terminale:

adb shell input keyevent KEYCODE_MENU

Si noti inoltre che il collegamento al pulsante menu non è un requisito rigoroso, è solo il comportamento predefinito fornito dalla ReactActivityclasse Java (che viene utilizzato per impostazione predefinita se si è creato il progetto con react-native init). Ecco il codice rilevante da onKeyUpin ReactActivity.java:

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

Se stai aggiungendo React Native a un'app esistente ( documentazione qui ) e non stai utilizzando ReactActivity, dovrai collegare il pulsante del menu in modo simile. Puoi anche chiamare ReactInstanceManager.showDevOptionsDialogqualsiasi altro meccanismo. Ad esempio, in un'app su cui sto lavorando, ho aggiunto una voce di menu della barra delle azioni solo per sviluppatori che fa apparire il menu, poiché lo trovo più conveniente che agitare il dispositivo quando si lavora su un dispositivo fisico.


questo non funziona su MIUI sul mio mi4i. fa apparire solo la barra delle applicazioni. c'è un'altra soluzione? non voglio davvero eseguirlo su un emulatore in quanto ciò rallenta la merda dal mio laptop
Shreyans,

sembra che ci siano altri problemi specifici di Miui. dopo aver abilitato il permesso di notifica ora posso scuotere il dispositivo per ottenere il menu. controlla questa discussione nel caso in cui qualcun altro abbia problemi con MIUI github.com/facebook/react-native/issues/2754
Shreyans

Ho modificato il mio post per aggiungere ulteriori dettagli su come funzionano tutte queste cose, il che può aiutarti a rintracciare il problema. La mia ipotesi migliore è che non stai usando ReactActivitye non hai collegato il pulsante del menu in altri modi.
Alan Pierce,

grazie per la pronta risposta :) anche se il problema riguardava il gestore delle autorizzazioni MIUI che non consentiva la visualizzazione della finestra di menu.
Shreyans,

1
Bel consiglio su ReactActivity. Sembra che quel codice sia stato ora spostato in ReactActivityDelegate.java
Ryan H.

20

'Ctrl + m' funziona per Windows nell'emulatore Android per visualizzare il menu sviluppatore React-Native.

Impossibile trovare documentato da nessuna parte. Ho trovato la mia strada qui, indovinato il resto ... Buon dolore.

A proposito: OP: non hai menzionato il sistema operativo in cui ti trovavi.


14

Per Linux fai clic sui tre punti "..." accanto all'emulatore, su Sensori virtuali seleziona "Sposta" e quindi prova a spostare rapidamente le coordinate x, yo z.

inserisci qui la descrizione dell'immagine


4
In realtà, questa è l'unica soluzione che ha funzionato per me.
DsCpp

1
Puoi anche fare clic sull'immagine del dispositivo nella finestra visualizzata e trascinarla.
Brismith,


8

Sono su Mac OS, quindi quando premo Comando, abilita l'opzione di zoom. Ecco la mia soluzione

  • Aprire il pulsante [...] della finestra di configurazione
  • Vai alla Settingsscheda -> Generalscheda -> Send keyboard shortcuts tocampo
  • Cambia il valore Virtual device"come mostrato in figura

Dopo aver focalizzato l'attenzione sull'emulatore e premere Comando + M, viene visualizzato il menu dev.

Opzione emulatore -> Impostazioni -> Generale


4

Utilizzare command + m(cmd + M)su MAC. Inoltre, la make sure that you are accessing your application while you try to access the Debug Menutua app deve essere in esecuzione, altrimenti Cmd + Mtornerà semplicemente al normale menu del telefono.


4

Come durante lo sviluppo di app native reattive, giochiamo così tanto con il terminale

così ho aggiunto uno script negli script nel file package.json

"menu": "keybent di input della shell adb 82"

e ho colpito il menu $ filato

affinché il menu appaia sull'emulatore, inoltrerà il codice chiave 82 all'emulatore tramite ADB non nel modo ottimale ma mi piace e mi è sembrato di condividerlo.

inserisci qui la descrizione dell'immagine


2

su Linux ctrl + m dovrebbe funzionare ma non per risolvere il problema fare clic su (...) (i suoi controlli estesi) e quindi chiudere quella finestra. Ora puoi aprire il menu con ctrl + m. poi:

  1. clicca su (...) (i suoi controlli estesi)

  2. chiudi controlli estesi

  3. Ctrl + M


1

Potrebbe non essere una soluzione diretta, ma ho creato una libreria che ti consente di utilizzare il tocco di 3 dita invece di agitare per aprire il menu dev, quando in modalità di sviluppo

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

Devi solo avvolgere la tua app all'interno:

importare DevMenuOnTouch da "Rea-native-dev-menu-on-touch"; // oppure: importa {DevMenuOnTouch} da "Rea-native-dev-menu-on-touch"

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

È davvero utile quando devi eseguire il debug su un dispositivo reale e hai dei colleghi seduti accanto a te.


1

Stavo provando una versione di rilascio tramite adb install -r -d <app-release>.apk🤦

Assicurati di eseguire la build di debug , quindi il menu funzionerà tramite il collegamento o l'interfaccia della riga di comando.


-1

Per laptop Windows fn Tasto + Controllo + m

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.