Cuttlefish es un dispositivo Android virtual configurable que se puede ejecutar de manera remota (mediante ofertas de la nube de terceros, como Google Cloud Engine) y local (en máquinas Linux x86 y ARM64).
Objetivos de Cuttlefish
- Permitir que los desarrolladores de plataformas y apps no dependan de hardware físico para desarrollar y validar cambios de código
- Mantener una alineación estrecha con el framework principal para replicar el comportamiento basado en el framework de un dispositivo real con un enfoque en la alta fidelidad
- Admitir todos los niveles de API posteriores a 28
- Proporcionar un nivel coherente de funcionalidad entre los niveles de API, de manera alineada con el comportamiento en el hardware físico
Cómo habilitar la escala:
- Ofrece la capacidad de ejecutar varios dispositivos de manera simultánea.
- Habilita la ejecución de prueba simultánea con alta fidelidad a un costo de entrada inferior.
Proporciona un dispositivo configurable con la capacidad de ajustar el factor de forma, la RAM, las CPUs, etcétera.
Comparación de Cuttlefish con otros dispositivos
Cuttlefish y Android Emulator
Hay muchas similitudes con Android Emulator, pero Cuttlefish garantiza fidelidad total con el framework de Android (ya sea AOSP puro o una implementación personalizada en tu propio árbol). En una aplicación real, esto quiere decir que debes esperar que Cuttlefish responda a tus interacciones a nivel del SO del mismo modo que una orientación a teléfonos físicos compilada con la misma fuente de SO de Android personalizada o pura.
Android Emulator se compiló para el caso de uso de facilitar el desarrollo de apps y contiene muchas funcionalidades destinadas a casos de uso de los desarrolladores de apps para Android. Esta característica puede presentar desafíos si quieres compilar un emulador con tu marco de trabajo de Android personalizado. Si necesitas un dispositivo virtual que represente el código de tu plataforma o marco de trabajo personalizado, o la punta del árbol de Android, Cuttlefish es una opción virtual ideal. Es el dispositivo canónico que representa el estado actual del desarrollo de AOSP.
Cuttlefish y el dispositivo físico
Las diferencias principales entre un dispositivo virtual Cuttlefish y tu dispositivo físico están en la capa de abstracción de hardware, además de cualquier software que interactúe con un hardware personalizado. Excepto por las implementaciones específicas del hardware, el comportamiento de Cuttlefish y un dispositivo físico es equivalente en cuanto a las funcionalidades.
¿Cómo puede ayudar Cuttlefish?
Puedes interactuar con Cuttlefish del mismo modo que lo harías con cualquier otro dispositivo Android que podrías usar para la depuración. Se registrará como un dispositivo normal a través de adb y puedes interactuar con él como un dispositivo físico mediante un escritorio remoto. Los casos de uso son amplios y pueden abarcar pruebas de apps, pruebas personalizadas de compilaciones del sistema y mucho más.
Debido a que el objetivo de Cuttlefish es lograr la fidelidad completa del framework, se puede utilizar para pruebas funcionales de tu framework o apps en las que no haya dependencias de hardware físicas imposibles de emular.
¿Cómo se utiliza Cuttlefish para las pruebas en la actualidad?
Algunas aplicaciones comunes de Cuttlefish para las pruebas son las siguientes:
- CTS
- Cumplimiento del marco de trabajo
- Prueba de la interacción continua
- Paquetes de pruebas personalizadas
¿Puedo alojar Cuttlefish en la nube?
Sí. De manera nativa, Cuttlefish admite Google Cloud y está prevista la compatibilidad con otras plataformas en la nube.
Comenzar
Para obtener orientación sobre cómo crear una instancia de Cuttlefish basada en AOSP, consulta Cómo usar Cuttlefish.