Bagaimana cara "mengguncang" perangkat Android dalam emulator Android untuk membuka menu dev untuk men-debug aplikasi React Native saya


201

Saya sedang mengerjakan aplikasi seluler React Native lintas platform. Saya menulis pernyataan console.log saat saya berkembang. Saya ingin melihat pernyataan masuk ini di Chrome saat saya menjalankan aplikasi Android di emulator Android default. Menurut dokumen Facebook saya hanya perlu "mengguncang perangkat". Bagaimana saya melakukan ini di emulator Android?

Untuk mengakses menu pengembang dalam aplikasi:

Di iOS, guncangkan perangkat atau tekan control + ⌘ + z dalam simulator. Pada Android guncangkan perangkat atau tekan tombol menu perangkat keras (tersedia pada perangkat> yang lebih tua dan di sebagian besar emulator, misalnya dalam genymotion Anda dapat menekan ⌘ + m untuk> mensimulasikan klik tombol menu perangkat keras)

Jawaban:


220

Di dalam aplikasi Anda di Android Emulator, tekan Command + Mpada OSX atau Ctrl + Mdi Linux dan Windows.


2
Sayangnya F2 tidak lagi berfungsi di Linux di Android Emulator 2 beta. Apa sekarang?
Szczepan Hołyszewski

7
@ SzczepanHołyszewski Saya ingin menambahkan bahwa, saat ini di linux, ctrl + m menampilkan menu pengembang
Ozum Safa

<kbd> f1 </kbd>, ... <kbd> f12 </kbd> membingungkan dan sulit untuk ditekan di sebagian besar komputer
ericn

223

Dengan React Native yang berjalan di emulator,
Tekan ctrl+ m(untuk Linux, saya kira itu sama untuk Windows dan + muntuk Mac OS X) atau jalankan yang berikut di terminal:

adb shell input keyevent 82

2
Tidak segera bekerja untuk saya. Saya harus masuk ke "pengaturan" ("...")> Pengaturan> Kirim Keyboard Shorcuts ke> Kontrol Emulator (bukan perangkat virtual) kemudian bekerja.
Ryan Knell

ctrl + m tidak berfungsi di linux. Perintah shell adb ini berfungsi bahkan jika saya lebih suka jalan pintas .... kira saya bisa membuat yang meluncurkan perintah ini jika saya tidak menemukan cara lain
Laurent

Untuk menentukan perangkat lakukan adb -s <device id/serial> shell input keyevent 82. Saya menggunakan ini saat menggunakan emulator dan perangkat fisik.
grisaitis

79

Jika Anda menggunakan emulator baru yang datang dengan Android Studio 2.0, pintasan keyboard untuk tombol menu sekarang Cmd + M, sama seperti di Genymotion.

Atau, Anda selalu dapat mengirim tombol menu tekan menggunakan adbdi terminal:

adb shell input keyevent KEYCODE_MENU

Perhatikan juga bahwa cara pintas tombol menu bukan persyaratan yang ketat, itu hanya perilaku default yang disediakan oleh ReactActivitykelas Java (yang digunakan secara default jika Anda membuat proyek Anda dengan react-native init). Berikut kode yang relevan dari onKeyUpdalam ReactActivity.java:

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

Jika Anda menambahkan Bereaksi Asli ke aplikasi yang ada ( dokumentasi di sini ) dan Anda tidak menggunakannya ReactActivity, Anda harus menghubungkan tombol menu dengan cara yang sama. Anda juga dapat menelepon ReactInstanceManager.showDevOptionsDialogmelalui mekanisme lain. Misalnya, dalam aplikasi yang sedang saya kerjakan, saya menambahkan item menu Action Bar khusus dev yang memunculkan menu, karena saya merasa lebih nyaman daripada mengguncang perangkat saat bekerja pada perangkat fisik.


ini tidak bekerja pada MIUI di mi4i saya. itu hanya memunculkan baki aplikasi. apakah ada solusi lain? saya benar-benar tidak ingin menjalankannya pada emulator karena itu memperlambat kotoran laptop saya
Shreyans

sepertinya ada masalah lain khusus untuk miui. setelah mengaktifkan izin notifikasi saya sekarang dapat mengguncang perangkat untuk mendapatkan menu. periksa utas ini jika ada orang lain yang mengalami masalah dengan MIUI github.com/facebook/react-native/issues/2754
Shreyans

Saya mengedit posting saya untuk menambahkan detail lebih lanjut tentang bagaimana semua ini berfungsi, yang dapat membantu Anda melacak masalahnya. Tebakan terbaik saya adalah Anda tidak menggunakan ReactActivitydan belum menghubungkan tombol menu melalui cara lain.
Alan Pierce

terima kasih atas tanggapan cepat Anda :) meskipun masalahnya dengan manajer izin MIUI yang tidak membiarkan dialog menu ditampilkan.
Shreyans

1
Tip yang bagus tentang ReactActivity. Sepertinya kode itu sekarang telah dipindahkan ke ReactActivityDelegate.java
Ryan H.

20

'Ctrl + m' berfungsi untuk Windows di emulator Android untuk memunculkan menu pengembang React-Native.

Tidak dapat menemukan yang didokumentasikan di mana pun. Menemukan jalan saya di sini, menebak sisanya ... Astaga.

Omong-omong: OP: Anda tidak menyebutkan OS apa yang Anda pakai.


14

Untuk Linux Anda klik pada tiga titik "..." di sebelah emulator, pada sensor Virtual centang "Pindahkan" dan kemudian coba cepat-cepat memindahkan koordinat x, y atau z.

masukkan deskripsi gambar di sini


4
Sebenarnya, itulah satu-satunya solusi yang bekerja untuk saya.
DsCpp

1
Anda juga dapat mengklik grafik perangkat di jendela yang ditampilkan dan menyeretnya.
brismith


8

Saya menggunakan Mac OS jadi ketika saya menekan Command, itu memungkinkan opsi pembesaran. Ini solusinya

  • Buka jendela Konfigurasi tombol [...]
  • Buka Settingstab -> Generaltab -> Send keyboard shortcuts tobidang
  • Ubah nilai menjadi Virtual device"seperti yang ditunjukkan pada gambar

Setelah itu fokus pada emulator dan tekan Command + M, menu dev muncul.

Opsi Emulator -> Pengaturan -> Umum


4

Gunakan command + m(cmd + M)di MAC. Selain itu, make sure that you are accessing your application while you try to access the Debug Menuaplikasi Anda harus berjalan jika tidak, Cmd + Mhanya akan mengembalikan menu telepon biasa.


4

Saat mengembangkan aplikasi asli bereaksi, kami bermain dengan terminal begitu banyak

jadi saya menambahkan skrip dalam skrip dalam file package.json

"menu": "adb shell input keyevent 82"

dan saya menekan menu $ yarn

untuk menu yang muncul di emulator itu akan meneruskan kode kunci 82 ke emulator melalui ADB bukan cara yang optimal tapi saya suka dan merasa untuk membagikannya.

masukkan deskripsi gambar di sini


2

di linux ctrl + m harus berfungsi tetapi tidak untuk menyelesaikan masalah, klik pada (...) (kontrolnya diperluas) dan kemudian tutup window itu. sekarang Anda dapat membuka menu dengan ctrl + m. kemudian:

  1. klik pada (...) (kontrolnya diperluas)

  2. tutup kontrol yang diperluas

  3. ctrl + m


1

Ini mungkin bukan solusi langsung, tetapi saya telah membuat lib yang memungkinkan Anda untuk menggunakan 3 jari sentuh daripada goyang untuk membuka menu dev, ketika dalam mode pengembangan

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

Anda hanya perlu membungkus aplikasi Anda di dalam:

impor DevMenuOnTouch dari 'react-native-dev-menu-on-touch'; // atau: impor {DevMenuOnTouch} dari 'react-native-dev-menu-on-touch'

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

Ini sangat berguna ketika Anda harus men-debug pada perangkat nyata dan Anda memiliki rekan kerja yang duduk di sebelah Anda.


1

Saya mencoba membangun rilis via adb install -r -d <app-release>.apk🤦

Pastikan Anda menjalankan debug build, maka menu akan bekerja melalui pintasan atau CLI.


-1

Untuk windows laptop fn Key + Control + m

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.