Cuttlefish là một thiết bị Android ảo có thể định cấu hình, có thể chạy từ xa (bằng cách sử dụng các dịch vụ đám mây của bên thứ ba như Google Cloud Engine) và cục bộ (trên các máy Linux x86 và ARM64).
Mục tiêu của Cuttlefish
- Giải phóng nhà phát triển ứng dụng và nền tảng khỏi việc phụ thuộc vào phần cứng thực để phát triển và xác thực các thay đổi về mã.
- Sao chép hành vi dựa trên khung của một thiết bị thực với trọng tâm là độ trung thực cao bằng cách duy trì sự liên kết chặt chẽ với khung cốt lõi.
- Hỗ trợ tất cả cấp độ API sau 28.
- Cung cấp mức chức năng nhất quán trên các cấp độ API, phù hợp với hành vi trên phần cứng thực.
Bật tỷ lệ kích thước:
- Cung cấp khả năng chạy song song nhiều thiết bị.
- Cho phép thực thi kiểm thử đồng thời với độ trung thực cao với chi phí tham gia thấp hơn.
Cung cấp một thiết bị có thể định cấu hình với khả năng điều chỉnh kiểu dáng, RAM, CPU, v.v.
So sánh Cuttlefish với các thiết bị khác
Cuttlefish và Trình mô phỏng Android
Có nhiều điểm tương đồng với Trình mô phỏng Android, nhưng Cuttlefish đảm bảo độ trung thực tuyệt đối với khung Android (cho dù đây là AOSP thuần tuý hay một cách triển khai tuỳ chỉnh trong cây của riêng bạn). Trong ứng dụng thực tế, điều này có nghĩa là bạn nên dự kiến Cuttlefish sẽ phản hồi các hoạt động tương tác của bạn ở cấp hệ điều hành giống như một mục tiêu điện thoại thực được tạo bằng cùng một nguồn hệ điều hành Android tuỳ chỉnh hoặc thuần tuý.
Trình mô phỏng Android được xây dựng dựa trên trường hợp sử dụng giúp việc phát triển ứng dụng trở nên dễ dàng và có nhiều hook chức năng để thu hút các trường hợp sử dụng của nhà phát triển ứng dụng Android. Điều này có thể gây ra khó khăn nếu bạn muốn tạo một trình mô phỏng bằng khung Android tuỳ chỉnh. Nếu bạn cần một thiết bị ảo đại diện cho mã nền tảng/khung tuỳ chỉnh hoặc Android mới nhất, thì Cuttlefish là một lựa chọn ảo lý tưởng. Đây là thiết bị tiêu chuẩn để biểu thị trạng thái hiện tại của hoạt động phát triển AOSP.
Cuttlefish và thiết bị thực
Sự khác biệt chính giữa thiết bị ảo Cuttlefish và thiết bị thực của bạn là ở cấp độ lớp trừu tượng phần cứng (HAL), cũng như mọi phần mềm tương tác với bất kỳ phần cứng tuỳ chỉnh nào. Ngoại trừ các triển khai dành riêng cho phần cứng, bạn nên dự kiến hành vi tương đương về chức năng giữa Cuttlefish và một thiết bị thực.
Cuttlefish có thể giúp gì?
Bạn có thể tương tác với Cuttlefish giống như cách bạn tương tác với mọi thiết bị Android khác mà bạn có thể dùng để gỡ lỗi. Thiết bị này sẽ tự đăng ký dưới dạng một thiết bị thông thường thông qua adb và bạn có thể tương tác với thiết bị này như một thiết bị thực thông qua máy tính từ xa. Các trường hợp sử dụng rất đa dạng và có thể bao gồm kiểm thử ứng dụng, kiểm thử bản dựng hệ thống tuỳ chỉnh, v.v.
Vì Cuttlefish hướng đến độ trung thực hoàn toàn của khung, nên bạn có thể dùng Cuttlefish để kiểm thử chức năng của khung hoặc ứng dụng mà không có phần phụ thuộc phần cứng thực tế nào không thể mô phỏng.
Ngày nay, Cuttlefish thường được dùng để kiểm thử như thế nào?
Sau đây là một số ứng dụng phổ biến của Cuttlefish để kiểm thử:
- CTS
- Tuân thủ khuôn khổ
- Kiểm thử tích hợp liên tục
- Bộ kiểm thử tuỳ chỉnh
Tôi có thể lưu trữ Cuttlefish trên đám mây không?
Có, Cuttlefish hỗ trợ Google Cloud ngay từ đầu và chúng tôi có kế hoạch hỗ trợ các nền tảng đám mây khác.
Bắt đầu
Để biết hướng dẫn về cách tạo một phiên bản Cuttlefish dựa trên AOSP, hãy xem bài viết Sử dụng Cuttlefish.