Làm cách nào để tôi rung lắc một thiết bị Android trong trình giả lập Android để hiển thị menu dev để gỡ lỗi ứng dụng React Native của tôi


201

Tôi đang làm việc trên một ứng dụng di động React Native đa nền tảng. Tôi đang viết các câu lệnh console.log khi tôi phát triển. Tôi muốn xem các báo cáo ghi nhật ký này trong Chrome khi tôi đang chạy ứng dụng Android trong trình giả lập Android mặc định. Theo tài liệu của Facebook, tôi chỉ cần "lắc thiết bị". Làm cách nào để làm điều này trong trình giả lập Android?

Để truy cập menu nhà phát triển trong ứng dụng:

Trên iOS lắc thiết bị hoặc nhấn control + + z trong trình giả lập. Trên Android lắc thiết bị hoặc nhấn nút menu phần cứng (có sẵn trên các thiết bị cũ> và trong hầu hết các trình giả lập, ví dụ: trong genymotion, bạn có thể nhấn ⌘ + m để> mô phỏng nút menu phần cứng nhấp)

Câu trả lời:


220

Trong ứng dụng của bạn trong Trình giả lập Android, nhấn Command + MOSX hoặc Ctrl + Mtrên Linux và Windows.


2
Đáng buồn là F2 không còn hoạt động trên Linux trong Android Emulator 2 beta. Gì bây giờ?
Szczepan Hołyszewski 30/03/2016

7
@ SzczepanHołyszewski Tôi muốn thêm rằng, hiện tại trong linux, ctrl + m sẽ hiển thị menu nhà phát triển
Ozum Safa

<kbd> f1 </ kbd>, ... <kbd> f12 </ kbd> gây nhầm lẫn và khó bấm trong hầu hết các máy tính
ericn

223

Với Phản ứng Native chạy trong giả lập,
Press ctrl+ m(đối với Linux, tôi cho rằng đó là tương tự cho Windows và + mdành cho Mac OS X) hoặc chạy sau trong terminal:

adb shell input keyevent 82

2
Không làm việc cho tôi ngay lập tức. Tôi cần phải đi vào "cài đặt" ("...")> Cài đặt> Gửi phím tắt bàn phím đến> Điều khiển trình mô phỏng (không phải thiết bị ảo) sau đó nó hoạt động.
Ryan Knell

ctrl + m không hoạt động trên linux. Lệnh shell adb này hoạt động ngay cả khi tôi muốn dùng phím tắt .... đoán tôi có thể tạo một lệnh khởi chạy lệnh này nếu tôi không tìm thấy cách nào khác
Laurent

Để chỉ định một thiết bị làm adb -s <device id/serial> shell input keyevent 82. Tôi sử dụng điều này khi sử dụng cả trình giả lập và thiết bị vật lý.
viêm grisa

79

Nếu bạn đang sử dụng trình giả lập mới đi kèm với Android Studio 2.0, phím tắt cho phím menu bây giờ là Cmd + M, giống như trong Genymotion.

Ngoài ra, bạn luôn có thể gửi một nút menu nhấn bằng cách sử dụng adbtrong một thiết bị đầu cuối:

adb shell input keyevent KEYCODE_MENU

Cũng lưu ý rằng phím tắt nút menu không phải là một yêu cầu nghiêm ngặt, đó chỉ là hành vi mặc định được cung cấp bởi ReactActivitylớp Java (được sử dụng theo mặc định nếu bạn đã tạo dự án của mình react-native init). Đây là mã có liên quan từ onKeyUptrong ReactActivity.java:

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

Nếu bạn đang thêm React Native vào một ứng dụng hiện có ( tài liệu ở đây ) và bạn không sử dụng ReactActivity, bạn sẽ cần nối nút menu theo cách tương tự. Bạn cũng có thể gọi ReactInstanceManager.showDevOptionsDialogthông qua bất kỳ cơ chế khác. Ví dụ: trong một ứng dụng tôi đang làm việc, tôi đã thêm một mục menu Action Bar chỉ dành cho nhà phát triển, vì tôi thấy điều đó thuận tiện hơn là lắc thiết bị khi làm việc trên thiết bị vật lý.


cái này không hoạt động trên MIUI trên mi4i của tôi. nó chỉ đưa lên khay ứng dụng. Có giải pháp nào khác không? Tôi thực sự không muốn chạy nó trên một trình giả lập vì điều đó làm chậm máy tính xách tay của tôi
Shreyans

Dường như có những vấn đề khác cụ thể đối với miui. Sau khi cho phép thông báo, bây giờ tôi có thể lắc thiết bị để nhận menu. kiểm tra chủ đề này trong trường hợp bất kỳ ai khác gặp vấn đề với MIUI github.com/facebook/react-native/issues/2754
Shreyans

Tôi đã chỉnh sửa bài đăng của mình để thêm chi tiết về cách tất cả các công cụ này hoạt động, điều này có thể giúp bạn theo dõi vấn đề. Dự đoán tốt nhất của tôi là bạn không sử dụng ReactActivityvà không nối nút menu thông qua các phương tiện khác.
Alan Pierce

cảm ơn bạn đã phản hồi nhanh chóng :) mặc dù vấn đề là do trình quản lý quyền MIUI không cho phép hộp thoại trình đơn hiển thị.
Shreyans

1
Mẹo hay về ReactActivity. Có vẻ như mã đó hiện đã được chuyển sang ReactActivityDelegate.java
Ryan H.

20

'Ctrl + m' hoạt động cho Windows trong trình giả lập Android để hiển thị menu nhà phát triển React-Native.

Không thể tìm thấy tài liệu đó ở bất cứ đâu. Tìm thấy đường của tôi ở đây, đoán phần còn lại ... Thật đau buồn.

Nhân tiện: OP: Bạn đã không đề cập đến hệ điều hành của bạn.


14

Đối với Linux, bạn nhấp vào ba dấu chấm "..." bên cạnh trình giả lập, trên cảm biến ảo kiểm tra "Di chuyển" và sau đó thử di chuyển nhanh các tọa độ x, y hoặc z.

nhập mô tả hình ảnh ở đây


4
Trên thực tế, đó là giải pháp duy nhất làm việc cho tôi.
DsCpp

1
Bạn cũng có thể nhấp vào đồ họa thiết bị trong cửa sổ hiển thị và kéo nó xung quanh.
brithith 19/12/18


8

Tôi đang dùng Mac OS nên khi tôi nhấn Command, nó cho phép tùy chọn phóng to. Đây là giải pháp của tôi

  • Mở nút Cửa sổ cấu hình [...]
  • Chuyển đến Settingstab -> Generaltab -> Send keyboard shortcuts totrường
  • Thay đổi giá trị thành Virtual device"như trong hình

Sau đó tập trung vào trình giả lập và nhấn Command + M, menu dev xuất hiện.

Tùy chọn Trình mô phỏng -> Cài đặt -> Chung


4

Sử dụng command + m(cmd + M)trên MAC. Ngoài ra, make sure that you are accessing your application while you try to access the Debug Menuứng dụng của bạn phải được chạy nếu không Cmd + Msẽ chỉ trả về menu điện thoại thông thường.


4

Khi phát triển các ứng dụng gốc phản ứng, chúng tôi chơi với thiết bị đầu cuối rất nhiều

vì vậy tôi đã thêm một tập lệnh trong tập lệnh trong tập tin pack.json

"menu": "adb shell keyevent 82"

và tôi nhấn menu $ sợi

để menu xuất hiện trên trình giả lập, nó sẽ chuyển tiếp mã khóa 82 đến trình giả lập thông qua ADB không phải là cách tối ưu nhưng tôi thích nó và cảm thấy chia sẻ nó.

nhập mô tả hình ảnh ở đây


2

trên linux ctrl + m sẽ hoạt động nhưng không giải quyết được vấn đề, nhấp vào (...) (điều khiển mở rộng của nó) và sau đó đóng cửa sổ đó. Bây giờ bạn có thể mở menu bằng ctrl + m. sau đó:

  1. nhấp vào (...) (điều khiển mở rộng của nó)

  2. đóng điều khiển mở rộng

  3. ctrl + m


1

Nó có thể không phải là giải pháp trực tiếp, nhưng tôi đã tạo một lib cho phép bạn sử dụng 3 ngón tay chạm thay vì lắc để mở menu dev, khi ở chế độ phát triển

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

Bạn chỉ phải bọc ứng dụng của bạn bên trong:

nhập DevMothyOnTouch từ 'Reac -igen-dev-menu-on-touch'; // hoặc: nhập {DevMothyOnTouch} từ 'Reac -igen-dev-menu-on-touch'

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

Nó thực sự hữu ích khi bạn phải gỡ lỗi trên thiết bị thực và bạn có đồng nghiệp ngồi cạnh bạn.


1

Tôi đã cố gắng trên một phiên bản build qua adb install -r -d <app-release>.apk🤦

Đảm bảo bạn đang chạy bản dựng gỡ lỗi , sau đó menu sẽ hoạt động thông qua phím tắt hoặc CLI.


-1

Đối với máy tính xách tay windows fn Key + Control + m

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.