Tìm kiếm

Thiết bị

MEmu ADB connect: cổng 21503 và cách kết nối với MAS

Kết nối MEmu Play với Macro Automation Studio qua ADB trên cổng 21503, thêm nó làm thiết bị, sửa lỗi offline, và chạy macro MAS thay cho trình ghi macro.

  • Windows
  • Giả lập
  • Studio
  • Python SDK
Cơ bản Cập nhật 7 phút đọc
Trong trang này
  1. Trước khi bắt đầu
  2. 1. Cài MEmu
  3. 2. Đặt độ phân giải cố định
  4. 3. Bật ADB trong MEmu
  5. 4. Cổng ADB của MEmu và cách MAS quét nó
  6. 5. MEmu ADB connect trong MAS
  7. Macro trên MEmu
  8. Nhiều instance MEmu
  9. Khắc phục sự cố
  10. MEmu ADB connect
  11. MEmu ADB device offline
  12. Trình ghi macro của MEmu so với MAS
  13. Điều khiển bằng Python

Hướng dẫn này chỉ cách kết nối MEmu Play với Macro Automation Studio (MAS) qua ADB, tức bước MEmu ADB connect, và cách macro MAS khác với trình ghi macro của MEmu. MEmu chỉ có trên Windows, nên mọi bước MEmu ADB connect bên dưới đều là bước trên Windows.

Trước khi bắt đầu

  • MAS đã cài và đăng nhập trên Windows 10 hoặc 11. MAS tải miễn phí để dùng thử; lấy từ trang tải.
  • MEmu đã cài từ memuplay.com và đã khởi động một lần.
  • Instance đã khởi động xong tới màn hình chính Android.
  • Đã bật ảo hóa trong BIOS để instance ổn định.

1. Cài MEmu

  1. Tải MEmu từ trang của nhà cung cấp và chạy bộ cài.
  2. Khởi động MEmu và chờ màn hình chính.
  3. Đă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. Mở cài đặt MEmu, chọn một độ phân giải cố định, và giữ nguyên. Macro viết theo chuẩn cơ sở của MAS mong đợi 540x960 ở chế độ dọc và 240 DPI; macro bạn tự viết mong đợi độ phân giải bạn đã chụp trong Asset Lab. Khởi động lại instance nếu MEmu yêu cầu.

3. Bật ADB trong MEmu

Tài liệu chính thức của MEmu không cho thấy công tắc ADB nào. Một instance đang chạy chuyển tiếp cổng adb Android của nó ra máy chủ dưới dạng 127.0.0.1:21503, đúng địa chỉ mà hướng dẫn dòng lệnh của MEmu dùng. Nếu bản MEmu của bạn có tùy chọn ADB hoặc nhà phát triển trong Cài đặt, hãy để nó bật. Khởi động instance và chờ màn hình chính trước khi tiếp tục.

4. Cổng ADB của MEmu và cách MAS quét nó

Instance mặc định của MEmu nghe trên 21503. 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ữ các cổng khớp những quy tắc sau:

  • Tên tiến trình chứa memuheadless hoặc memuhyper.
  • Cổng từ 21503 trở lên, kết thúc bằng 3, và nhỏ hơn 30000. Các cổng như 21513 và 21523 vì thế cũng khớp.
  • Socket nghe trên 127.0.0.1.

Các cổng khớp xuất hiện trong hộp thoại Thêm thiết bị với nhãn MEmu, ví dụ 21503 - MEmu. Lần quét chạy 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. MEmu ADB connect 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 MEmu của instance này. Nhấn Làm mới nếu danh sách trống.
  5. Nếu MEmu dùng một cổng 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 của nó, gỡ mọi mục cũ của 127.0.0.1:<port>, và chạy adb connect tới nó.

Macro trên MEmu

Trình ghi macro của MEmu ghi lại cú chạm và vuốt ở tọa độ cố định rồi phát lại, tùy chọn lặp. Nó 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à thao tác chỉ hoạt động bên trong MEmu.

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 MEmu, trên các giả lập khác và trên thiết bị cloud mà không cần sửa, vì MAS điều khiển thiết bị qua adb.

Nhiều instance MEmu

Mỗi instance từ trình quản lý đa nhiệm của MEmu nghe trên cổng riêng. 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. Xem Nhóm thiết bị về tham số và proxy cho từng thiết bị.

Khắc phục sự cố

MEmu ADB connect

Thẻ thiết bị hiển thị Lỗi hoặc “Failed to start device”, hoặc MAS không liệt kê mục MEmu nào. Lần lượt xét các nguyên nhân sau:

  • Instance vẫn đang khởi động. Chờ màn hình chính, rồi nhấn Làm mới và bắt đầu lại.
  • Cổng không khớp quy tắc quét, nên MAS bỏ qua. Dùng Cổng tùy chỉnh với số mà MEmu dùng.
  • Cổng thuộc về một instance khác. Sửa bằng Sửa thiết bị trên thẻ.
  • 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.
  • adb in “connection refused” hoặc “cannot connect” trong nhật ký thiết bị. Không có gì nghe trên cổng đó; khởi động lại instance và kiểm tra lại số.

MEmu ADB device offline

adb đánh dấu thiết bị offline khi daemon adb bên trong instance ngừng trả lời, thường sau khi máy ngủ, cập nhật hoặc có máy chủ adb thứ hai trên máy. Nhấn Dừng trên thẻ, khởi động lại instance MEmu, đóng mọi công cụ khác chạy máy chủ adb riêng, và nhấn Bắt đầu. MAS ngắt mục cũ và kết nối lại ở mỗi lần bắt đầu. Nếu vẫn offline, khởi động lại MAS để máy chủ adb của nó khởi động sạch.

Trình ghi macro của MEmu so với MAS

Một thao tác ghi trong MEmu không nhập được vào MAS, vì MAS chỉ chạy macro Python. Hãy tạo lại: chụp các nút thành ảnh mẫu trong Asset Lab, nhấn chúng bằng find_object_retry, và lặp với điều kiện dừng. Kết quả sống sót qua popup, tải chậm và thay đổi bố cục vốn làm hỏng chuỗi đã ghi, và nó chạy trên mọi thiết bị MAS điều khiển. Nếu một macro MAS bị đứng, mở Nhật ký trên thẻ thiết bị: ImageNotFoundErrorTimeoutError nêu tên bước thất bại.

Đ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. Cổng do MAS chọn, nên mã không bao giờ tham chiếu tới nó.

python
import mas

size = mas.get_screen_size()
mas.log(f"MEmu 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