Tìm kiếm

Thiết bị

MuMu Player ADB port: tìm cổng và kết nối với MAS

Tìm cổng ADB của MuMu Player 12, kết nối Macro Automation Studio với nó, thêm từng instance làm thiết bị, và chạy macro MAS thay cho trình ghi thao tác.

  • Windows
  • Mac
  • Giả lập
  • Studio
  • Python SDK
Cơ bản Cập nhật 9 phút đọc
Trong trang này
  1. Trước khi bắt đầu
  2. 1. Cài MuMu Player 12
  3. 2. Đặt độ phân giải cố định
  4. 3. Bật ADB trong MuMu Player 12
  5. 4. MuMu Player ADB port và cách MAS quét nó
  6. 5. Kết nối MuMu Player qua ADB trong MAS
  7. Macro trên MuMu Player
  8. Nhiều instance MuMu
  9. MuMu Player trên Mac
  10. Khắc phục sự cố
  11. MuMu ADB port
  12. MuMu ADB connect thất bại
  13. Macro loop trên MuMu
  14. Điều khiển bằng Python

Hướng dẫn này chỉ cách tìm MuMu Player ADB port của MuMu Player 12 và kết nối instance với Macro Automation Studio (MAS), đồng thời giải thích macro MAS khác gì với Operation Recording của MuMu. Các bước nhắm vào Windows; một phần ngắn nói về bản Mac và MuMu Player ADB port ở đó.

Trước khi bắt đầu

  • MAS đã cài và đăng nhập trên Windows 10 hoặc 11, hoặc trên Mac Apple Silicon. MAS tải miễn phí để dùng thử; lấy từ trang tải.
  • MuMu Player 12 đã cài từ mumuplayer.com và đã khởi động một lần.
  • Instance đã khởi động xong tới màn hình chính Android.
  • Các ứng dụng bạn muốn tự động hóa đã cài và đăng nhập bên trong MuMu Player.

1. Cài MuMu Player 12

  1. Tải MuMu Player 12 từ trang của nhà cung cấp và chạy bộ cài.
  2. Khởi động MuMu Player và chờ màn hình chính.
  3. Cài và đăng nhập các ứng dụng bạn muốn tự động hóa trước khi thêm thiết bị vào MAS.

2. Đặt độ phân giải cố định

MAS so khớp ảnh mẫu từng pixel, nên hãy chọn độ phân giải một lần và giữ nguyên.

  1. Nhấn Cài đặt ở góc trên bên phải cửa sổ MuMu Player.
  2. Mở Màn hình và chọn độ phân giải tùy chỉnh.
  3. Nhập chiều rộng 540, chiều cao 960 và DPI 240. Đây là chuẩn cơ sở của MAS; macro bạn tự viết mong đợi độ phân giải bạn đã chụp trong Asset Lab.
  4. Lưu và khởi động lại instance khi MuMu Player yêu cầu.

3. Bật ADB trong MuMu Player 12

Hướng dẫn ADB của nhà cung cấp không cho thấy công tắc nào cho MuMu Player 12. Một instance đang chạy trả lời adb trên cổng của nó mà không cần cài đặt gì, nên thứ bạn cần là số cổng:

  • Với một instance, mở menu ở góc trên bên phải cửa sổ và chọn Chẩn đoán sự cố. Cổng ADB debugging được liệt kê ở đó.
  • Với nhiều instance, mở MuMuPlayer Multi-instance 12 và nhấn biểu tượng ADB trên một instance đang chạy để hiện cổng của nó.

4. MuMu Player ADB port và cách MAS quét nó

MuMu Player 12 cho instance chính cổng 16384 và mỗi instance thêm cộng 32: 16416, 16448, và tiếp tục. Khi một cổng đã bị chiếm, MuMu cộng 1, nên 16385 có thể xuất hiện. MAS không dùng adb devices để phát hiện giả lập. Nó quét các tiến trình đang chạy và giữ một cổng khi tất cả điều sau đúng:

  • Tên tiến trình chứa nemuheadless hoặc mumu.
  • Cổng nằm giữa 16384 và 16576, giữa 26624 và 27264, đúng bằng 7555, hoặc là cổng lẻ giữa 5555 và 5599.
  • Socket nghe trên 127.0.0.1, 0.0.0.0 hoặc mọi giao diện.

Dải 16384 đến 16576 bao instance chính và sáu instance tiếp theo; 7555 và dải 5555 đến từ các phiên bản MuMu cũ hơn. Các cổng khớp xuất hiện trong hộp thoại Thêm thiết bị mới với nhãn MuMu, ví dụ 16384 - MuMu. MAS quét khi bạn mở một nhóm thiết bị và mỗi lần bạn nhấn Làm mới.

5. Kết nối MuMu Player qua ADB trong MAS

  1. Mở Nhóm thiết bị ở thanh bên và mở một nhóm, hoặc tạo nhóm mới.
  2. Nhấn Thêm thiết bị.
  3. Tên thiết bị tối đa 50 ký tự.
  4. Trong Cổng, chọn mục MuMu của instance này. Nhấn Làm mới nếu danh sách trống.
  5. Nếu cổng hiển thị trong Chẩn đoán sự cố không khớp quy tắc trên, chọn Cổng tùy chỉnh và gõ vào. MAS chấp nhận 1024 đến 65535.
  6. Tùy chọn, chọn một Macro khởi động.
  7. Nhấn Thêm thiết bị, rồi nhấn Bắt đầu trên thẻ thiết bị.

Thẻ hiển thị Đang kết nối rồi Đang chạy. MAS khởi động máy chủ adb riêng, gỡ mọi mục cũ của 127.0.0.1:<port>, và chạy adb connect tới nó.

Macro trên MuMu Player

Operation Recording của MuMu ghi lại cú chạm và phát lại từ tệp, với ba điều kiện dừng (Execute x times to stop, Execute xx time to stopInfinite loop to manual stop) và một Cycle interval. Nhà cung cấp cảnh báo rằng độ phân giải lúc phát lại phải khớp lúc ghi. Tệp phát lại tọa độ cố định mà không nhìn màn hình, nên một lần tải chậm, một popup hay một nút đã dời chỗ làm hỏng chuỗi thao tác, và nó chỉ chạy bên trong MuMu Player.

Macro MAS là một đoạn mã Python kiểm tra màn hình trước khi hành động: nó tìm nút bằng so khớp mẫu, đọc chữ bằng OCR, chờ bằng các lần thử lại, và rẽ nhánh theo những gì nó thấy. Cùng đoạn mã chạy trên MuMu Player, các giả lập khác và thiết bị cloud mà không cần sửa, vì MAS điều khiển mọi thiết bị qua adb.

Nhiều instance MuMu

Mở MuMuPlayer Multi-instance 12 từ biểu tượng hộp công cụ ở góc trên bên phải. +Tạo mới tạo một instance và Cài đặt thiết bị đặt hiệu năng và màn hình của nó, nên hãy cho mọi instance cùng độ phân giải. Mỗi instance nghe trên cổng riêng, cao hơn cổng trước 32. Thêm từng cái làm thiết bị riêng trong cùng nhóm thiết bị, gán macro và hồ sơ cài đặt cho từng thiết bị, và dùng Bắt đầu tất cảDừng tất cả trên nhóm. Từ instance thứ tám trở đi, cổng vượt quá 16576 và MAS không liệt kê nữa; thêm nó bằng Cổng tùy chỉnh. Xem Nhóm thiết bị về tham số và proxy cho từng thiết bị.

MuMu Player trên Mac

MuMu cũng có bản cho Mac Apple Silicon. Ở đó hướng dẫn của nhà cung cấp đặt ADB trong thanh menu: với một thiết bị đang chạy, mở Tools và chọn Open ADB (device port number). Mục này hiển thị cổng; mặc định vẫn là 16384. Nếu lần quét trong MAS không liệt kê nó, thêm bằng Cổng tùy chỉnh.

MAS trên Mac cần một tệp nhị phân adb: nó tìm trong gói ứng dụng, rồi trên PATH, rồi trong các thư mục Homebrew. Nếu MAS báo “ADB executable not found. Please install ADB using your package manager”, cài adb bằng Homebrew và khởi động lại MAS:

bash
brew install android-platform-tools

MAS luôn quay số 127.0.0.1, nên MuMu Player phải chạy trên cùng Mac.

Khắc phục sự cố

MuMu ADB port

MAS không liệt kê mục MuMu nào, hoặc mục nó liệt kê thuộc về một instance khác.

  • Đọc cổng từ Chẩn đoán sự cố hoặc từ biểu tượng ADB trong MuMuPlayer Multi-instance 12 và so với thẻ thiết bị; sửa bằng Sửa thiết bị.
  • Đếm từ 16384 theo bước 32 cho mỗi instance, cộng thêm 1 khi một cổng đã bị chiếm (16385 thay vì 16384).
  • Instance vẫn đang khởi động, nên cổng chưa mở. Chờ màn hình chính và nhấn Làm mới.
  • Cổng lớn hơn 16576 hoặc nằm ngoài quy tắc quét. Chọn Cổng tùy chỉnh và gõ vào.

MuMu ADB connect thất bại

Thẻ thiết bị hiển thị Lỗi với “Failed to start device”, nhật ký ghi “unable to connect to device”, hoặc adb in “cannot connect” hay “connection refused”.

  • Không có gì nghe trên cổng đó. Kiểm tra số như trên và xác nhận instance đang chạy.
  • Một máy chủ adb thứ hai giữ mục cũ. Đóng các công cụ khác chạy máy chủ adb riêng, nhấn Dừng, khởi động lại instance, và nhấn Bắt đầu; MAS kết nối lại từ đầu.
  • adb devices hiển thị cổng là offline. Khởi động lại instance; nếu vẫn offline, khởi động lại MAS để máy chủ adb của nó khởi động sạch.
  • Lần quét báo “Failed to scan emulator ports”. Khởi động lại MAS và mở lại hộp thoại.

Để xem câu trả lời thô của adb, chạy adb connect 127.0.0.1:16384 trong terminal. Thêm cách sửa ở Khắc phục sự cố ADB.

Macro loop trên MuMu

Một bản ghi đặt Infinite loop to manual stop không biết vòng lặp có nên tiếp tục hay không, nên nó cứ chạm tiếp sau khi đã đạt mục tiêu hoặc khi popup xuất hiện. Macro MAS lặp trong Python với điều kiện dừng: một ảnh mẫu xuất hiện, một con số đọc bằng OCR, hoặc số lượt đã chạy. Vòng lặp, điều kiện dừng và lập lịch chỉ các mẫu. Nếu một vòng lặp MAS bị đứng, mở Nhật ký trên thẻ thiết bị: ImageNotFoundErrorTimeoutError nêu tên bước thất bại, và nguyên nhân thường gặp là độ phân giải không còn khớp ảnh mẫu.

Điều khiển bằng Python

Khi thẻ ở Đang chạy, src/app.py của macro điều khiển instance qua gói mas. MAS chọn cổng, nên mã không bao giờ tham chiếu tới nó.

python
import mas

size = mas.get_screen_size()
mas.log(f"MuMu screen is {size.width}x{size.height}")

match = mas.find_object_retry(1234, total_tries=3, time_sleep=2.0)
if match:
    mas.click(match.x, match.y)

Đọc Tổng quan SDK về mọi namespace, và Điều khiển giả lập Android từ Python để có đoạn mã đầu tiên hoàn chỉnh.

Bước tiếp theo

Trang liên quan

Trang này có hữu ích không?

Có câu hỏi? Hỏi trên Discord