Dispositivos Android virtuais Cuttlefish

O Cuttlefish é um dispositivo Android virtual configurável que pode ser executado remotamente (com produtos de nuvem de terceiros, como o Google Cloud Engine) e localmente (em máquinas Linux x86 e ARM64).

Objetivos do Cuttlefish

  • Dar a liberdade a desenvolvedores de apps e plataformas de não depender de hardware físico para desenvolver e validar mudanças no código.
  • Replicar o comportamento baseado em framework de um dispositivo real com foco em alta fidelidade, mantendo um alinhamento próximo com o framework principal.
  • Oferecer suporte a todos os níveis de API mais recentes que o 28.
  • Oferecer um nível de funcionalidade consistente em todos os níveis da API, alinhado com o comportamento do hardware físico.
  • Permitir escalonamento:

    • Oferecer a capacidade de executar vários dispositivos ao mesmo tempo.
    • Permitir a execução simultânea de testes de alta fidelidade com um custo de entrada menor.
  • Oferecer um dispositivo configurável com a capacidade de ajustar formato, RAM, CPUs etc.

Comparação do Cuttlefish com outros dispositivos

Cuttlefish e Android Emulator

Há muitas semelhanças com o Android Emulator, mas o Cuttlefish garante total fidelidade com o framework do Android, seja o AOSP puro ou uma implementação personalizada em sua própria árvore. Na prática, isso significa que o Cuttlefish responderá às suas interações no SO como um destino de smartphone físico criado com a mesma fonte do SO Android pura ou personalizada.

O Android Emulator foi criado para facilitar o desenvolvimento de apps. Ele contém muitos hooks funcionais para atender os casos de uso do desenvolvedor de apps para Android. Isso pode apresentar alguns desafios, se você quiser criar um emulador com um framework personalizado do Android. Se você precisa de um dispositivo virtual que seja representativo do seu código de plataforma/framework personalizado ou Android mais recente, o Cuttlefish é uma opção virtual ideal. Ele é o dispositivo canônico para representar o estado atual do desenvolvimento em AOSP.

Cuttlefish e dispositivo físico

As principais diferenças entre um dispositivo virtual Cuttlefish e um dispositivo físico estão no nível da camada de abstração de hardware (HAL, na sigla em inglês), além de qualquer software que interaja com qualquer hardware personalizado. Exceto para implementações específicas de hardware, você pode esperar um comportamento funcionalmente equivalente entre o Cuttlefish e um dispositivo físico.

Como o Cuttlefish pode ajudar?

É possível interagir com o Cuttlefish da mesma forma que você faria com qualquer outro dispositivo Android que possa ser usado para depuração. Ele será registrado como um dispositivo normal via adb, e você poderá interagir com ele como um dispositivo físico usando um computador remoto. Os casos de uso são vários e abrangem testes de apps, testes personalizados de build de sistema e muito mais.

Como o Cuttlefish busca a fidelidade total com o framework, ele pode ser usado para testes funcionais do seu framework ou apps em que não haja dependências físicas de hardware que sejam impossíveis de emular.

Atualmente, como o Cuttlefish é usado para testes?

Estas são algumas aplicações comuns do Cuttlefish para testes:

  • CTS
  • Conformidade do framework
  • Testes de integração contínua
  • Conjuntos de teste personalizados

Posso hospedar o Cuttlefish na nuvem?

Sim, o Cuttlefish oferece compatibilidade nativa com o Google Cloud, e a compatibilidade com outras plataformas de nuvem está planejada.

Primeiros passos

Para saber como criar uma instância do Cuttlefish com base no AOSP, consulte Usar o Cuttlefish.