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

  • Libera lo sviluppatore della piattaforma e dell'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 focus sull'alta fedeltà mantenendo uno stretto allineamento con il framework principale.
  • Supporta tutti i livelli API successivi al 28.
  • Fornisci un livello di funzionalità coerente tra i livelli API, in linea con il comportamento dell'hardware fisico.
  • Attiva scalabilità:

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

Confrontare Cuttlefish con altri dispositivi

Cuttlefish e Android Emulator

Presenta 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 devi aspettarti che Cuttlefish risponda alle tue interazioni a livello di sistema operativo proprio come un target di smartphone fisico creato con la stessa origine del sistema operativo Android personalizzato o puro.

L'emulatore Android è stato creato per semplificare lo sviluppo di app e contiene molti hook funzionali per soddisfare i casi d'uso degli sviluppatori di app per Android. Ciò 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 dell'Hardware Abstraction Layer (HAL), nonché in qualsiasi software che interagisce con hardware personalizzato. A eccezione delle implementazioni specifiche dell'hardware, dovresti aspettarti un comportamento funzionalmente equivalente tra Cuttlefish e un dispositivo fisico.

In che modo Cuttlefish può aiutarti?

Puoi interagire con Cuttlefish come faresti con qualsiasi altro dispositivo Android che potresti utilizzare per il debug. Si registrerà come un normale dispositivo tramite adb e potrai interagire con lui come con un dispositivo fisico tramite Remote Desktop. I casi d'uso sono ampi e possono spaziare dai test delle app, ai test di build del sistema personalizzato e altro ancora.

Poiché Cuttlefish mira alla massima fedeltà del framework, può essere utilizzato per test funzionali del framework o delle app in cui non sono presenti dipendenze hardware fisiche impossibili da emulare.

Come viene utilizzato comunemente Cuttlefish per i test oggi?

Alcune applicazioni comuni di Cuttlefish per i test includono:

  • CTS
  • Conformità al 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 di altre piattaforme cloud è previsto.

Inizia

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