Inizia a creare app per ChromeOS

I dispositivi ChromeOS, come i Chromebook, supportano le app per Android e Google Play Store. Questo articolo presuppone che tu disponga di un'app 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 Creare la tua prima app Android.

Aggiorna il file manifest dell'app

Per iniziare, aggiorna il file manifest per tenere conto di alcune importanti differenze hardware e software tra i Chromebook e altri dispositivi con 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 assicurarti che l'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 vari dispositivi hardware sono dotati di set di sensori diversi e i Chromebook potrebbero non avere tutti i sensori presenti nei dispositivi portatili Android, ad esempio 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 fornire dati sulla posizione basati sulle connessioni Wi-Fi. Per ulteriori informazioni sui sensori supportati dalla piattaforma Android, consulta la panoramica dei sensori.

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 di app, sfondi animati e Avvio applicazioni non sono supportate e non possono essere installate sui Chromebook. Per un elenco completo delle funzionalità del software non supportate sui Chromebook, consulta l'articolo sulle funzionalità del software incompatibili.

Aggiorna l'SDK target

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

Verifica i requisiti di rete

I Chromebook eseguono l'intero sistema operativo Android in un container, simile a Docker o LXC. Ciò significa che Android non ha accesso diretto all'interfaccia LAN del sistema. Invece, il traffico IPv4 passa attraverso un livello interno di traduzione degli indirizzi di rete (NAT) e il traffico unicast IPv6 viene instradato attraverso un hop aggiuntivo.

Le connessioni unicast in uscita da un'app Android a Internet funzionano principalmente così come sono. In genere, le connessioni in entrata sono bloccate. I pacchetti multicast o di trasmissione da Android non vengono inoltrati alla LAN tramite il firewall.

Come eccezione alla limitazione multicast, ChromeOS esegue un servizio che inoltra il traffico mDNS tra Android e l'interfaccia LAN, pertanto le API di rilevamento dei servizi di rete standard sono il modo consigliato per rilevare altri dispositivi sul segmento LAN. Dopo aver trovato un dispositivo sulla LAN, un'app 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 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 contenitore Android ha un indirizzo IPv6 pubblico dedicato.

Usa efficacemente l'archiviazione locale e sul cloud

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

Grazie a questa funzionalità, è necessario eseguire il backup dei dati dell'app nel cloud per consentire la sincronizzazione tra i dispositivi. Tuttavia, non dipendere da una connessione a internet per il normale funzionamento dell'app. Puoi salvare il lavoro dell'utente localmente quando il dispositivo è offline e sincronizzarlo con il cloud quando il dispositivo è di nuovo online.

I Chromebook possono anche essere condivisi tra un vasto numero di persone, ad esempio nelle scuole. Poiché lo spazio di archiviazione locale non è illimitato, interi account, insieme al relativo spazio di archiviazione, possono essere rimossi dal dispositivo in qualsiasi momento. In contesti didattici, è consigliabile tenere a mente questo scenario.

Aggiorna le librerie NDK

Se la tua app utilizza le librerie NDK di Android e la versione dell'SDK target è 23 o successive, assicurati che le riassegnazioni del testo vengano rimosse da entrambe le versioni ARM e x86 delle librerie NDK, in quanto non sono compatibili in Android 6.0 (livello API 23) e versioni successive. Lasciando rilocazioni del testo nelle librerie NDK, potresti anche causare errori di compatibilità con i Chromebook, soprattutto se utilizzi un dispositivo che utilizza un'architettura x86.

Sviluppa nuovi scenari di test per la tua app

Per sviluppare scenari di test per la tua app, assicurati innanzitutto di specificare i flag manifest appropriati. In particolare, ti consigliamo 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 di dimensioni o orientamento. Per includere dimensioni e orientamento sui telefoni, specifica invece gli attributi layout defaultHeight, defaultWidth o minHeight.

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

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

Ti consigliamo di controllare l'elenco di casi di test per le app Android su Chrome OS, che puoi utilizzare nel tuo piano di test. Gli scenari di test riguardano scenari comuni per i quali le app Android dovrebbero essere preparate se dovrebbero essere eseguite sui dispositivi ChromeOS.

Modifiche all'orientamento e alla modalità multi-finestra

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 appropriato.

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

Testa il ridimensionamento della finestra premendo il tasto per la modalità a schermo intero (F4), massimizzando e ripristinando. Per testare il ridimensionamento senza costi, abilitalo prima nelle opzioni sviluppatore, poi verifica che l'app venga ridimensionata in modo uniforme senza arresti anomali.

Se il tuo dispositivo ChromeOS lo supporta, passa dalla modalità laptop a quella tablet per verificare se tutto funziona come previsto. Ruota il dispositivo in modalità tablet per verificare i cambiamenti di orientamento, quindi torna alla modalità laptop. Ripeti questo passaggio alcune volte.

Assicurati che la barra superiore non interrompa la tua app disattivando gli elementi UI o l'input tocco basato sulla posizione. Per i dispositivi ChromeOS, assicurati che la tua app non collochi informazioni importanti nell'area della barra di stato.

Se utilizzi la fotocamera o un'altra funzionalità hardware, come la penna, assicurati che funzioni correttamente quando esegui le modifiche a finestre e dispositivi descritte in precedenza.