In ChromeOS ci impegniamo a migliorare gli strumenti e i framework per sviluppatori che consentono agli sviluppatori di app Android di ottimizzare le proprie app per i Chromebook in modo semplice. In questo modo, dobbiamo cercare costantemente modi per fornire agli sviluppatori set di strumenti efficaci per migliorare l'esperienza di sviluppo per schermi di grandi dimensioni e ChromeOS.
ChromeOS si è evoluto nel corso degli anni man mano che si presentavano nuove sfide. Una di queste sfide è identificare tempestivamente e spesso i problemi critici per gli ingegneri. Le regole di lint sono alla base della qualità, in quanto forniscono agli sviluppatori segnali di avviso per i problemi che si presenteranno se non vengono risolti. Le nostre regole lint aggiornate offrono agli sviluppatori una maggiore visibilità sul funzionamento delle loro app su ChromeOS, mettendo in evidenza problemi, sia software che hardware, che causeranno senza dubbio problemi per le applicazioni Android eseguite su qualsiasi dispositivo ChromeOS.
Per ulteriori informazioni sul contesto dell'esistenza di queste regole di linting e sulla loro importanza, leggi il nostro post del blog.
Dove si trovano queste regole di analisi statica?
Siamo in fase di sviluppo attivo da alcuni mesi. Con la pianificazione delle release di Android Studio, alcune regole lint vengono introdotte con le build Canary di Electric Eel. Alcune di queste regole di lint sono ora disponibili anche nelle versioni Canary di Flamingo. Continueremo a lavorare per includerli nelle versioni stabili di Android Studio nei prossimi mesi.
Un altro aspetto importante da notare è che queste regole saranno attivate per impostazione predefinita nelle versioni più recenti di Android Studio. L'obiettivo è fornire indicazioni più decise su come vogliamo aiutare gli ingegneri a sviluppare per ChromeOS e schermi più grandi in futuro.
Nuove regole lint (aggiornate a Flamingo Canary 3)
Supporto dell'ABI x86/x86_64
La maggior parte dei Chromebook funziona con l'architettura Intel, il che li rende una piattaforma architettonica prevalentemente x86. Per supportare correttamente ChromeOS quando il codice NDK è incluso nel binario, la presenza di x86 migliora le prestazioni perché non è più necessaria la traduzione dalle librerie ARM. Pertanto, è vivamente consigliato al tuo team di sviluppo di aggiungere il supporto dell'architettura x86 o, preferibilmente, x86_64, in quanto migliorerebbe le prestazioni di qualsiasi codice nativo su ChromeOS o su qualsiasi dispositivo Intel.
Rimedio
Se possibile, aggiungi x86 e x86_64 all'interno di abiSplits in build.gradle. Inoltre, assicurati di aggiungere il codice alle cartelle appropriate per supportare queste ABI. Per saperne di più, consulta la documentazione sulle ABI Android e la presentazione sul supporto ABI di ADS.
Nota:assicurati che le librerie di terze parti incluse utilizzate abbiano anche file binari x86 e x86_64.
Limitazione hardware di ChromeOS
La maggior parte dei dispositivi ChromeOS è dotata di un set di esempio più piccolo di sensori hardware e altre funzionalità rispetto a uno smartphone Android. Lo scopo di questa regola è segnalare agli sviluppatori che se utilizzi il flag <uses-feature> con android:required=true, la tua app non sarà disponibile sul Google Play Store su ChromeOS. Un consiglio importante per garantire che la tua app sia accessibile sul maggior numero possibile di dispositivi è assicurarsi che la funzionalità hardware non sia richiesta per impostazione predefinita. In alternativa, puoi aggiungere codice difensivo per verificare la presenza di hardware specifico in fase di runtime. Un esempio potrebbe essere
<uses-feature android:name="android.hardware.camera" android:required="true">
Rimedio
Assicurati che le funzionalità all'interno della tua applicazione siano effettivamente necessarie e, in caso contrario, modifica il parametro android:required in false e aggiungi una programmazione difensiva quando sono richieste chiamate API. Per saperne di più, consulta la documentazione sulle funzionalità dichiarate in modo esplicito.
Attività non ridimensionabili
Per impostazione predefinita, Android Runtime per ChromeOS, che esegue Android R o versioni successive sui Chromebook, avvia un'app per Android nella versione per smartphone o tablet dell'applicazione, in base allo stato dell'interfaccia utente predefinita. Tuttavia, esiste una terza opzione che offre un'esperienza migliore per gli utenti di ChromeOS: la modalità Ridimensionabile. Se attivi questo flag nell'ambito della tua attività, gli utenti che possono utilizzare la tua applicazione in qualsiasi ambiente multi-finestra possono sfruttare il ridimensionamento dell'applicazione alla dimensione appropriata. Queste modifiche consentiranno agli utenti di scalare l'interfaccia utente in base alle loro esigenze. Dopo aver aggiunto queste modifiche al manifest, testa l'applicazione con l'emulatore desktop indicato di seguito.
Rimedio
Aggiungi l'attributo resizableActivity="true" all'attività nel file AndroidManifest.xml. Per saperne di più, consulta la documentazione sulle limitazioni per i grandi schermi.
Modifiche alla configurazione
Un avvertimento importante per gli schermi ridimensionabili è che ogni volta che un utente modifica le dimensioni dell'applicazione, viene chiamato onConfigurationChanged(). Se la tua app esegue un ridisegno completo all'interno di questo metodo, ci saranno implicazioni sulle prestazioni associate. Al momento, stiamo verificando che finish() non venga chiamato all'interno di onConfigurationChanged, in quanto devi gestire savedInstanceState con maggiore granularità anziché forzare un nuovo disegno completo. Continueremo a trovare casi in cui si verificherà un peggioramento delle prestazioni e ad aggiornare di conseguenza questa regola.
Rimedio
Assicurati che finish() non venga chiamato all'interno dell'API onConfigurationChanged() nelle tue attività e nei tuoi fragment. Per saperne di più, consulta la documentazione sulla gestione delle modifiche alla configurazione.
Supporto per tastiera e mouse
Con la crescente adozione di Jetpack Compose, volevamo assicurarci che la creazione con queste librerie includesse anche la funzionalità di supporto di mouse e tastiera in futuro. Nel tempo, continueremo ad aumentare l'usabilità di mouse, tastiera, trackpad e altre interazioni con le periferiche. Per ottenere le esperienze di base, devi aggiornare le dipendenze Gradle alle versioni minime richieste.
Rimedio
Aggiorna androidx.compose.foundation:foundation alla versione 1.2 o successive. Per saperne di più, consulta le note di rilascio della versione di Compose.
Suggerimento:il 90% degli utenti interagisce con le app sui Chromebook utilizzando una tastiera e un mouse. (Fonte: dati interni di Google 2022*)
Feedback
Il team cerca costantemente di migliorare questi strumenti e la documentazione relativa alle ottimizzazioni per schermi di grandi dimensioni. Un passaggio fondamentale di questo processo è fornirci un feedback sull'accuratezza e l'utilità delle regole lint implementate in Android Studio. Per farlo, fornisci un feedback sulla regola. Quando la regola di lint viene visualizzata in Android Studio, fai clic su "Fornisci feedback su questo avviso". Dovresti visualizzare una finestra di dialogo simile a quella riportata di seguito. Più accurate e descrittive sono le informazioni fornite, più rapidamente possiamo apportare le modifiche appropriate.
