Virtuelle Android-Geräte von Cuttlefish

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.

Ziele von Cuttlefish

  • Plattform- und App-Entwickler sollen nicht mehr von physischer Hardware abhängig sein, um Codeänderungen zu entwickeln und zu validieren.
  • Das Framework-basierte Verhalten eines echten Geräts soll mit hoher Genauigkeit nachgebildet werden, indem eine enge Abstimmung mit dem Core-Framework beibehalten wird.
  • Alle API-Levels ab 28 werden unterstützt.
  • Ein einheitliches Funktionsniveau über alle API-Levels hinweg soll gewährleistet werden, das dem Verhalten auf physischer Hardware entspricht.
  • Skalierung ermöglichen:

    • Mehrere Geräte können parallel ausgeführt werden.
    • Gleichzeitige Testausführung mit hoher Genauigkeit zu geringeren Kosten.
  • Ein konfigurierbares Gerät mit der Möglichkeit, Dinge wie Formfaktor, RAM und CPUs anzupassen.

Cuttlefish mit anderen Geräten vergleichen

In diesem Abschnitt wird Cuttlefish mit anderen Geräten verglichen.

Cuttlefish und Android Emulator

Es gibt viele Ähnlichkeiten mit dem Android Emulator, aber Cuttlefish bietet volle Genauigkeit 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 benutzerdefinierten oder reinen Android-Betriebssystemquelle erstellt wurde.

Der Android Emulator wurde für den Anwendungsfall der einfachen 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 Ihren benutzerdefinierten Plattform- oder Framework-Code oder Android-Code der neuesten Version repräsentiert, ist Cuttlefish eine ideale virtuelle Option. Cuttlefish ist das kanonische Gerät zur Darstellung des aktuellen Stands der AOSP-Entwicklung.

Cuttlefish und physisches Gerät

Die Hauptunterschiede 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. Abgesehen von hardwarespezifischen Implementierungen sollten Sie ein funktional gleichwertiges Verhalten zwischen Cuttlefish und einem physischen Gerät erwarten.

Wie Cuttlefish helfen kann

Sie können mit Cuttlefish genauso interagieren wie mit jedem anderen Android-Gerät, das Sie zum Debuggen verwenden. Es registriert sich als normales Gerät bei adb und Sie können über Remote-Desktop damit interagieren wie mit einem physischen Gerät. Die Anwendungsfälle sind vielfältig und umfassen App-Tests, Tests benutzerdefinierter System-Builds und mehr.

Da Cuttlefish eine vollständige Framework-Genauigkeit anstrebt, kann es für Funktionstests Ihres Frameworks oder Ihrer Apps verwendet werden, bei denen es keine physischen Hardwareabhängigkeiten gibt, die nicht emuliert werden können.

Wie Cuttlefish heute für Tests verwendet wird

Einige häufige Anwendungen von Cuttlefish für Tests sind:

  • CTS
  • Framework-Compliance
  • Tests für Continuous Integration
  • Benutzerdefinierte Test-Suites

Cuttlefish in der Cloud hosten

Cuttlefish unterstützt nativ Google Cloud. Die Unterstützung für andere Cloud-Plattformen ist geplant.

Jetzt starten

Eine Anleitung zum Erstellen einer Cuttlefish-Instanz auf Basis von AOSP finden Sie unter Cuttlefish verwenden.