# Chạy nhiều giả lập Android cùng lúc với nhóm thiết bị MAS

> Gom nhiều giả lập Android và thiết bị cloud vào nhóm thiết bị trong Macro Automation Studio, gán macro, tham số và proxy cho từng cái, rồi bắt đầu tất cả.

Source: https://automationmacro.com/vi/docs/device-groups (Thiết bị, updated 2026-09-05)

Nhóm thiết bị là đơn vị Macro Automation Studio (MAS) dùng để chạy nhiều giả lập Android cùng lúc, hoặc một tập thiết bị cloud, với cùng một cú nhấn. Khi bạn chạy nhiều giả lập Android cùng lúc, mỗi thiết bị trong nhóm có macro, tham số, proxy và webhook riêng, và nhóm có **Bắt đầu tất cả** và **Dừng tất cả**. Trang này nói về hai loại nhóm, cấu hình từng thiết bị, chạy hàng loạt, nhật ký và lập lịch.

## Trước khi bắt đầu

- MAS đã cài và bạn đã đăng nhập với bản dùng thử hoặc gói đang hoạt động.
- Với nhóm local: một hoặc nhiều instance giả lập đang chạy với ADB đã bật. Xem [Thiết bị](/docs/devices) về quy tắc cổng.
- Với nhóm cloud: ít nhất một thiết bị cloud đã tạo trên trang **Thiết bị cloud**. Xem [Thiết bị cloud](/docs/cloud-devices). [Trang thiết bị cloud](/cloud-devices) giải thích phần bổ sung gồm những gì.

## Chạy nhiều giả lập Android cùng lúc: hai loại nhóm

Một nhóm chứa một loại thiết bị, chọn khi tạo và cố định sau đó:

| Loại | Tùy chọn Loại | Chứa gì | Macro chạy ở đâu |
|---|---|---|---|
| Local (`byod`) | **Local** | Giả lập trên máy tính này, và điện thoại của bạn qua adb | Trên máy tính này, điều khiển thiết bị qua adb |
| Cloud | **Cloud** | Thiết bị cloud MAS chạy cho bạn | Trên máy chủ MAS, nên ứng dụng có thể đóng |

Thiết bị cloud chỉ vào được nhóm cloud, và giả lập chỉ vào được nhóm local. Trộn lẫn bị từ chối với "a cloud device can only be added to a cloud group".

## Tạo nhóm

1. Mở **Nhóm thiết bị** ở thanh bên và nhấn **Tạo nhóm mới**.
2. Nhập **Tên** từ 3 đến 255 ký tự và **Mô tả** tùy chọn.
3. Chọn **Loại**: **Local** hoặc **Cloud**.
4. Nhấn **Tạo nhóm**.

Danh sách nhóm hiển thị mọi nhóm kèm số thiết bị và số thiết bị đang chạy theo thời gian thực. Dùng chế độ lưới hoặc bảng, sắp xếp theo tên, tuổi hoặc số thiết bị, và tìm theo tên. **Sửa** đổi tên và mô tả; loại không đổi được.

## Thêm thiết bị

<div class="doc-tabs" data-tabs="kind">
<section data-tab="Nhóm local">

1. Mở nhóm và nhấn **Thêm thiết bị**.
2. Nhập **Tên thiết bị**.
3. Chọn cổng của giả lập trong **Cổng**. Nhấn **Làm mới** để quét lại, hoặc chọn **Cổng tùy chỉnh** và gõ vào.
4. Tùy chọn, chọn một **Macro khởi động**.
5. Nhấn **Thêm thiết bị**.

</section>
<section data-tab="Nhóm cloud">

1. Mở nhóm và nhấn **Thêm thiết bị cloud**.
2. Chọn một thiết bị trong danh sách. Thiết bị đã ở trong nhóm này bị ẩn.
3. Nhấn **Thêm**.

Thiết bị cloud được tạo trên trang **Thiết bị cloud**, không phải ở đây. Nếu danh sách trống, hộp thoại dẫn bạn tới đó.

</section>
</div>

### BlueStacks, LDPlayer và các giả lập Android đa nhiệm khác

Mỗi instance giả lập nghe trên cổng adb riêng, và MAS coi mỗi cổng là một thiết bị riêng. Ba cửa sổ BlueStacks hoặc ba instance LDPlayer vì thế thành ba thiết bị trong nhóm, mỗi cái có macro và tham số riêng. Các hướng dẫn [BlueStacks](/docs/bluestacks-setup-guide), [LDPlayer](/docs/ldplayer-setup-guide), [MuMu Player](/docs/mumu-setup-guide) và [MEmu](/docs/memu-setup-guide) chỉ cổng của từng instance nằm ở đâu, và [hướng dẫn đa nhiệm](/docs/guides/multi-instance) đi qua cả một dàn máy hoàn chỉnh.

> [!TIP]
> Đặt tên thiết bị trùng với tên instance giả lập. Nhật ký, lịch sử chạy và payload webhook đều mang tên thiết bị, nên "LD-3" dễ lần theo hơn "Device 7".

## Cấu hình từng thiết bị

Mọi thẻ thiết bị có cùng các điều khiển:

- **Macro**: chọn macro thiết bị này chạy. Thiết bị không có macro bị **Bắt đầu tất cả** bỏ qua.
- **Cài đặt macro**: mở biểu mẫu tham số của macro cho thiết bị này. Thanh **Hồ sơ** ở trên cùng quyết định giá trị nằm ở đâu: một [hồ sơ cài đặt](/docs/settings-profiles) có tên được chia sẻ bởi mọi thiết bị đi theo nó, hoặc **Tùy chỉnh (chỉ thiết bị này)**. Lưu hồ sơ cập nhật mọi thiết bị dùng nó, và thanh cho biết bao nhiêu. Mọi macro có hồ sơ **Default** không xóa được. **Mới** lưu giá trị hiện tại thành hồ sơ mới.
- **Số lần chạy**: macro lặp bao nhiêu lần trên thiết bị này.
- **Cài đặt nâng cao**: ô chọn **Proxy**, dòng **Thông báo** cho biết bao nhiêu webhook được báo về thiết bị này kèm liên kết **Quản lý**, và **Dữ liệu proxy hôm nay**.
- **Sửa thiết bị** đổi tên và cổng; nút thùng rác gỡ thiết bị khỏi nhóm.

Nhấn **Lưu thay đổi** sau khi sửa macro hoặc số lần chạy. Lựa chọn proxy và hồ sơ tự lưu.

### Proxy cho từng thiết bị

Chọn proxy trong ô thả xuống **Proxy**; **Không proxy** xóa nó. Một proxy cho mỗi thiết bị, cố định theo mặc định để mỗi thiết bị giữ IP riêng. Trên giả lập, proxy áp dụng trong suốt mỗi lần chạy; trên thiết bị cloud, áp dụng ở lần khởi động tiếp theo. Chi tiết, giới hạn và IP đầu ra trong webhook nằm ở trang [Proxy](/docs/proxies).

### Webhook cho từng thiết bị

Điểm cuối webhook được giới hạn phạm vi trên trang **Webhook** cho mọi thiết bị, cho các nhóm đã chọn, hoặc cho các thiết bị đã chọn. Thẻ thiết bị chỉ báo bao nhiêu điểm cuối bao phủ thiết bị này; đổi phạm vi trên trang Webhook. Sự kiện chạy mang `device_id`, `device_name`, `device_port` và `group_id`, nên một điểm cuối phân biệt được các thiết bị. Xem [Webhook](/docs/webhooks).

## Bắt đầu và dừng

**Bắt đầu** trên một thẻ chạy riêng thiết bị đó. Với thiết bị local, MAS kết nối qua adb và khởi chạy macro; với thiết bị cloud, nó bắt đầu một lần chạy phía máy chủ.

**Bắt đầu tất cả** chạy cả nhóm:

- Thiết bị bắt đầu lần lượt, cách nhau nửa giây, theo thứ tự danh sách.
- Thiết bị không được gán macro bị bỏ qua và tính là thất bại; các thiết bị khác vẫn bắt đầu.
- Kết quả là một con số, ví dụ 9 thành công và 1 thất bại, kèm tối đa 5 thông báo lỗi trong thông báo nổi. Hộp thoại **Đang bắt đầu tất cả thiết bị** hiển thị tiến độ và nhật ký thao tác.
- Trong nhóm cloud, **Bắt đầu tất cả** khởi chạy lần lượt một lần chạy phía máy chủ cho mỗi thiết bị. Giới hạn thiết bị đang chạy của gói vẫn áp dụng, nên thiết bị không bắt đầu được sẽ báo trong thông báo riêng.

**Dừng tất cả** kết thúc mọi lần chạy trong nhóm theo cùng cách. Dừng một lần chạy cloud để thiết bị cloud vẫn bật.

Mỗi thẻ hiển thị trạng thái: **Đã dừng**, **Đang kết nối**, **Đang tải xuống**, **Đang khởi động**, **Đang chạy**, **Đang dừng** hoặc **Lỗi**. Tiêu đề nhóm tổng hợp thành số đang chạy, rảnh và lỗi.

## Nhật ký từng thiết bị

Mọi thẻ có tab **Bảng điều khiển**, hiển thị giao diện lúc chạy của macro khi có, và tab **Nhật ký** với đầu ra riêng của thiết bị:

- Lọc theo **Tất cả**, **Người dùng**, **Exec**, **Lỗi** hoặc **Cảnh báo**. Dòng Người dùng là đầu ra `print` và `mas.log` của chính mã bạn; dòng Exec đến từ trình chạy.
- **Tìm nhật ký** lọc theo chữ, **Theo dõi** giữ dòng mới nhất trong tầm nhìn, và **Thời gian** bật tắt dấu thời gian.
- **Lưu** ghi nhật ký ra tệp; **Xóa** làm trống khung.

Sự kiện proxy và webhook xuất hiện trong cùng khung, ví dụ "Proxy connected via office, traffic routed through 203.0.113.9". Khung của thiết bị cloud hiển thị phần cuối đầu ra của lần chạy phía máy chủ. Các lần chạy đã xong, kèm mã thoát và thời lượng, được liệt kê trong **Lần chạy**.

## Lập lịch cho nhóm

[Bộ lập lịch](/docs/scheduler) chạy một macro trên một cổng vào thời điểm bạn chọn từ các thiết bị của mình. Để lập lịch cả nhóm, tạo một công việc cho mỗi thiết bị với cùng thời gian và chu kỳ. Các lần chạy theo lịch trên thiết bị thuộc một nhóm mang id của nhóm đó, nên webhook giới hạn theo nhóm cũng kích hoạt cho chúng.

## Route nhóm và thiết bị cho khóa API

Một [khóa API](/docs/api-keys) đọc được nhóm và thiết bị của bạn: `GET /api/emulator/groups` và `GET /api/emulator/devices`. Cả hai chỉ trả về những gì chủ khóa sở hữu, và các hàng thiết bị gồm cổng, macro, nhóm và hồ sơ cài đặt. Tạo, sửa và xóa nhóm hoặc thiết bị, và bắt đầu hay dừng chúng, cần đăng nhập của chính ứng dụng. Xem [REST API](/docs/rest-api).

## Khắc phục sự cố

### Bắt đầu tất cả báo thiết bị thất bại

Mở thông báo nổi hoặc nhật ký thao tác. "device X has no macro assigned" nghĩa là thẻ chưa chọn **Macro**. Thiết bị local không kết nối được thất bại với lỗi adb; làm theo [Khắc phục sự cố ADB](/docs/adb-troubleshooting). Các thiết bị đã bắt đầu vẫn tiếp tục chạy.

### Thiết bị cloud không vào được nhóm

Nhóm là nhóm local. Tạo nhóm với **Loại** đặt là **Cloud** và thêm thiết bị vào đó. Cùng quy tắc ngăn giả lập vào nhóm cloud.

### Hai instance hiển thị cùng cổng

Mỗi cổng thuộc về một thiết bị. Nếu hai cửa sổ giả lập báo cùng cổng, một trong hai đang tắt ADB hoặc chưa khởi động xong. Chờ instance thứ hai khởi động xong, nhấn **Làm mới** trong danh sách cổng, và thêm nó với cổng riêng.
