Creare app per ChromeOS

I dispositivi ChromeOS, come i Chromebook, supportano il Google Play Store e le app Android. Questo documento presuppone che tu disponga di un'app per Android esistente progettata per smartphone o tablet che vuoi ottimizzare per i Chromebook. Per apprendere le nozioni di base sulla creazione di app per Android, consulta Crea la tua prima app per Android.

Aggiorna il file manifest dell'app

Per iniziare, aggiorna il file manifest per tenere conto di alcune differenze chiave tra hardware e software di Chromebook e altri dispositivi che eseguono Android.

A partire dalla versione M53 di ChromeOS, tutte le app per Android che non richiedono esplicitamente la funzionalità android.hardware.touchscreen funzionano anche sui dispositivi ChromeOS che supportano la funzionalità android.hardware.faketouch. Tuttavia, per fare in modo che la tua app funzioni su tutti i Chromebook, aggiorna il file manifest in modo che la funzionalità android.hardware.touchscreen non sia richiesta, come mostrato nell'esempio seguente.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

I diversi dispositivi hardware sono dotati di diversi set di sensori e i Chromebook potrebbero non avere tutti i sensori presenti nei dispositivi mobili Android, come GPS e accelerometri. Tuttavia, in alcuni casi la funzionalità di un sensore viene fornita in un altro modo. Ad esempio, i Chromebook potrebbero non avere sensori GPS, ma forniscono dati sulla posizione in base alle connessioni Wi-Fi. Consulta la panoramica dei sensori per scoprire di più sui sensori supportati dalla piattaforma Android.

Se vuoi che la tua app venga eseguita sui Chromebook indipendentemente dalla disponibilità dei sensori, aggiorna il file manifest in modo che non siano necessari sensori.

Alcune funzionalità software non sono supportate sui Chromebook. Ad esempio, le app che forniscono IME personalizzati, widget delle app, sfondi animati e avvii app non sono supportate e non possono essere installate su Chromebook. Per un elenco completo delle funzionalità software non supportate sui Chromebook, consulta Funzionalità software incompatibili.

Aggiorna l'SDK target

Aggiorna l'attributo targetSdkVersion della tua app all'ultimo livello API disponibile per sfruttare tutti i miglioramenti della piattaforma Android. Esamina i miglioramenti apportati alla piattaforma Android nelle diverse versioni.

Verificare i requisiti di networking

I Chromebook eseguono l'intero sistema operativo Android in un contenitore, in modo simile a Docker o LXC. Ciò significa che Android non ha accesso diretto all'interfaccia LAN del sistema. Il traffico IPv4 passa invece attraverso un livello interno di Network Address Translation (NAT) e il traffico unicast IPv6 viene instradato attraverso un hop aggiuntivo.

Le connessioni unicast in uscita da un'app per Android a internet funzionano per lo più così come sono. In generale, le connessioni in entrata sono bloccate. I pacchetti multicast o broadcast da Android non vengono inoltrati alla LAN tramite il firewall.

In deroga alla limitazione del multicast, ChromeOS esegue un servizio che inoltra il traffico mDNS tra Android e l'interfaccia LAN, pertanto le API standard di individuazione dei servizi di rete sono il modo consigliato per rilevare altri dispositivi nel segmento LAN. Dopo aver trovato un dispositivo sulla LAN, un'app per Android può utilizzare socket unicast TCP o UDP standard per comunicare con il dispositivo.

Le connessioni IPv4 provenienti da Android utilizzano l'indirizzo IPv4 dell'host ChromeOS. Internamente, l'app per Android vede un indirizzo IPv4 privato assegnato all'interfaccia di rete. Le connessioni IPv6 provenienti da Android utilizzano un indirizzo diverso dall'host ChromeOS, perché il container Android ha un indirizzo IPv6 pubblico dedicato.

Utilizzare in modo efficace l'archiviazione sul cloud e quella locale

I Chromebook consentono agli utenti di eseguire facilmente la migrazione da un dispositivo all'altro. Se un utente smette di usare un Chromebook e inizia a usarne un altro, deve solo accedere e tutte le sue app vengono visualizzate.

Grazie a questa funzionalità, esegui il backup dei dati dell'app sul cloud per abilitare la sincronizzazione su più dispositivi. Tuttavia, non fare affidamento su una connessione a internet per il normale funzionamento dell'app. Salva invece il lavoro dell'utente localmente quando il dispositivo è offline e sincronizzalo con il cloud quando il dispositivo torna online.

I Chromebook possono essere condivisi anche da un numero elevato di persone, ad esempio nelle scuole. Poiché lo spazio di archiviazione locale non è infinito, interi account, insieme al loro spazio di archiviazione, possono essere rimossi dal dispositivo in qualsiasi momento. Per le impostazioni didattiche, è consigliabile tenere presente questo scenario.

Sviluppare nuovi scenari di test per la tua app

Per sviluppare scenari di test per la tua app, assicurati innanzitutto di specificare i flag manifest corretti. In particolare, valuta la possibilità di impostare screenOrientation su unspecified. Se vuoi specificare un orientamento orizzontale, valuta la possibilità di utilizzare sensorLandscape per assicurarti che l'esperienza su un tablet sia ottimale.

Se hai esigenze particolari di dimensioni o orientamento per gli ambienti desktop, valuta la possibilità di aggiungere meta tag come suggerimenti per le dimensioni o l'orientamento. Per includere le dimensioni e l'orientamento sugli smartphone, specifica gli attributi defaultHeight, defaultWidth o minHeight.

Se ti interessa la gestione di dispositivi di input specifici per categorie di dispositivi specifiche, specifica android.hardware.type.pc per disattivare la modalità di compatibilità dell'input.

Se utilizzi qualsiasi tipo di rete, assicurati che l'app possa riconnettersi alla rete dopo la risoluzione di un problema di connessione o il riattivazione del dispositivo dalla modalità sospensione.

Ti consigliamo di consultare l'elenco di scenari di test per le app Android su Chrome OS, che puoi utilizzare nel tuo piano di test. Gli scenari di test coprono scenari comuni che le app per Android devono prepararsi ad affrontare se devono essere eseguite su dispositivi ChromeOS.

Modifiche alla modalità multi-finestra e all'orientamento

L'ambiente multi-finestra di ChromeOS può rendere più evidenti i problemi di persistenza e richiamo dello stato. Utilizza ViewModel per salvare e ripristinare lo stato quando opportuno.

Per testare la persistenza dello stato, riduci a icona l'app per un po' di tempo, avvia un altro processo che richiede molte risorse e ripristina l'app per verificare che torni allo stato in cui l'avevi lasciata.

Prova a ridimensionare la finestra premendo il tasto per la modalità a schermo intero (F4), ingrandendola e ripristinandola. Per testare il ridimensionamento senza costi, prima attivalo nelle opzioni sviluppatore, poi verifica che la tua app venga ridimensionata senza problemi e senza arrestarsi in modo anomalo.

Se il tuo dispositivo ChromeOS lo supporta, passa dalla modalità laptop a quella tablet per verificare se tutto funziona come previsto. Ruota il dispositivo una volta in modalità tablet per testare le modifiche all'orientamento, quindi torna alla modalità laptop. Ripeti questo passaggio alcune volte.

Assicurati che la barra superiore non interrompa il funzionamento dell'app spostando gli elementi dell'interfaccia utente o l'input tocco basato sulla posizione. Per i dispositivi ChromeOS, assicurati che l'app non inserisca informazioni importanti nell'area della barra di stato.

Se utilizzi la fotocamera o un'altra funzionalità hardware, come la penna, assicurati che si comporti correttamente quando esegui le modifiche alla finestra e al dispositivo descritte in precedenza.