Cuttlefish ist ein konfigurierbares virtuelles Android-Gerät, das sowohl aus der Ferne (mit Cloud-Angeboten von Drittanbietern wie der Google Cloud Engine) als auch lokal (auf Linux-x86- und ARM64-Maschinen) ausgeführt werden kann.
Zielvorhaben für Sepia
- Plattform- und App-Entwickler sind nicht mehr auf physische Hardware angewiesen, um Codeänderungen zu entwickeln und zu validieren.
- Achten Sie darauf, dass das frameworkbasierte Verhalten eines echten Geräts mit Schwerpunkt auf High Fidelity nachgebildet wird, indem Sie das Kern-Framework möglichst genau einhalten.
- Unterstützung aller API-Levels nach dem 28. Februar
- Bieten Sie auf allen API-Ebenen eine konsistente Funktionalität, die dem Verhalten auf physischer Hardware entspricht.
Skalierung aktivieren:
- Mehrere Geräte parallel ausführen
- Ermöglicht die gleichzeitige Ausführung von Tests mit hoher Realitätstreue zu geringeren Einstiegskosten.
Bieten Sie ein konfigurierbares Gerät mit der Möglichkeit zur Anpassung von Formfaktor, RAM, CPUs usw.
Cuttlefish mit anderen Geräten vergleichen
Cuttlefish und Android-Emulator
Es gibt viele Ähnlichkeiten mit dem Android-Emulator, aber Cuttlefish bietet volle Übereinstimmung mit dem Android-Framework, unabhängig davon, ob es sich um reines AOSP oder eine benutzerdefinierte Implementierung in Ihrem eigenen Tree handelt. In der Praxis bedeutet das, dass Cuttlefish auf Betriebssystemebene auf Ihre Interaktionen reagieren sollte, genau wie ein physisches Smartphone-Ziel, das mit derselben benutzerdefinierten oder reinen Android-Betriebssystemquelle erstellt wurde.
Der Android-Emulator wurde entwickelt, um die App-Entwicklung zu vereinfachen. Er enthält viele funktionale Funktionen, die den Anwendungsfällen von Android-App-Entwicklern entsprechen. 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 für Ihren benutzerdefinierten Plattform-/Framework-Code oder das Android-Top-of-Tree repräsentativ ist, ist Cuttlefish die ideale virtuelle Option. Es ist das kanonische Gerät, das den aktuellen Stand der AOSP-Entwicklung darstellt.
Cuttlefish und physisches Gerät
Die Hauptunterschiede zwischen einem virtuellen Cuttlefish-Gerät und Ihrem physischen Gerät liegen auf der Ebene der Hardwareabstraktionsschicht (HAL) sowie bei Software, die mit benutzerdefinierter Hardware interagiert. Mit Ausnahme von hardwarespezifischen Implementierungen sollten Sie ein funktional vergleichbares 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 registriert sich über adb als normales Gerät und Sie können über Remote Desktop wie mit einem physischen Gerät damit interagieren. Die Anwendungsfälle sind vielfältig und können App-Tests, Tests für benutzerdefinierte System-Builds und mehr umfassen.
Da Cuttlefish eine vollständige Framework-Fidelität 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 wird Cuttlefish heute häufig für Tests verwendet?
Zu den gängigen Anwendungsfällen von Cuttlefish für Tests gehören:
- CTS
- Einhaltung des Frameworks
- Continuous Integration-Tests
- Benutzerdefinierte Test-Suites
Kann ich Cuttlefish in der Cloud hosten?
Ja, Cuttlefish unterstützt nativ Google Cloud. Die Unterstützung anderer Cloud-Plattformen ist geplant.
Erste Schritte
Eine Anleitung zum Erstellen einer Cuttlefish-Instanz auf Grundlage von AOSP finden Sie unter Cuttlefish verwenden.