Dispositivi Android virtuali Cuttlefish

Cuttlefish è un dispositivo Android virtuale configurabile che può essere eseguito sia in remoto (utilizzando offerte cloud di terze parti come Google Cloud Engine) sia in locale (su macchine Linux x86 e ARM64).

Obiettivi di Cuttlefish

  • Liberare lo sviluppatore di piattaforme e app dalla dipendenza dall'hardware fisico per sviluppare e convalidare le modifiche al codice.
  • Replica il comportamento basato sul framework di un dispositivo reale con un'attenzione alla fedeltà elevata mantenendo un allineamento stretto con il framework principale.
  • Supporta tutti i livelli API successivi al 28.
  • Fornisce un livello di funzionalità coerente tra i livelli API, in linea con il comportamento dell'hardware fisico.
  • Attiva scalabilità:

    • Offre la possibilità di eseguire più dispositivi in parallelo.
    • Consente l'esecuzione simultanea di test con elevata fedeltà a un costo di ingresso inferiore.
  • Fornisce un dispositivo configurabile con la possibilità di regolare il fattore di forma, la RAM, le CPU e così via.

Confrontare Cuttlefish con altri dispositivi

Cuttlefish ed emulatore Android

Esistono molte somiglianze con l'emulatore Android, ma Cuttlefish garantisce la piena fedeltà al framework Android (che si tratti di AOSP puro o di un'implementazione personalizzata nel tuo albero). Nell'applicazione reale, ciò significa che dovresti aspettarti che Cuttlefish risponda alle tue interazioni a livello di sistema operativo proprio come un dispositivo fisico di destinazione creato con la stessa origine del sistema operativo Android personalizzato o puro.

L'emulatore Android è stato creato per semplificare lo sviluppo di app per Android e contiene molti hook funzionali per soddisfare i casi d'uso dello sviluppatore di app per Android. Questo potrebbe presentare delle difficoltà se vuoi creare un emulatore con il tuo framework Android personalizzato. Se hai bisogno di un dispositivo virtuale che rappresenti il codice della tua piattaforma/framework personalizzato o Android tip-of-tree, Cuttlefish è un'opzione virtuale ideale. È il dispositivo canonico per rappresentare lo stato attuale dello sviluppo di AOSP.

Cuttlefish e dispositivo fisico

Le differenze principali tra un dispositivo virtuale Cuttlefish e il tuo dispositivo fisico si trovano a livello di Hardware Abstraction Layer (HAL), nonché in qualsiasi software che interagisce con hardware personalizzato. Ad eccezione delle implementazioni specifiche dell'hardware, dovresti aspettarti un comportamento funzionalmente equivalente tra Cuttlefish e un dispositivo fisico.

In che modo Cuttlefish può essere d'aiuto?

Puoi interagire con Cuttlefish come faresti con qualsiasi altro dispositivo Android che potresti utilizzare per il debug. Si registrerà come un dispositivo normale tramite adb e potrai interagire con esso come con un dispositivo fisico tramite desktop remoto. I casi d'uso sono ampi e possono includere test di app, test di build di sistemi personalizzati e altro ancora.

Poiché Cuttlefish si impegna a garantire la piena fedeltà del framework, può essere utilizzato per i test funzionali del framework o delle app in cui non esistono dipendenze hardware fisiche impossibili da emulare.

In che modo Cuttlefish viene comunemente utilizzato per i test oggi?

Alcune applicazioni comuni di Cuttlefish per i test includono:

  • CTS
  • Conformità del framework
  • Test di integrazione continua
  • Suite di test personalizzate

Posso ospitare Cuttlefish nel cloud?

Sì, Cuttlefish supporta in modo nativo Google Cloud e il supporto per altre piattaforme cloud è previsto.

Inizia

Per indicazioni sulla creazione di un'istanza Cuttlefish basata su AOSP, consulta Utilizzare Cuttlefish.