Cuttlefish ist ein konfigurierbares virtuelles Android-Gerät, das sowohl remote (mit Cloud-Angeboten von Drittanbietern wie Google Cloud Engine) als auch lokal (auf Linux-x86- und ARM64-Computern) ausgeführt werden kann.
Cuttlefish-Zielvorhaben
- Die Plattform und App-Entwickler sind nicht mehr auf physische Hardware angewiesen, um Codeänderungen zu entwickeln und zu validieren.
- Das frameworkbasierte Verhalten eines echten Geräts wird mit dem Fokus auf hohe Genauigkeit nachgebildet, indem eine enge Ausrichtung auf das Kern-Framework beibehalten wird.
- Unterstützung aller API-Levels nach 28.
- Stelle ein einheitliches Funktionsniveau über alle API-Ebenen hinweg bereit, das dem Verhalten auf physischer Hardware entspricht.
Skala aktivieren:
- Mehrere Geräte parallel betreiben
- Gleichzeitige Testausführung mit hoher Genauigkeit zu geringeren Einstiegskosten ermöglichen.
Ein konfigurierbares Gerät mit der Möglichkeit, Formfaktor, RAM, CPUs usw. anzupassen.
Cuttlefish mit anderen Geräten vergleichen
Sepia und Android Emulator
Es gibt viele Ähnlichkeiten mit dem Android-Emulator, aber Cuttlefish garantiert die vollständige Kompatibilität mit dem Android-Framework (unabhängig davon, ob es sich um reines AOSP oder eine benutzerdefinierte Implementierung in Ihrem eigenen Baum handelt). In der Praxis bedeutet das, dass Cuttlefish auf Ihre Interaktionen auf Betriebssystemebene genauso reagieren sollte wie ein physisches Smartphone, das mit derselben angepassten oder reinen Android-Betriebssystemquelle erstellt wurde.
Der Android-Emulator wurde für die einfache App-Entwicklung entwickelt und enthält viele funktionale Hooks, die für die Anwendungsfälle von Android-App-Entwicklern interessant sind. Das kann zu Problemen führen, wenn Sie einen Emulator mit Ihrem benutzerdefinierten Android-Framework erstellen möchten. Wenn Sie ein virtuelles Gerät benötigen, das repräsentativ für Ihren benutzerdefinierten Plattform-/Framework-Code oder die aktuelle Android-Version ist, ist Cuttlefish eine ideale virtuelle Option. Es ist das kanonische Gerät, das den aktuellen Stand der AOSP-Entwicklung repräsentiert.
Cuttlefish und physisches Gerät
Die primären Unterschiede zwischen einem virtuellen Cuttlefish-Gerät und Ihrem physischen Gerät liegen auf der Ebene der Hardware-Abstraktionsschicht (Hardware Abstraction Layer, HAL) sowie in der Software, die mit benutzerdefinierter Hardware interagiert. Mit Ausnahme hardwarespezifischer Implementierungen sollten Sie ein funktional gleichwertiges Verhalten zwischen Cuttlefish und einem physischen Gerät erwarten.
Wie kann Cuttlefish helfen?
Sie können mit Cuttlefish genauso interagieren wie mit jedem anderen Android-Gerät, das Sie zum Debuggen verwenden. Es wird sich über ADB als normales Gerät registrieren und Sie können über Remote-Desktop wie bei einem physischen Gerät damit interagieren. Die Anwendungsfälle sind vielfältig und können App-Tests, Tests benutzerdefinierter System-Builds und mehr umfassen.
Da Cuttlefish eine vollständige Framework-Treue anstrebt, kann es für Funktionstests Ihres Frameworks oder Ihrer Apps verwendet werden, wenn keine physischen Hardwareabhängigkeiten bestehen, die nicht emuliert werden können.
Wie wird Cuttlefish derzeit häufig für Tests verwendet?
Einige häufige Anwendungsfälle von Cuttlefish für Tests:
- CTS
- Framework-Compliance
- Continuous Integration-Tests
- Benutzerdefinierte Test-Suites
Kann ich Cuttlefish in der Cloud hosten?
Ja, Cuttlefish unterstützt Google Cloud nativ. Die Unterstützung für andere Cloud-Plattformen ist geplant.
Erste Schritte
Eine Anleitung zum Erstellen einer Cuttlefish-Instanz auf Grundlage von AOSP finden Sie unter Cuttlefish verwenden.