Dispositivos Android virtuais Cuttlefish

O que é o 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).

Objetivos do Cuttlefish

  • Dar a liberdade ao desenvolvedor de aplicativo e plataforma para não depender de hardware físico no desenvolvimento e validação das 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.
  • Ser compatível com todos os níveis de API mais recentes que o nível 28.
  • Oferecer um nível de funcionalidade consistente em todos os níveis de API, condizente com o comportamento no 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 o formato, a RAM, as 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 na sua própria árvore. Na prática, isso significa que você pode esperar que o Cuttlefish responda a suas interações no SO como um destino de smartphone físico criado com a mesma fonte do SO Android puro ou personalizado.

O Android Emulator foi criado para facilitar o desenvolvimento de aplicativos, e ele contém muitos hooks funcionais para atender os casos de uso do desenvolvedor de aplicativos para Android. Isso poderá causar 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 do 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 por meio de um computador remoto. Os casos de uso são vários e abrangem testes de aplicativos, testes personalizados de compilação de sistemas e muito mais.

Como o Cuttlefish busca a fidelidade total com o framework, ele pode ser usado para testes funcionais do seu framework e/ou aplicativos em que não há 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

Consulte o Guia de primeiros passos para ver orientações sobre como criar uma instância do Cuttlefish com base no AOSP (link em inglês).