Để kiểm thử các ứng dụng liên quan đến hoạt động tương tác trên nhiều thiết bị, bạn có thể kết nối nhiều thực thể Trình mô phỏng Android để chúng có thể giao tiếp với nhau. Phương thức thiết lập kết nối phụ thuộc vào phiên bản trình mô phỏng mà bạn đang sử dụng.
Trình mô phỏng Android phiên bản 36.5 trở lên
Trình mô phỏng Android phiên bản 36.5 trở lên cung cấp một mô hình kết nối mạng đơn giản, kết nối các phiên bản qua mạng Wi-Fi dùng chung.
Với ngăn xếp mạng này, nhiều trình mô phỏng sẽ xuất hiện dưới dạng các thiết bị riêng biệt trên cùng một mạng Wi-Fi ảo. Điều này cho phép các thiết bị tự động phát hiện và giao tiếp với nhau bằng cách sử dụng các giao thức tiêu chuẩn dựa trên Wi-Fi.
Các trình mô phỏng có thể tìm thấy nhau trên mạng ảo bằng các công nghệ như Khám phá dịch vụ mạng (NSD) và Wi-Fi Direct.
Vì các trình mô phỏng nằm trên cùng một mạng Wi-Fi, nên bạn cũng có thể tìm thấy địa chỉ IP cụ thể của một trình mô phỏng và kết nối trực tiếp với trình mô phỏng đó từ một phiên bản trình mô phỏng khác. Để lấy địa chỉ IP của giao diện Wi-Fi ảo (wlan0), hãy chạy lệnh sau trên máy chủ:
adb shell ip addr show wlan0
Trình mô phỏng Android trước phiên bản 36.5
Nếu đang dùng một phiên bản cũ của Trình mô phỏng Android, thì theo mặc định, bạn không thể giao tiếp trực tiếp giữa các phiên bản. Mỗi phiên bản trình mô phỏng hoạt động sau bộ định tuyến ảo riêng, tách biệt với mạng cục bộ và các trình mô phỏng khác.
Để cho phép giao tiếp, bạn phải thiết lập lệnh chuyển hướng mạng theo cách thủ công. Quá trình này bao gồm việc tạo một mối liên kết chuyển tiếp lưu lượng truy cập từ một cổng cụ thể trên máy chủ lưu trữ đến một cổng trên thiết bị được mô phỏng, bỏ qua bộ định tuyến ảo.
Bạn có thể định cấu hình lệnh chuyển hướng mạng theo hai cách:
- Các lệnh trong bảng điều khiển của trình mô phỏng: Sử dụng bảng điều khiển tích hợp để thiết lập các ánh xạ cổng cho phiên bản trình mô phỏng đang chạy.
- Cầu gỡ lỗi Android (adb): Sử dụng các lệnh adb để định cấu hình các quy tắc chuyển tiếp cổng cần thiết.
Thiết lập lệnh chuyển hướng thông qua bảng điều khiển của trình mô phỏng
Mỗi thực thể trình mô phỏng cung cấp một bảng điều khiển mà bạn có thể kết nối để đưa ra lệnh dành riêng cho thực thể đó. Hãy dùng lệnh trong bảng điều khiển redir để thiết lập lệnh chuyển hướng, nếu cần, cho một thực thể trình mô phỏng.
Đầu tiên, xác định số cổng của bảng điều khiển cho thực thể trình mô phỏng đích. Ví dụ: số cổng của bảng điều khiển của phiên bản trình mô phỏng đầu tiên được chạy là 5554. Tiếp theo, kết nối với bảng điều khiển của thực thể trình mô phỏng đích, chỉ định số cổng cho bảng điều khiển của thực thể đó như sau:
telnet localhost 5554
Sau khi kết nối, bạn phải xác thực trước khi có thể thiết lập lệnh chuyển hướng. Xem phần Bắt đầu và dừng phiên điều khiển để biết thông tin chi tiết về cách thực hiện. Sau khi xác thực, hãy dùng lệnh redir để thao tác với lệnh chuyển hướng.
Để thêm lệnh chuyển hướng, hãy dùng lệnh sau:
redir add <protocol>:<host-port>:<guest-port>
Trong đó <protocol> là tcp hoặc udp, còn <host-port> và <guest-
port> sẽ thiết lập mối liên kết giữa máy của bạn và hệ thống được mô phỏng.
Ví dụ: lệnh sau đây thiết lập lệnh chuyển hướng xử lý tất cả các kết nối TCP đến máy chủ lưu trữ (máy phát triển) có địa chỉ 127.0.0.1:5000 và sẽ chuyển các kết nối này tới hệ thống được mô phỏng có địa chỉ 10.0.2.15:6000:
redir add tcp:5000:6000
Để xoá lệnh chuyển hướng, hãy dùng lệnh redir del. Để liệt kê tất cả các lệnh chuyển hướng cho một thực thể cụ thể, hãy dùng redir list. Để biết thêm thông tin về các lệnh này và các lệnh khác trong bảng điều khiển, hãy xem phần Gửi lệnh trong bảng điều khiển của Trình mô phỏng.
Số cổng bị hạn chế theo môi trường địa phương. Điều này thường có nghĩa là bạn không thể dùng các số cổng máy chủ dưới 1024 nếu không có đặc quyền của quản trị viên. Ngoài ra, bạn sẽ không thể thiết lập lệnh chuyển hướng cho một cổng máy chủ mà một quy trình khác đang sử dụng trên máy. Trong trường hợp đó, redir sẽ tạo một thông báo lỗi có ý nghĩa đó.
Thiết lập lệnh chuyển hướng thông qua adb
Công cụ Cầu gỡ lỗi Android (adb) cung cấp tính năng chuyển tiếp cổng, một cách thay thế để bạn thiết lập lệnh chuyển hướng mạng. Để biết thêm thông tin, hãy xem phần Thiết lập tính năng chuyển tiếp cổng trong tài liệu adb.
adb hiện không cung cấp cách xoá lệnh chuyển hướng, ngoại trừ bằng cách dừng máy chủ adb.
Các thực thể trình mô phỏng nối kết với nhau
Để cho phép một thực thể trình mô phỏng giao tiếp với một thực thể trình mô phỏng khác, hãy thiết lập lệnh chuyển hướng mạng như mô tả trong các bước sau.
Giả sử môi trường của bạn như sau:
- A là máy phát triển.
- B là thực thể thứ nhất của trình mô phỏng, chạy trên A.
- C là thực thể thứ hai của trình mô phỏng, cũng chạy trên A.
Nếu bạn muốn chạy một máy chủ trên B mà C sẽ kết nối, hãy thiết lập như sau:
- Thiết lập máy chủ trên B, đang theo dõi
10.0.2.15:<serverPort>. - Trên bảng điều khiển B, thiết lập lệnh chuyển hướng từ A:
localhost:<localPort>đến B:10.0.2.15:<serverPort>. - Trên C, hãy kết nối ứng dụng với
10.0.2.2:<localPort>.
Ví dụ: nếu bạn muốn chạy một máy chủ HTTP, hãy chọn <serverPort> làm 80 và <localPort> làm 8080:
- B theo dõi
10.0.2.15:80. - Trên bảng điều khiển B, hãy phát hành
redir add tcp:8080:80. - C kết nối với
10.0.2.2:8080.