Cuttlefish คืออุปกรณ์เสมือนที่กำหนดค่าได้ซึ่งทำงานด้วยระบบ Android และสามารถเรียกใช้ได้ทั้งจากระยะไกล (โดยใช้ข้อเสนอของระบบคลาวด์ของบุคคลที่สาม เช่น Google Cloud Engine) และในเครื่อง (บนเครื่อง Linux x86 และ ARM64)
เป้าหมายของ Cuttlefish
- ช่วยให้นักพัฒนาแพลตฟอร์มและนักพัฒนาแอปไม่ต้องพึ่งพาฮาร์ดแวร์จริงในการพัฒนาและตรวจสอบการเปลี่ยนแปลงโค้ด
- จำลองลักษณะการทำงานตามเฟรมเวิร์กของอุปกรณ์จริงโดยเน้นที่ ความเที่ยงตรงสูงด้วยการรักษาการจัดแนวอย่างใกล้ชิดกับเฟรมเวิร์กหลัก
- รองรับ API ระดับทั้งหมดหลังจาก 28
- ให้ฟังก์ชันการทำงานในระดับที่สอดคล้องกันในระดับ API ต่างๆ โดยสอดคล้อง กับลักษณะการทำงานบนฮาร์ดแวร์จริง
เปิดใช้การปรับขนาด
- ให้ความสามารถในการเรียกใช้อุปกรณ์หลายเครื่องแบบคู่ขนาน
- เปิดใช้การดำเนินการทดสอบพร้อมกันที่มีความเที่ยงตรงสูงโดยมีต้นทุนเริ่มต้นที่ต่ำกว่า
จัดหาอุปกรณ์ที่กำหนดค่าได้ซึ่งมีความสามารถในการปรับสิ่งต่างๆ เช่น รูปแบบ ของอุปกรณ์, RAM และ CPU
เปรียบเทียบ Cuttlefish กับอุปกรณ์อื่นๆ
ส่วนนี้จะเปรียบเทียบ Cuttlefish กับอุปกรณ์อื่นๆ
Cuttlefish และโปรแกรมจำลองของ Android
โปรแกรมจำลองของ Android มีความคล้ายคลึงกับ Cuttlefish หลายอย่าง แต่ Cuttlefish มีความเที่ยงตรงอย่างเต็มที่กับ Android Framework (ไม่ว่าจะเป็น AOSP โดยสมบูรณ์หรือการติดตั้งใช้งานที่กำหนดเองในโครงสร้างของคุณเอง) ในการใช้งานจริง หมายความว่าคุณควรคาดหวังให้ Cuttlefish ตอบสนองต่อการโต้ตอบของคุณ ที่ระดับระบบปฏิบัติการเช่นเดียวกับเป้าหมายโทรศัพท์จริงที่สร้างขึ้นด้วย แหล่งที่มาของระบบปฏิบัติการ Android ที่กำหนดเองหรือแบบเพียวๆ เดียวกัน
โปรแกรมจำลองของ Android สร้างขึ้นโดยอิงตาม Use Case ของการทำให้การพัฒนาแอปเป็นเรื่องง่าย และมี Hook ฟังก์ชันการทำงานมากมายที่ดึงดูด Use Case ของนักพัฒนาแอป Android ซึ่งอาจเป็นอุปสรรคหากคุณต้องการสร้างโปรแกรมจำลองด้วยเฟรมเวิร์ก Android ที่กำหนดเอง หากต้องการอุปกรณ์เสมือนจริงที่แสดงถึงแพลตฟอร์มหรือเฟรมเวิร์กที่กำหนดเอง โค้ดหรือ Android เวอร์ชันล่าสุด Cuttlefish คือตัวเลือกเสมือนที่เหมาะที่สุด Cuttlefish เป็นอุปกรณ์มาตรฐานที่แสดงสถานะปัจจุบันของการพัฒนา AOSP
Cuttlefish และอุปกรณ์จริง
ความแตกต่างหลักระหว่างอุปกรณ์เสมือนจริง Cuttlefish กับอุปกรณ์จริง คือระดับชั้นการจัดการฮาร์ดแวร์โดยตรง (HAL) รวมถึงซอฟต์แวร์ ที่โต้ตอบกับฮาร์ดแวร์ที่กำหนดเอง นอกจากการติดตั้งใช้งานเฉพาะฮาร์ดแวร์แล้ว คุณควรคาดหวังว่าลักษณะการทำงานของ Cuttlefish และอุปกรณ์จริงจะเทียบเท่ากันในเชิงฟังก์ชัน
Cuttlefish ช่วยอะไรได้บ้าง
คุณโต้ตอบกับ Cuttlefish ได้เช่นเดียวกับอุปกรณ์ Android อื่นๆ ที่คุณอาจใช้สำหรับการแก้ไขข้อบกพร่อง โดยจะลงทะเบียนตัวเองเป็นอุปกรณ์ปกติ ด้วย adb และคุณสามารถโต้ตอบกับอุปกรณ์ดังกล่าวได้เหมือนกับอุปกรณ์จริงด้วยเดสก์ท็อประยะไกล Use Case มีความหลากหลายและครอบคลุมการทดสอบแอป การทดสอบการสร้างระบบที่กำหนดเอง และอื่นๆ
เนื่องจาก Cuttlefish มุ่งมั่นที่จะให้เฟรมเวิร์กมีความเที่ยงตรงอย่างเต็มที่ จึงสามารถใช้สำหรับการทดสอบฟังก์ชันการทำงานของเฟรมเวิร์กหรือแอปในกรณีที่ไม่มีการขึ้นอยู่กับฮาร์ดแวร์จริงซึ่งเป็นไปไม่ได้ที่จะจำลอง
ปัจจุบันมีการใช้ Cuttlefish ในการทดสอบอย่างไร
การใช้งาน Cuttlefish ทั่วไปบางอย่างสำหรับการทดสอบมีดังนี้
- CTS
- การปฏิบัติตามเฟรมเวิร์ก
- การทดสอบการรวมอย่างต่อเนื่อง
- ชุดการทดสอบที่กำหนดเอง
โฮสต์ Cuttlefish ในระบบคลาวด์
Cuttlefish รองรับ Google Cloud โดยกำเนิด และมีแผนที่จะรองรับแพลตฟอร์มระบบคลาวด์อื่นๆ
เริ่มต้นใช้งาน
ดูคำแนะนำในการสร้างอินสแตนซ์ Cuttlefish ตาม AOSP ได้ที่หัวข้อใช้ Cuttlefish